Poprzedni temat «» Następny temat
DSM-51
Autor Wiadomość
mr_x 



Wiek: 31
Dołączył: 12 Gru 2010
Posty: 366
Skąd: /bin/bash
Wysłany: 2012-04-17, 14:09   

Kod możesz przejrzeć, jest zamieszczony na stronie (tu jest LINK).
  
 
     
lewyboy 
Nowy na forum


Dołączył: 16 Kwi 2012
Posty: 13
Skąd: Gdańsk
Wysłany: 2012-04-17, 14:12   

No to juz niestety zbyt skomplikowane dla mnie, skoro nie jestem w stanie nawet wykonac napisu. Aż BOL patrzeć :)
 
     
mr_x 



Wiek: 31
Dołączył: 12 Gru 2010
Posty: 366
Skąd: /bin/bash
Wysłany: 2012-04-17, 14:14   

Ja bym zrobił, ale nie znam DSM, a bez tego ciężko. Bo on ma swoje charakterystyczne cechy, o których należy pamiętać podczas pisania programu.
 
     
lewyboy 
Nowy na forum


Dołączył: 16 Kwi 2012
Posty: 13
Skąd: Gdańsk
Wysłany: 2012-04-17, 14:18   

No trudno, jakoś będę musiał sobie poradzić. Chyba że jeszcze ktoś inny będzie w stanie mi pomóc.
 
     
lewyboy 
Nowy na forum


Dołączył: 16 Kwi 2012
Posty: 13
Skąd: Gdańsk
Wysłany: 2012-04-17, 16:02   

Kod:
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


Do tego momentu pomógł mi pan simrowit.
Ktoś wie w jaki sposób możnaby to zoptymalizować ?
To jak narazie przesuwa literkę L o jeden segment w prawo.
 
     
keruseykaryu
[Usunięty]

Wysłany: 2012-04-17, 18:13   

Taki ciekawy efekt to by szło zrobić dość prosto. Na początek masz jakiś kąsek RAM i tam masz wpisane
Kod:
BOL.....

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
Kod:

BOL.....
BO.L....
B.O..L..
.B..O...
..B...O.
...B....
....B...
.....B..
......B.
.......B
........

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.
 
     
lewyboy 
Nowy na forum


Dołączył: 16 Kwi 2012
Posty: 13
Skąd: Gdańsk
Wysłany: 2012-04-17, 18:23   

No dobrze a jak skonstruować do tego listing.

I z tego co rozmawiałem z nauczycielką to ma bardziej iść tak:

Kod:
BOL....
BO.L...
BO..L..
BO...L.
BO....L
BO......
B.O.....
B..O....
[..]
B......O
B........
.B......
..B......
[...]
.........B
..........


I to się ma powtórzyć 3 razy.
 
     
keruseykaryu
[Usunięty]

Wysłany: 2012-04-17, 18:35   

Drobna modyfikacja algorytmu jaki napisałem wyżej i masz to co chcesz.

lewyboy napisał/a:
No dobrze a jak skonstruować do tego listing.

Mnie nie pytaj bo nie rozwiązuje cudzych zadań dając gotowce. Odrobina własnego myślenia.
 
     
lewyboy 
Nowy na forum


Dołączył: 16 Kwi 2012
Posty: 13
Skąd: Gdańsk
Wysłany: 2012-04-17, 18:41   

Cytat:
Mnie nie pytaj bo nie rozwiązuje cudzych zadań dając gotowce. Odrobina własnego myślenia.


No nic, sam nie dam rady, trudno :P
 
     
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  


Powered by phpBB modified by Przemo © 2003 phpBB Group
Strona wygenerowana w 0,05 sekundy. Zapytań do SQL: 10