Program DSM-51

Tu piszemy wiadomość, jeżeli zadanie domowe sprawia kłopot
i szybko potrzebujemy pomocy w rozwiązaniu.
ODPOWIEDZ
elektronikopo
Użytkownik
Posty: 182
Rejestracja: 16 gru 2007, 22:28
Lokalizacja: Poznań

Program DSM-51

Post autor: elektronikopo » 16 gru 2007, 22:37

Mam napisać program , który będzie wyświetlał na wyświetlaczu LCD napis "Zażółcić gęślą jaźń " na DSM -51 Ja napisałem program i mi nie działa nie wiem jak to zrobić prosze o pomoc :

Kod: Zaznacz cały

 LJMP START
 ORG 100H
START: 

 LCALL LCD_CLR 
 CLR A 
 MOV DPTR,#TEX
 LCALL WRITE_TEXT 

 MOV A,#00001100B 
 LCALL WRITE_INSTR 


 MOV R0,#82H               
 MOV R1,#83H                
 MOV A,#01000000B            
 MOVX @R0,A         
 MOV A,#10000000B     
 MOVX @R1,A       

       
TEX:
 DB 00100000B
 DB 00100000B 
 DB 00111111B
 DB 00100010B
 DB 00101111B 
 DB 00101000B 
 DB 00111111B 
 DB 00100000B 

 
 DB 00100000B
 DB 00100100B 
 DB 00101110B
 DB 00110001B
 DB 00110001B
 DB 00110001B
 DB 00101110B
 DB 00100000B 

 DB 00100100B
 DB 00100100B
 DB 00100100B
 DB 00101110B
 DB 00100100B
 DB 00100100B
 DB 00101110B
 DB 00100000B

 DB 00100010B
 DB 00100100B
 DB 00101110B 
 DB 00110000B
 DB 00110000B 
 DB 00110001B 
 DB 00101110B 
 DB 00100000B 

 DB 00100000B 
 DB 00101110B
 DB 00110001B
 DB 00111111B 
 DB 00110000B 
 DB 00101110B 
 DB 00100010B
 DB 00100000B 

 DB 00100010B
 DB 00100100B
 DB 00101110B 
 DB 00110000B
 DB 00101110B 
 DB 00100001B 
 DB 00111110B 
 DB 00100000B 

 DB 00100000B
 DB 00101110B 
 DB 00100001B 
 DB 00101111B 
 DB 00110001B 
 DB 00101111B
 DB 00100010B
 DB 00100000B 
 
 DB 00100001B 
 DB 00100010B 
 DB 00111111B
 DB 00101010B
 DB 00100100B
 DB 00101000B
 DB 00111111B
 DB 00100000B

TEXT:
	DB 'ZA',8,1,2,'CI',3,'g',4,5,'l',6,'ja',7,'N' ,0 
STOP: 
 LJMP STOP
Ostatnio zmieniony 12 lut 2008, 16:40 przez elektronikopo, łącznie zmieniany 1 raz.

ZbeeGin

Post autor: ZbeeGin » 16 gru 2007, 23:00

Zupełne pomieszanie z poplątaniem. Gdzie komentarze? Definiowanie CGRAM jako LCALL WRITE_TEXT? Program przelatuje przez ciąg definicji? LJMP STOP który nigdy się nie zdąży wykonać?
Niech kolega najpierw rozrysuje sobie jakiś algorytm postępowania w tym programie a nie buduje bezsensownych konstrukcji jak popadnie. Czego "oni" uczą Was w tych szkołach?


ps. Znów się zaczynają próby "odrabiania pańszczyzny". :cry:

Awatar użytkownika
Luminofor
Użytkownik
Posty: 1375
Rejestracja: 27 lis 2007, 17:17
Lokalizacja: Polska

Post autor: Luminofor » 17 gru 2007, 0:03

stałe definiujemy na początku programu, nie w jego środku, to taki dobry zwyczaj dobrego programisty, po za tym istnieją symulatory zestawu uruchomieniowego DSM-51 na PC np Jagoda i to tam przede wszystkim szukałbym rozwiązania twojego problemu krokując pracę programu i szukając błędów.

ZbeeGin

Post autor: ZbeeGin » 17 gru 2007, 7:01

MichalKaszuba pisze:stałe definiujemy na początku programu, nie w jego środku, to taki dobry zwyczaj dobrego programisty
Zgodziłbym się, jeśli napisałbyś, że na końcu programu. To jest asembler nie język wysokiego poziomu.

elektronikopo
Użytkownik
Posty: 182
Rejestracja: 16 gru 2007, 22:28
Lokalizacja: Poznań

Post autor: elektronikopo » 20 gru 2007, 15:16

Moglby mi ktos to napisać bo nie umiem

ZbeeGin

Post autor: ZbeeGin » 20 gru 2007, 17:49

