Please post the code you have now. That will help sort out the logic.
I suspect the problem is that you need to execute the output code under "Gondor:" frequently enough to refresh the display, and the pause in interfering with the refresh.
Please post the code you have now. That will help sort out the logic.
I suspect the problem is that you need to execute the output code under "Gondor:" frequently enough to refresh the display, and the pause in interfering with the refresh.
I did try to find to place the code(you gave) and test it(by trial and error)...but having no luck. The following is the code I'm working on.
Thanks for taking the time helping...Code:porta=0 : portb=0 : portc=0 : portd=0 trisa=0 : trisb=0 : trisc=0 : trisd=0 porte=0 : trise=0 harf_reg var byte adres_sec var byte yinele var byte sutun_reg var byte[300] veri var byte yazi_reg var byte i VAR BYTE x var byte z var byte y var byte t var byte q var byte Scroll_Position var byte temp_byte var byte temp_bit var bit sure var byte yedek var byte CLEAR : portd=255:sure=500 :GOTO oku: oku: call yazi : yazi_reg=yazi_reg+1 : z=harf_reg for i=1 to z call yazi : yazi_reg=yazi_reg+1 : call data_sec for y=0 to yinele call datalar sutun_reg[t]=veri : t=t+1 adres_sec=adres_sec+1 next y next i t=0 goto gonder gonder: ;--------------------------------------------------- Scroll_Position = Scroll_Position + 1 IF Scroll_Position = 16 THEN ; when this is TRUE it clears the matrix(turned off leds) for 1second pause 1000 Scroll_Position = 0 ELSE ENDIF ;--------------------------------------------------- FOR Q=0 TO 5 for i=0 to 15 portb=sutun_reg[t] : t=t+1 porta=i portc=%11111110:pauseus sure:portc=%11111111 next i for i=0 to 15 portb=sutun_reg[t] : t=t+1 porta=i portc=%11111101:pauseus sure:portc=%11111111 next i for i=0 to 15 portb=sutun_reg[t] : t=t+1 porta=i portc=%11111011:pauseus sure:portc=%11111111 next i for i=0 to 15 portb=sutun_reg[t] : t=t+1 porta=i portc=%11110111:pauseus sure:portc=%11111111 next i for i=0 to 11 portb=sutun_reg[t] : t=t+1 porta=i portc=%11101111:pauseus sure:portc=%11111111 next i t=0 NEXT Q goto kaydir kaydir: yedek=sutun_reg[0] for i=0 to 30 temp_byte = sutun_reg[i] temp_Byte = temp_Byte << 1 temp_Byte.0 = STATUS.0 sutun_reg[i] = temp_byte ;---------------------------------- next i goto gonder yazi: lookup yazi_reg,[12,"HELLO WORLD"],harf_reg return data_sec: select case harf_reg case "A" adres_sec=0 : yinele=5 : return case "B" adres_sec=6 : yinele=5 : return case "C" adres_sec=12 : yinele=5 : return case "D" adres_sec=18 : yinele=5 : return case "E" adres_sec=24 : yinele=5 : return case "F" adres_sec=30 : yinele=5 : return case "G" adres_sec=36 : yinele=5 : return case "H" adres_sec=42 : yinele=5 : return case "I" adres_sec=48 : yinele=3 : return case "i" adres_sec=52 : yinele=3 : return case "J" adres_sec=56 : yinele=5 : return case "K" adres_sec=62 : yinele=5 : return case "L" adres_sec=68 : yinele=5 : return case "M" adres_sec=74 : yinele=5 : return case "N" adres_sec=80 : yinele=5 : return case "O" adres_sec=86 : yinele=5 : return case "P" adres_sec=92 : yinele=5 : return case "Q" adres_sec=98 : yinele=5 : return case "R" adres_sec=104 : yinele=5 : return case "S" adres_sec=110 : yinele=5 : return case "T" adres_sec=116 : yinele=5 : return case "U" adres_sec=122 : yinele=5 : return case "ü" adres_sec=128 : yinele=5 : return case "V" adres_sec=134 : yinele=5 : return case "W" adres_sec=140 : yinele=5 : return case "X" adres_sec=146 : yinele=5 : return case "Y" adres_sec=152 : yinele=5 : return case "Z" adres_sec=158 : yinele=5 : return case " " adres_sec=164 : yinele=5 : return case "0" adres_sec=170 : yinele=5 : return case "1" adres_sec=176 : yinele=3 : return case "2" adres_sec=180 : yinele=5 : return case "3" adres_sec=186 : yinele=5 : return case "4" adres_sec=192 : yinele=5 : return case "5" adres_sec=198 : yinele=5 : return case "6" adres_sec=204 : yinele=5 : return case "7" adres_sec=210 : yinele=5 : return case "8" adres_sec=216 : yinele=5 : return case "9" adres_sec=222 : yinele=5 : return end select datalar: lookup adres_sec,[$05, $24, $74, $54, $7C, $78_ ;A ,$7F,$49,$49,$49,$36,0_ ;B ,$3E,$41,$41,$41,$22,0_ ;C ,$7F,$41,$41,$41,$3E,0_ ;D ,$7F,$49,$49,$49,$41,0_ ;E ,$7F,$09,$09,$09,$01,0_ ;F ,$3E,$41,$49,$49,$3A,0_ ;G ,$7F,$08,$08,$08,$7F,0_ ;H ,$41,$7F,$41,0_ ;I ,$44,$7D,$44,0_ ;Ý ,$20,$40,$41,$3F,$01,0_ ;J ,$7F,$08,$14,$22,$41,0_ ;K ,$7F,$40,$40,$40,$40,0_ ;L ,$7F,$02,$04,$02,$7F,0_ ;M ,$7F,$04,$08,$10,$7F,0_ ;N ,$3E,$41,$41,$41,$3E,0_ ;O ,$7F,$09,$09,$09,$06,0_ ;P ,$3E,$41,$51,$61,$3E,0_ ;Q ,$7F,$09,$19,$29,$46,0_ ;R ,$26,$49,$49,$49,$32,0_ ;S ,$01,$01,$7F,$01,$01,0_ ;T ,$3F,$40,$40,$40,$3F,0_ ;U ,$1E,$41,$01,$41,$1E,0_ ;Ü ,$1F,$20,$40,$20,$1F,0_ ;V ,$3F,$40,$30,$40,$3F,0_ ;W ,$63,$14,$08,$14,$63,0_ ;X ,$07,$08,$70,$08,$07,0_ ;Y ,$61,$51,$49,$45,$43,0_ ;Z ,$00,$00,$00,$00,$00,0_ ;Space ,$3E,$51,$49,$45,$3E,0_ ;0 ,$42,$7F,$40,0_ ;1 ,$62,$51,$49,$45,$42,0_ ;2 ,$22,$49,$49,$49,$36,0_ ;3 ,$18,$14,$12,$7F,$10,0_ ;4 ,$2F,$49,$49,$49,$31,0_ ;5 ,$3E,$49,$49,$49,$32,0_ ;6 ,$61,$11,$09,$05,$03,0_ ;7 ,$36,$49,$49,$49,$36,0_ ;8 ,$26,$49,$49,$49,$3E,0],veri ;9 return
regards,
tacbanon
I can't test it out here, but I suspect that the problem with the longer pause is that the matrix wasn't being refreshed. So I modified a couple of things to control the flow of the program a little.
I made a "Main_Loop" inside of which "gonder" is called as a GOSUB and the scrolling is controlled with a GOSUB to "kaydir". So both of those sections of code now terminate in a RETURN.
This allows for the modified pause control. As you can see, the longer pause is multiple short pauses with a call to "gonder" in between to keep the display refreshed.
Hope this helps.
Code:porta=0 : portb=0 : portc=0 : portd=0 trisa=0 : trisb=0 : trisc=0 : trisd=0 porte=0 : trise=0 harf_reg VAR BYTE adres_sec VAR BYTE yinele VAR BYTE sutun_reg VAR BYTE[300] veri VAR BYTE yazi_reg VAR BYTE i VAR BYTE x VAR BYTE z VAR BYTE y VAR BYTE t VAR BYTE q VAR BYTE Scroll_Position VAR BYTE Pause_Cnt VAR BYTE temp_byte VAR byte temp_bit VAR bit sure VAR BYTE yedek VAR BYTE CLEAR portd=255 : sure=500 oku: CALL yazi : yazi_reg=yazi_reg+1 : z=harf_reg FOR i=1 TO z CALL yazi : yazi_reg=yazi_reg+1 : CALL data_sec FOR y=0 TO yinele CALL datalar sutun_reg[t]=veri : t=t+1 adres_sec=adres_sec+1 NEXT y NEXT i t=0 Main_Loop: GOSUB gonder Scroll_Position = Scroll_Position + 1 IF Scroll_Position = 16 THEN For Pause_Cnt = 1 to 10 '<-- Change to control duration of pause after scroll, 10 = 1 sec, 20 = 2 sec, ... Pause 100 GOSUB gonder Next Pause_Cnt Scroll_Position = 0 ELSE GOSUB Kaydir PAUSE 100 ENDIF GOTO Main_Loop '------------------------------------------------------------------------------- yazi: LOOKUP yazi_reg,[12,"HELLO WORLD"],harf_reg RETURN '------------------------------------------------------------------------------- gonder: FOR Q=0 TO 5 FOR i=0 TO 15 portb=sutun_reg[t] : t=t+1 porta=i portc=%11111110:PAUSEUS sure:portc=%11111111 NEXT i FOR i=0 TO 15 portb=sutun_reg[t] : t=t+1 porta=i portc=%11111101:PAUSEUS sure:portc=%11111111 NEXT i FOR i=0 TO 15 portb=sutun_reg[t] : t=t+1 porta=i portc=%11111011:PAUSEUS sure:portc=%11111111 NEXT i FOR i=0 TO 15 portb=sutun_reg[t] : t=t+1 porta=i portc=%11110111:PAUSEUS sure:portc=%11111111 NEXT i FOR i=0 TO 11 portb=sutun_reg[t] : t=t+1 porta=i portc=%11101111:PAUSEUS sure:portc=%11111111 NEXT i t=0 NEXT Q Return '------------------------------------------------------------------------------- kaydir: yedek=sutun_reg[0] FOR i=0 TO 30 temp_byte = sutun_reg[i] temp_Byte = temp_Byte << 1 temp_Byte.0 = STATUS.0 sutun_reg[i] = temp_byte NEXT i RETURN '------------------------------------------------------------------------------- data_sec: SELECT CASE harf_reg CASE "A" adres_sec=0 : yinele=5 : RETURN CASE "B" adres_sec=6 : yinele=5 : RETURN CASE "C" adres_sec=12 : yinele=5 : RETURN CASE "D" adres_sec=18 : yinele=5 : RETURN CASE "E" adres_sec=24 : yinele=5 : RETURN CASE "F" adres_sec=30 : yinele=5 : RETURN CASE "G" adres_sec=36 : yinele=5 : RETURN CASE "H" adres_sec=42 : yinele=5 : RETURN CASE "I" adres_sec=48 : yinele=3 : RETURN CASE "i" adres_sec=52 : yinele=3 : RETURN CASE "J" adres_sec=56 : yinele=5 : RETURN CASE "K" adres_sec=62 : yinele=5 : RETURN CASE "L" adres_sec=68 : yinele=5 : RETURN CASE "M" adres_sec=74 : yinele=5 : RETURN CASE "N" adres_sec=80 : yinele=5 : RETURN CASE "O" adres_sec=86 : yinele=5 : RETURN CASE "P" adres_sec=92 : yinele=5 : RETURN CASE "Q" adres_sec=98 : yinele=5 : RETURN CASE "R" adres_sec=104 : yinele=5 : RETURN CASE "S" adres_sec=110 : yinele=5 : RETURN CASE "T" adres_sec=116 : yinele=5 : RETURN CASE "U" adres_sec=122 : yinele=5 : RETURN CASE " " adres_sec=128 : yinele=5 : RETURN CASE "V" adres_sec=134 : yinele=5 : RETURN CASE "W" adres_sec=140 : yinele=5 : RETURN CASE "X" adres_sec=146 : yinele=5 : RETURN CASE "Y" adres_sec=152 : yinele=5 : RETURN CASE "Z" adres_sec=158 : yinele=5 : RETURN CASE " " adres_sec=164 : yinele=5 : RETURN CASE "0" adres_sec=170 : yinele=5 : RETURN CASE "1" adres_sec=176 : yinele=3 : RETURN CASE "2" adres_sec=180 : yinele=5 : RETURN CASE "3" adres_sec=186 : yinele=5 : RETURN CASE "4" adres_sec=192 : yinele=5 : RETURN CASE "5" adres_sec=198 : yinele=5 : RETURN CASE "6" adres_sec=204 : yinele=5 : RETURN CASE "7" adres_sec=210 : yinele=5 : RETURN CASE "8" adres_sec=216 : yinele=5 : RETURN CASE "9" adres_sec=222 : yinele=5 : RETURN END SELECT '------------------------------------------------------------------------------- datalar: LOOKUP adres_sec,[$05, $24, $74, $54, $7C, $78_ ;A ,$7F,$49,$49,$49,$36,0_ ;B ,$3E,$41,$41,$41,$22,0_ ;C ,$7F,$41,$41,$41,$3E,0_ ;D ,$7F,$49,$49,$49,$41,0_ ;E ,$7F,$09,$09,$09,$01,0_ ;F ,$3E,$41,$49,$49,$3A,0_ ;G ,$7F,$08,$08,$08,$7F,0_ ;H ,$41,$7F,$41,0_ ;I ,$44,$7D,$44,0_ ; ,$20,$40,$41,$3F,$01,0_ ;J ,$7F,$08,$14,$22,$41,0_ ;K ,$7F,$40,$40,$40,$40,0_ ;L ,$7F,$02,$04,$02,$7F,0_ ;M ,$7F,$04,$08,$10,$7F,0_ ;N ,$3E,$41,$41,$41,$3E,0_ ;O ,$7F,$09,$09,$09,$06,0_ ;P ,$3E,$41,$51,$61,$3E,0_ ;Q ,$7F,$09,$19,$29,$46,0_ ;R ,$26,$49,$49,$49,$32,0_ ;S ,$01,$01,$7F,$01,$01,0_ ;T ,$3F,$40,$40,$40,$3F,0_ ;U ,$1E,$41,$01,$41,$1E,0_ ; ,$1F,$20,$40,$20,$1F,0_ ;V ,$3F,$40,$30,$40,$3F,0_ ;W ,$63,$14,$08,$14,$63,0_ ;X ,$07,$08,$70,$08,$07,0_ ;Y ,$61,$51,$49,$45,$43,0_ ;Z ,$00,$00,$00,$00,$00,0_ ;Space ,$3E,$51,$49,$45,$3E,0_ ;0 ,$42,$7F,$40,0_ ;1 ,$62,$51,$49,$45,$42,0_ ;2 ,$22,$49,$49,$49,$36,0_ ;3 ,$18,$14,$12,$7F,$10,0_ ;4 ,$2F,$49,$49,$49,$31,0_ ;5 ,$3E,$49,$49,$49,$32,0_ ;6 ,$61,$11,$09,$05,$03,0_ ;7 ,$36,$49,$49,$49,$36,0_ ;8 ,$26,$49,$49,$49,$3E,0],veri ;9 RETURN
Hello SteveB,
Your'e awesome...works great as you expected.
I will build to extend the length of led matrix display and post here the results.
Regards,
tacbanon
Glad it worked!![]()
Bookmarks