auri_z
Newbie level 5
dear all..
i try build led matrix project with colum scan with HEF4017 as colum driver. this project build from
**broken link removed**
i expand my project became 7x72 led matrix..( in this example just 7x24)
i also see tutorial nigel is very nice, and i try combine two of them for my project.
http://www.winpicprog.co.uk/pic_tutorial13.htm
i use nigel tutorial 13.3 because it use string charakter dan solve problem cross boundry memory.
my problem is while use string charakter. without string charakter my project just fine although i just use proteus.
i can fetch string from string table but fetch it from font charakter for 7x5 led matrix (table) problem occur.
the problem is stack overflow. can anyone give me advice where my code wrong.
in sub rutin Load_Char i use hitung as counter data table use for 7x5 ascii chracter. in this sub rutin problem occur.
below is my code..
sorry my english is bad and my code bad too.
i try build led matrix project with colum scan with HEF4017 as colum driver. this project build from
**broken link removed**
i expand my project became 7x72 led matrix..( in this example just 7x24)
i also see tutorial nigel is very nice, and i try combine two of them for my project.
http://www.winpicprog.co.uk/pic_tutorial13.htm
i use nigel tutorial 13.3 because it use string charakter dan solve problem cross boundry memory.
my problem is while use string charakter. without string charakter my project just fine although i just use proteus.
i can fetch string from string table but fetch it from font charakter for 7x5 led matrix (table) problem occur.
the problem is stack overflow. can anyone give me advice where my code wrong.
in sub rutin Load_Char i use hitung as counter data table use for 7x5 ascii chracter. in this sub rutin problem occur.
below is my code..
Code:
#include "p16f877a.inc"
__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _HS_OSC & _WRT_OFF & _LVP_OFF & _CPD_OFF
cacah1 equ 0x20
cacah2 equ 0x40
offsetL1 equ 0x41
offsetH1 equ 0x42
offsetL equ 0x43
offsetH equ 0x44
tmp1 equ 0x45
tmp2 equ 0x46
hitung equ 0x47
start org 0x00
bsf STATUS,RP0
movlw 0x00
movwf PORTD
movwf PORTC
bcf STATUS,RP0
movlw 0x05
movwf hitung ;value for table ascii
goto run1
run1 clrf 23h
clrf 24h
clrf 25h
clrf 26h
clrf 27h
clrf 28h
clrf 29h
clrf 2Ah
clrf 2Bh
clrf 2Ch
clrf 2Dh
clrf 2Eh
clrf 2Fh
clrf 30h
clrf 31h
clrf 32h
clrf 33h
clrf 34h
clrf 35h
clrf 36h
clrf 37h
clrf 38h
clrf 39h
clrf 3Ah
clrf offsetL
clrf offsetH
movlw 0x20
movwf 22h
Message
;movlw 0x20
;movwf 22h
;call shift
;incf 21h,1
;movf 21h,0
call String_Table ;get a character from the string table
;movwf 3Ah
xorlw 0x00 ;is it a zero? - if so end of string
btfsc STATUS, Z
goto run1
movwf tmp2
movlw 0x20 ;subtract to get character index value
subwf tmp2, w
call Load_Char
;call ScrollL8
incf offsetL1, f ;increment 16 bit pointer to string
btfsc STATUS , Z
incf offsetH1, f
goto Message
Load_Char
movwf offsetL
clrf offsetH
bcf STATUS,C
call ASCII_Table
call shift
incf offsetL, f ;increment 16 bit pointer to string
btfsc STATUS , Z
incf offsetH, f
decfsz hitung,1
goto run3
return
run3 decfsz 22h,1
goto run4
goto Message
run4 call scan
goto run3
scan bsf PORTC,1
nop
bcf PORTC,1
movf 23h,0
movwf PORTD
call tunda
movf 24h,0
movwf PORTD
call tunda
movf 25h,0
movwf PORTD
call tunda
movf 26h,0
movwf PORTD
call tunda
movf 27h,0
movwf PORTD
call tunda
movf 28h,0
movwf PORTD
call tunda
movf 29h,0
movwf PORTD
call tunda
movf 2Ah,0
movwf PORTD
call tunda
movf 2Bh,0
movwf PORTD
call tunda
movf 2Ch,0
movwf PORTD
call tunda
movf 2Dh,0
movwf PORTD
call tunda
movf 2Eh,0
movwf PORTD
call tunda
movf 2Fh,0
movwf PORTD
call tunda
movf 30h,0
movwf PORTD
call tunda
movf 31h,0
movwf PORTD
call tunda
movf 32h,0
movwf PORTD
call tunda
movf 33h,0
movwf PORTD
call tunda
movf 34h,0
movwf PORTD
call tunda
movf 35h,0
movwf PORTD
call tunda
movf 36h,0
movwf PORTD
call tunda
movf 37h,0
movwf PORTD
call tunda
movf 38h,0
movwf PORTD
call tunda
movf 39h,0
movwf PORTD
call tunda
movf 3Ah,0
movwf PORTD
call tunda
return
shift movf 24h,0
movwf 23h
movf 25h,0
movwf 24h
movf 26h,0
movwf 25h
movf 27h,0
movwf 26h
movf 28h,0
movwf 27h
movf 29h,0
movwf 28h
movf 2Ah,0
movwf 29h
movf 2Bh,0
movwf 2Ah
movf 2Ch,0
movwf 2Bh
movf 2Dh,0
movwf 2Ch
movf 2Eh,0
movwf 2Dh
movf 2Fh,0
movwf 2Eh
movf 30h,0
movwf 2Fh
movf 31h,0
movwf 30h
movf 32h,0
movwf 31h
movf 33h,0
movwf 32h
movf 34h,0
movwf 33h
movf 35h,0
movwf 34h
movf 36h,0
movwf 35h
movf 37h,0
movwf 36h
movf 38h,0
movwf 37h
movf 39h,0
movwf 38h
movf 3Ah,0
movwf 39h
return
ASCII_Table ;perform read from long table
movlw High(Table)
addwf offsetH, W
movwf PCLATH
movlw Low(Table)
addwf offsetL, w
btfsc STATUS , C
incf PCLATH, f
MOVWF PCL
String_Table ;perform read from long table
movlw High(String)
addwf offsetH1, W
movwf PCLATH
movlw Low(String)
addwf offsetL1, w
btfsc STATUS , C
incf PCLATH, f
MOVWF PCL
tunda
movlw D'100'
movwf cacah1
delay1
decfsz cacah1,1
goto delay1
movlw 0x00
movwf PORTD
clock bsf PORTC,0
nop
bcf PORTC,0
return
Table
dt 0x00, 0x00, 0x00, 0x00, 0x00, ;space
dt 0x00, 0x00, 0xF2, 0x00, 0x00, ;!
dt 0x00, 0xE0, 0x00, 0xE0, 0x00, ;"
dt 0x28, 0xFE, 0x28, 0xFE, 0x28, ;#
dt 0x24, 0x54, 0xFE, 0x54, 0x48, ;$
dt 0xC4, 0xC8, 0x10, 0x26, 0x46, ;%
dt 0x6C, 0x92, 0xAA, 0x44, 0x04, ;&
dt 0x00, 0xA0, 0xC0, 0x00, 0x00, ;'
dt 0x00, 0x38, 0x44, 0x82, 0x00, ;(
dt 0x00, 0x82, 0x44, 0x38, 0x00, ;)
dt 0x28, 0x10, 0x7C, 0x10, 0x28, ; *
dt 0x10, 0x10, 0x7C, 0x10, 0x10, ;+
dt 0x0A, 0x0C, 0x00, 0x00, 0x00, ;,
dt 0x10, 0x10, 0x10, 0x10, 0x10, ;-
dt 0x00, 0x06, 0x06, 0x00, 0x00, ;`
dt 0x04, 0x08, 0x10, 0x20, 0x40, ; /
dt 0x7C, 0x8A, 0x92, 0xA2, 0x7C, ;0
dt 0x00, 0x42, 0xFE, 0x02, 0x00, ;1
dt 0x42, 0x86, 0x8A, 0x92, 0x62, ;2
dt 0x84, 0x82, 0xA2, 0xD2, 0x8C, ;3
dt 0x18, 0x28, 0x48, 0xFE, 0x08, ;4
dt 0xE4, 0xA2, 0xA2, 0xA2, 0x9C, ;5
dt 0x3C, 0x52, 0x92, 0x92, 0x0C, ;6
dt 0x80, 0x8E, 0x90, 0xA0, 0xC0, ;7
dt 0x6C, 0x92, 0x92, 0x92, 0x6C, ;8
dt 0x60, 0x92, 0x92, 0x94, 0x78, ;9
dt 0x00, 0x6C, 0x6C, 0x00, 0x00, ;:
dt 0x00, 0x6A, 0x6C, 0x00, 0x00, ;;
dt 0x10, 0x28, 0x44, 0x82, 0x00, ;<
dt 0x28, 0x28, 0x28, 0x28, 0x28, ;=
dt 0x00, 0x82, 0x44, 0x28, 0x10, ;>
dt 0x40, 0x80, 0x8A, 0x90, 0x60, ;?
dt 0x7C, 0x82, 0xBA, 0xAA, 0x78, ;@
dt 0x3f, 0x48, 0x48, 0x48, 0x3f, ;A
dt 0xFE, 0x92, 0x92, 0x92, 0x6C, ;B
dt 0x7C, 0x82, 0x82, 0x82, 0x44, ;C
dt 0xFE, 0x82, 0x82, 0x44, 0x38, ;D
dt 0xFE, 0x92, 0x92, 0x92, 0x82, ;E
dt 0xFE, 0x90, 0x90, 0x90, 0x80, ;F
dt 0x7C, 0x82, 0x92, 0x92, 0x5E, ;G
dt 0xFE, 0x10, 0x10, 0x10, 0xFE, ;H
dt 0x00, 0x82, 0xFE, 0x82, 0x00, ;I
dt 0x04, 0x02, 0x82, 0xFC, 0x80, ;J
dt 0xFE, 0x10, 0x28, 0x44, 0x82, ;K
dt 0xFE, 0x02, 0x02, 0x02, 0x02, ;L
dt 0xFE, 0x40, 0x30, 0x40, 0xFE, ;M
dt 0xFE, 0x20, 0x10, 0x08, 0xFE, ;N
dt 0x7C, 0x82, 0x82, 0x82, 0x7C, ;O
dt 0xFE, 0x90, 0x90, 0x90, 0x60, ;P
dt 0x7C, 0x82, 0x8A, 0x84, 0x7A, ;Q
dt 0xFE, 0x90, 0x98, 0x94, 0x62, ;R
dt 0x64, 0x92, 0x92, 0x92, 0x4C, ;S
dt 0x80, 0x80, 0xFE, 0x80, 0x80, ;T
dt 0xFC, 0x02, 0x02, 0x02, 0xFC, ;U
dt 0xF8, 0x04, 0x02, 0x04, 0xF8, ;V
dt 0xFC, 0x02, 0x1C, 0x02, 0xFC, ;W
dt 0xC6, 0x28, 0x10, 0x28, 0xC6, ;X
dt 0xE0, 0x10, 0x0E, 0x10, 0xE0, ;Y
dt 0x86, 0x8A, 0x92, 0xA2, 0xC2, ;Z
dt 0x00, 0xFE, 0x82, 0x82, 0x00, ;[
dt 0x40, 0x20, 0x10, 0x08, 0x04, ;\
dt 0x00, 0x82, 0x82, 0xFE, 0x00, ;]
dt 0x20, 0x40, 0x80, 0x40, 0x20, ;^
dt 0x02, 0x02, 0x02, 0x02, 0x02, ;_
dt 0x00, 0x00, 0xC0, 0xA0, 0x00, ;/`
dt 0x04, 0x2A, 0x2A, 0x2A, 0x1E, ;a
dt 0xFE, 0x22, 0x22, 0x22, 0x1C, ;b
dt 0x1C, 0x22, 0x22, 0x22, 0x22, ;c
dt 0x1C, 0x22, 0x22, 0x22, 0xFE, ;d
dt 0x1C, 0x2A, 0x2A, 0x2A, 0x18, ;e
dt 0x20, 0x20, 0x7E, 0xA0, 0xA0, ;f
dt 0x10, 0x2A, 0x2A, 0x2A, 0x3C, ;g
dt 0xFE, 0x10, 0x20, 0x20, 0x1E, ;h
dt 0x00, 0x22, 0xBE, 0x02, 0x00, ;i
dt 0x04, 0x02, 0x22, 0xBC, 0x00, ;j
dt 0xFE, 0x08, 0x14, 0x22, 0x00, ;k
dt 0x00, 0x82, 0xFE, 0x02, 0x00, ;l
dt 0x3E, 0x20, 0x3E, 0x20, 0x1E, ;m
dt 0x3E, 0x10, 0x20, 0x20, 0x1E, ;n
dt 0x1C, 0x22, 0x22, 0x22, 0x1C, ;o
dt 0x3E, 0x28, 0x28, 0x28, 0x10, ;p
dt 0x10, 0x28, 0x28, 0x28, 0x3E, ;q
dt 0x3E, 0x10, 0x20, 0x20, 0x00, ;r
dt 0x12, 0x2A, 0x2A, 0x2A, 0x24, ;s
dt 0x20, 0x20, 0xFC, 0x22, 0x22, ;t
dt 0x3C, 0x02, 0x02, 0x04, 0x3E, ;u
dt 0x38, 0x04, 0x02, 0x04, 0x38, ;v
dt 0x3C, 0x02, 0x0C, 0x02, 0x3C, ;w
dt 0x22, 0x14, 0x08, 0x14, 0x22, ;x
dt 0x30, 0x0A, 0x0A, 0x0A, 0x3C, ;y
dt 0x22, 0x26, 0x2A, 0x32, 0x22, ;z
dt 0x10, 0x6C, 0x82, 0x82, 0x00, ;
dt 0x00, 0x00, 0xEE, 0x00, 0x00, ;|
dt 0x00, 0x82, 0x82, 0x6C, 0x10, ;
dt 0x10, 0x10, 0x54, 0x38, 0x10, ;<
dt 0x10, 0x38, 0x54, 0x10, 0x10 ;~
dt 0xff
String
dt "ARIS",0
end
sorry my english is bad and my code bad too.