A wspomniany algorytm, czy nawet prosty punktowy tok postępowania takiego programu mógłbys sobie po prostu rozrysować/napisać? Przecież to wiele Ci wyjaśni i będziemy mogli wspólnymi siłami napisać taki program.

Nie sztuką jest notoryczne upraszanie się o gotowca - w takich przypakach Twoje szanse na pomoc spadają dość nisko...

Awatar użytkownika
brzozi
Użytkownik
Posty: 297
Rejestracja: 02 sie 2005, 22:11
Lokalizacja: Trzebinia
Kontakt:

Post autor: brzozi » 20 gru 2007, 20:02

Jsk mnie pamięć nie myli w podręczniku na bank jest obsługa wyświetlacza - proponuję przeczytać.

elektronikopo
Użytkownik
Posty: 182
Rejestracja: 16 gru 2007, 22:28
Lokalizacja: Poznań

Post autor: elektronikopo » 20 gru 2007, 21:17

Kod: Zaznacz cały

LJMP START 
ORG 100H 
START: 

MOV R7,#00000001B ; CZYSZCZENIE 
LCALL LCD_INSTRUKCJA 

MOV R7,#00001100B ; WYSWIETL WLACZ 
LCALL LCD_INSTRUKCJA 


MOV R7,#01000000B ; SET CG_RAM 
LCALL LCD_INSTRUKCJA 

MOV DPTR,#ZNAKI 
LCALL LCD_DANE 


MOV R7,#10000000B ; SET DD_RAM 
LCALL LCD_INSTRUKCJA 

MOV DPTR,#NAPIS1 
LCALL LCD_DANE 


MOV R7,#10101000B ; SET DD_RAM 
LCALL LCD_INSTRUKCJA 

MOV DPTR,#NAPIS2 
LCALL LCD_DANE 


LJMP $ 



LCD_DANE: 
MOV R0,#81H ; ZAPIS DANYCH 
MOV R1,#82H ; ODCZYT STANU 

MOV R2,#0 

BUSSY1: 
MOVX A,@R1 
JB ACC.7,BUSSY1 

MOV A,R2 

MOVC A,@A+DPTR 
MOVX @R0,A 
MOV A,R2 
INC A 

MOV R2,A 
MOVC A,@A+DPTR 
JNZ BUSSY1 

RET 


LCD_INSTRUKCJA: 
MOV R0,#80H ; ZAPIS INSTRUKCJI 
MOV R1,#82H ; ODCZYT STANU 

BUSSY4: 
MOVX A,@R1 
JB ACC.7,BUSSY4 

MOV A,R7 
MOVX @R0,A 
RET 


NAPIS1: 
DB 'za',1,162,4,'ci',3,' g',6,7,'l',5,0 

NAPIS2: 
DB 'ja',8,2,0 

ZNAKI: 
;L_ZI: 
DB 10000001B 
DB 10000010B 
DB 10011111B 
DB 10000010B 
DB 10000100B 
DB 10001000B 
DB 10011111B 
DB 10000000B 

;L_ZY: 
DB 10000000B 
DB 10000000B 
DB 10011111B 
DB 10000010B 
DB 10011111B 
DB 10001000B 
DB 10011111B 
DB 10000000B 

;L_N: 
DB 10000001B 
DB 10000010B 
DB 10010110B 
DB 10011001B 
DB 10010001B 
DB 10010001B 
DB 10010001B 
DB 10000000B 

;L_C: 
DB 10000001B 
DB 10000010B 
DB 10001110B 
DB 10010000B 
DB 10010000B 
DB 10010001B 
DB 10001110B 
DB 10000000B 

;L_L: 
DB 10001100B 
DB 10000100B 
DB 10000110B 
DB 10001100B 
DB 10000100B 
DB 10000100B 
DB 10001110B 
DB 10000000B 

;L_A: 
DB 10000000B 
DB 10000000B 
DB 10001110B 
DB 10000001B 
DB 10001111B 
DB 10010001B 
DB 10001111B 
DB 10000010B 

;L_E: 
DB 10000000B 
DB 10000000B 
DB 10001110B 
DB 10010001B 
DB 10011111B 
DB 10010000B 
DB 10001110B 
DB 10000010B 

;L_S: 
DB 10000001B 
DB 10000010B 
DB 10001110B 
DB 10010000B 
DB 10001110B 
DB 10000001B 
DB 10011110B 
DB 10000000B 

DB 0 
na wyświetlaczu LCD napis "Zażółcić gęślą jaźń " A to bedzie dzialalao na DSMie51?? Dobrze jest ten program?
Ostatnio zmieniony 12 lut 2008, 16:40 przez elektronikopo, łącznie zmieniany 1 raz.

ZbeeGin

Post autor: ZbeeGin » 21 gru 2007, 7:02

elektronikopo pisze:A to bedzie dzialalao na DSMie51?? Dobrze jest ten program?
Sprawdzony na symulatorze Jagoda? Jeśli tak i działa, to są szanse, że na DSM-51 też zadziała poprawnie.

ODPOWIEDZ