DSM-51
Kod możesz przejrzeć, jest zamieszczony na stronie (tu jest LINK).
Ostatnio zmieniony 11 maja 2012, 5:40 przez mr_x, łącznie zmieniany 1 raz.
Kod: Zaznacz cały
ZNAKB EQU 01111111B
ZNAKO EQU 00111111B
ZNAKL EQU 00111000B
ZERO EQU 00000000B
SEG_ON EQU P1.6
DISPLAY EQU 30H
DISPLAY1 EQU 00100000B
DISPLAY2 EQU 00010000B
DISPLAY3 EQU 00001000B
DISPLAY4 EQU 00000100B
DISPLAY5 EQU 00000010B
DISPLAY6 EQU 00000001B
LJMP START
ORG 100H
START:
MOV R3, #255
MOV R4, #30
MOV R5, #30
MOV R6, #30
LOOP:
MOV R0, #CSDS
MOV R1, #CSDB
MOV A, #DISPLAY1
MOVX @R0, A
MOV A, #ZNAKB
MOVX @R1, A
CLR P1.6
MOV A, #2
LCALL DELAY_MS
SETB P1.6
MOV R0, #CSDS
MOV R1, #CSDB
MOV A, #DISPLAY2
MOVX @R0, A
MOV A, #ZNAKO
MOVX @R1, A
CLR P1.6
MOV A, #2
LCALL DELAY_MS
SETB P1.6
MOV R0, #CSDS
MOV R1, #CSDB
MOV A, #DISPLAY3
MOVX @R0, A
MOV A, #ZNAKL
MOVX @R1, A
CLR P1.6
MOV A, #2
LCALL DELAY_MS
SETB P1.6
MOV R0, #CSDS
MOV R1, #CSDB
MOV A, #DISPLAY4
MOVX @R0, A
MOV A, #zero
MOVX @R1, A
CLR P1.6
MOV A, #2
LCALL DELAY_MS
SETB P1.6
MOV R0, #CSDS
MOV R1, #CSDB
MOV A, #DISPLAY5
MOVX @R0, A
MOV A, #zero
MOVX @R1, A
CLR P1.6
MOV A, #2
LCALL DELAY_MS
SETB P1.6
MOV R0, #CSDS
MOV R1, #CSDB
MOV A, #DISPLAY6
MOVX @R0, A
MOV A, #zero
MOVX @R1, A
CLR P1.6
MOV A, #2
LCALL DELAY_MS
SETB P1.6
DJNZ R3, LOOP
LOOP1:
MOV R0, #CSDS
MOV R1, #CSDB
MOV A, #DISPLAY1
MOVX @R0, A
MOV A, #ZNAKB
MOVX @R1, A
CLR P1.6
MOV A, #2
LCALL DELAY_MS
SETB P1.6
MOV R0, #CSDS
MOV R1, #CSDB
MOV A, #DISPLAY2
MOVX @R0, A
MOV A, #ZNAKO
MOVX @R1, A
CLR P1.6
MOV A, #2
LCALL DELAY_MS
SETB P1.6
MOV R0, #CSDS
MOV R1, #CSDB
MOV A, #DISPLAY3
MOVX @R0, A
MOV A, #zero
MOVX @R1, A
CLR P1.6
MOV A, #2
LCALL DELAY_MS
SETB P1.6
MOV R0, #CSDS
MOV R1, #CSDB
MOV A, #DISPLAY4
MOVX @R0, A
MOV A, #ZNAKL
MOVX @R1, A
CLR P1.6
MOV A, #2
LCALL DELAY_MS
SETB P1.6
MOV R0, #CSDS
MOV R1, #CSDB
MOV A, #DISPLAY5
MOVX @R0, A
MOV A, #zero
MOVX @R1, A
CLR P1.6
MOV A, #2
LCALL DELAY_MS
SETB P1.6
MOV R0, #CSDS
MOV R1, #CSDB
MOV A, #DISPLAY6
MOVX @R0, A
MOV A, #zero
MOVX @R1, A
CLR P1.6
MOV A, #2
LCALL DELAY_MS
SETB P1.6
DJNZ R3, LOOP1
LJMP LOOP
Ktoś wie w jaki sposób możnaby to zoptymalizować ?
To jak narazie przesuwa literkę L o jeden segment w prawo.
-
keruseykaryu
Taki ciekawy efekt to by szło zrobić dość prosto. Na początek masz jakiś kąsek RAM i tam masz wpisane
Kropki oznaczają spacje, kod 0.
Teraz program robi tak. Pierwsze przejście - leci po bajtach od prawej i szuka znaku. Jak znajdzie coś różnego od zera to przed znakiem dodaje spacje. I teaz chwile czeka.
Teraz znowu leci od prawej i znowu szuka znaku. Jak znajdzie to dodaje spacje przed nim, ale leci dalej i szuka kolejnego znaku co by dodać spacje. Jak znajdzie to znowu czeka.
Za każdym takim przejściem dodaje spacje i za każdym razem szuka ilości znaków większej od poprzedniej o jeden. Da to efekt
Program kończy albo wraca na początek jak są tylko same spacje. I oto masz efekt rozsuwania i odjeżdżania znaków.
Wszystko robisz w buforku RAM, a pętla ciągle go wyświetla. Wot w pieriot.
Szkoda, że DSM nie ma większego displaya.
Kod: Zaznacz cały
BOL.....Teraz program robi tak. Pierwsze przejście - leci po bajtach od prawej i szuka znaku. Jak znajdzie coś różnego od zera to przed znakiem dodaje spacje. I teaz chwile czeka.
Teraz znowu leci od prawej i znowu szuka znaku. Jak znajdzie to dodaje spacje przed nim, ale leci dalej i szuka kolejnego znaku co by dodać spacje. Jak znajdzie to znowu czeka.
Za każdym takim przejściem dodaje spacje i za każdym razem szuka ilości znaków większej od poprzedniej o jeden. Da to efekt
Kod: Zaznacz cały
BOL.....
BO.L....
B.O..L..
.B..O...
..B...O.
...B....
....B...
.....B..
......B.
.......B
........Wszystko robisz w buforku RAM, a pętla ciągle go wyświetla. Wot w pieriot.
Szkoda, że DSM nie ma większego displaya.
No dobrze a jak skonstruować do tego listing.
I z tego co rozmawiałem z nauczycielką to ma bardziej iść tak:
I to się ma powtórzyć 3 razy.
I z tego co rozmawiałem z nauczycielką to ma bardziej iść tak:
Kod: Zaznacz cały
BOL....
BO.L...
BO..L..
BO...L.
BO....L
BO......
B.O.....
B..O....
[..]
B......O
B........
.B......
..B......
[...]
.........B
..........-
keruseykaryu