na razie zrobilem tak ze wypisuje liczby na ekran. mozna przesuwac ekranem. na 'esc' zrobilem ze cofa kursor i mozna poprawic blad :P (ale checa hehehe).
no wiem co i jak z tym dzieleniem. ale nie za bardzo kumam jak to wprowadzic w zycie. dziekuje za odpowiedzi . ale bardzo prosze (jesli mozna :) ) troche jasniej
hehe
pozdrawiam
to jest to :
LJMP START
ORG 100H
START:
MOV R0,#LCDWC ;adres wpisu instrukcji
MOV R1,#LCDRC ;adres odczytu stanu
MOV A,#1 ;kasuj dane wywietlacza
ACALL WRITE
MOV A,#0FH ;wĄcz wywietlacz,kursor
ACALL WRITE ;i mruganie kursora
MOV A,#06H ;ustaw kierunek
ACALL 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 wywietlacz
INC DPTR ;modyfikacja adresu
;pobrania kolejnego znaku
SJMP WRITE_TXT ;pobierz kolejny znak
TEXT_END:
DEC R0 ;adres wpisu instrukcji
MOV DPTR,#KEY_COD ;adres tabeli kodowania
;klawiszy
LOOP: ;p?tla reakcji na klawisze
LCALL WAIT_KEY ;pobierz klawisz
CJNE A,#0FH,NEXT ;czy klawisz 'ENTER'
ENTER: ;klawisz 'ENTER'
MOVX A,@R1
JB ACC.7,ENTER ;oczekiwanie na BUSY=0
; tu ma byc wlasnie opcja dzielenia
SJMP LOOP
NEXT:
MOV R2,A ;zapami?taj klawisz
MOVC A,@A+DPTR ;przekoduj klawisze
;na instrukcje
JZ WRITE_DAT ;0-klawisz jako dane
ACALL WRITE ;wysanie instrukcji
SJMP LOOP
WRITE_DAT: ;wpisz znak na LCD
MOV A,R2 ;odtw˘rz klawisz
ADD A,#30H ;modyfikuj jako znak
INC R0 ;adres wpisu danych
ACALL WRITE ;wpisanie znaku na LCD
DEC R0 ;adres wpisu instrukcji
SJMP LOOP
;**************************************
;Podprogram wpisu danych lub instrukcji
;na wywietlacz LCD
;Zakada prawidowe adresy w R0 i R1
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 ;wysanie danych
RET
;**************************************
;Tabela przekodowania numeru klawisza
;na instrukcj?, 0->klawisz jako znak
KEY_COD:
DB 0,0,0 ;0,1,2
DB 0,0,0 ;3,4,5
DB 0,0,0 ;6,7,8
DB 0,1CH,18H ;9,<,>
DB 06H,07H,10H ;^,v,Esc
DB 0 ;Enter
;**************************************
TEXT:
DB ' ',0
ps. taka mala rzecz a cieszy (mozliwosciami)