📄 mcs51_list_10_1.asm
字号:
; ====================================================
;
; Tomasz Starecki: "Mikrokontrolery 8051 w praktyce"
; Wydawnictwo BTC - http://www.btc.pl
;
; ====================================================
;
; obsluga klawiatury matrycowej 4 x 4
; udostepniane sa procedury jak w deklaracji PUBLIC
; wymagane zdefiniowanie sposobu podlaczenia
; i dodatkowych parametr體 (typowo w module glownym)
; jak w EXTERN
; niszczy A, B, PSW (w tym CY)
; =====================================================
EXTERN port_klawiatury, klawisz, wcisniety, puszczony, licznik_klawiatury, kb_tick
PUBLIC klawiatura
klawiatura:
DJNZ licznik_klawiatury, wracaj ; zeby obsluga byla dla
MOV licznik_klawiatury, #kb_tick ; f = f(T0_int) / kb_tick
MOV port_klawiatury, #07FH ; wymuszenie zera na kolumnie
MOV A, port_klawiatury ; odczytanie stanu rzed體
ANL A, #0FH ; maskowanie starszej pol體ki
MOV B, #0 ; czesciowy kod klawisza do B
CJNE A, #0FH, klawisz_wcisniety ; sprawdzanie czy cos wcisniete
MOV port_klawiatury, #0BFH ; analogicznie na innych kolumnach
MOV A, port_klawiatury
ANL A, #0FH
MOV B, #4
CJNE A, #0FH, klawisz_wcisniety
MOV port_klawiatury, #0DFH
MOV A, port_klawiatury
ANL A, #0FH
MOV B, #8
CJNE A, #0FH, klawisz_wcisniety
MOV port_klawiatury, #0EFH
MOV A, port_klawiatury
ANL A, #0FH
MOV B, #12
CJNE A, #0FH, klawisz_wcisniety
JBC wcisniety, klawisz_puszczony ; nic nie jest wcisniete
wracaj:
RET
klawisz_puszczony:
SETB puszczony ; sygnalizacja puszczenia klawisza
RET ; jesli poprzednio byl wcisniety
klawisz_wcisniety:
SETB wcisniety ; sygnalizacja wcisniecia klawisza
; teraz okreslany bedzie numer wcisnietego klawisza
; czesciowy numer klawisza (dwa mlodsze bity) jest juz w B
XCH A, B
JNB B.3, zapisz_kod_klawisza ; a czesciowo brutalnie sprawdzajac
JNB B.2, dodaj_1 ; bity odczytane wczesniej z portu
JNB B.1, dodaj_2 ; klawiatury
ADD A, #3
MOV klawisz, A ; kod wcisnietego klawisza do bufora
RET
dodaj_2:
INC A
dodaj_1:
INC A
zapisz_kod_klawisza:
MOV klawisz, A ; kod wcisnietego klawisza do bufora
RET
END ; koniec modulu
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -