Koledzy nie wiem jak wyswietlić napis w drugiej lini wyswietlacza lcd w dsm51 (asembler) (caly program ma na zmiane co sekunde zamieniac pierwsza linie z drugą) siedzialem nad tym troche i nie wiem jak wpisac tekst do drugiej lini. oto moje wypociny:
LJMP START
ORG 100H
START:
MOV R0,#LCDWC ;adres wpisu instrukcji
MOV R1,#LCDRC ;adres odczytu stanu
MOV A,#1 ;kasuj dane wy˜wietlacza
LCALL WRITE
MOV A,#0FH ;wˆĄcz wy˜wietlacz,kursor
LCALL WRITE ;i mruganie kursora
; MOV A,#06H ;ustaw kierunek
; LCALL WRITE ;przesuwania si© kursora
INC R0 ;adres wpisu danych
MOV DPTR,#TEXT ;adres tekstu
WRITE_TXT:
CLR A ;pobranie kolejnego
MOVC A,@A+DPTR ;znaku tekstu
JZ TEXT_END ;bajt=0 - koniec tekstu
ACALL WRITE ;wpisanie na wy˜wietlacz
INC DPTR ;modyfikacja adresu
;pobrania kolejnego znaku
SJMP WRITE_TXT ;pobierz kolejny znak
TEXT_END:
MOV A,#10
LCALL DELAY_100MS
MOV R0,#LCDWC ;adres wpisu instrukcji
MOV R1,#LCDRC ;adres odczytu stanu
MOV A,#1 ;kasuj dane wy˜wietlacza
LCALL WRITE
MOV A,#0FH ;wˆĄcz wy˜wietlacz,kursor
LCALL WRITE ;i mruganie kursora
; MOV A,#06H ;ustaw kierunek
; ACALL WRITE ;przesuwania si© kursora
INC R0 ;adres wpisu danych
MOV DPTR,#TEXT2 ;adres tekstu
WRITE_TXT2:
CLR A ;pobranie kolejnego
MOVC A,@A+DPTR ;znaku tekstu
JZ KONIEC ;bajt=0 - koniec tekstu
ACALL WRITE ;wpisanie na wy˜wietlacz
INC DPTR ;modyfikacja adresu
;pobrania kolejnego znaku
SJMP WRITE_TXT2 ;pobierz kolejny znak
KONIEC:
MOV A,#10
LCALL DELAY_100MS
LJMP START
WRITE:
MOV R2,A ;przechowanie danych
BUSY:
MOVX A,@R1 ;odczyt stanu
JB ACC.7,BUSY ;oczekiwanie na BUSY=0
MOV A,R2 ;odtworzenie danych
MOVX @R0,A ;wysˆanie danych
RET
TEXT:
DB 'TEKST 1'
DB ' '
DB 'tekst 2',0
TEXT2:
DB 'tekst 2'
DB ' '
DB 'TEKST 1',0
aktualnie program dziala tylko ta opcja z spacjami raczej nie przejdzie na zaliczeniu prosze o jakąs pomoc
pozdro
LJMP START
ORG 100H
START:
MOV R0,#LCDWC ;adres wpisu instrukcji
MOV R1,#LCDRC ;adres odczytu stanu
MOV A,#1 ;kasuj dane wy˜wietlacza
LCALL WRITE
MOV A,#0FH ;wˆĄcz wy˜wietlacz,kursor
LCALL WRITE ;i mruganie kursora
; MOV A,#06H ;ustaw kierunek
; LCALL WRITE ;przesuwania si© kursora
INC R0 ;adres wpisu danych
MOV DPTR,#TEXT ;adres tekstu
WRITE_TXT:
CLR A ;pobranie kolejnego
MOVC A,@A+DPTR ;znaku tekstu
JZ TEXT_END ;bajt=0 - koniec tekstu
ACALL WRITE ;wpisanie na wy˜wietlacz
INC DPTR ;modyfikacja adresu
;pobrania kolejnego znaku
SJMP WRITE_TXT ;pobierz kolejny znak
TEXT_END:
MOV A,#10
LCALL DELAY_100MS
MOV R0,#LCDWC ;adres wpisu instrukcji
MOV R1,#LCDRC ;adres odczytu stanu
MOV A,#1 ;kasuj dane wy˜wietlacza
LCALL WRITE
MOV A,#0FH ;wˆĄcz wy˜wietlacz,kursor
LCALL WRITE ;i mruganie kursora
; MOV A,#06H ;ustaw kierunek
; ACALL WRITE ;przesuwania si© kursora
INC R0 ;adres wpisu danych
MOV DPTR,#TEXT2 ;adres tekstu
WRITE_TXT2:
CLR A ;pobranie kolejnego
MOVC A,@A+DPTR ;znaku tekstu
JZ KONIEC ;bajt=0 - koniec tekstu
ACALL WRITE ;wpisanie na wy˜wietlacz
INC DPTR ;modyfikacja adresu
;pobrania kolejnego znaku
SJMP WRITE_TXT2 ;pobierz kolejny znak
KONIEC:
MOV A,#10
LCALL DELAY_100MS
LJMP START
WRITE:
MOV R2,A ;przechowanie danych
BUSY:
MOVX A,@R1 ;odczyt stanu
JB ACC.7,BUSY ;oczekiwanie na BUSY=0
MOV A,R2 ;odtworzenie danych
MOVX @R0,A ;wysˆanie danych
RET
TEXT:
DB 'TEKST 1'
DB ' '
DB 'tekst 2',0
TEXT2:
DB 'tekst 2'
DB ' '
DB 'TEKST 1',0
aktualnie program dziala tylko ta opcja z spacjami raczej nie przejdzie na zaliczeniu prosze o jakąs pomoc
pozdro