📄 mcs51_list_10_2.asm
字号:
;=========================================================
;
; Tomasz Starecki: "Mikrokontrolery 8051 w praktyce"
; Wydawnictwo BTC - http://www.btc.pl
;
;=========================================================
; przykladowa procedura obslugi wyswietlacza LED
; sterowanego dynamicznie
; udostepniane sa procedury jak w deklaracji PUBLIC
; wymagane zdefiniowanie kilku parametr體
; (typowo w module glownym) - jak w EXTERN
; niszczy ACC, R0, PSW (w tym CY)
;=========================================================
EXTERN liczba_LEDow, nr_LED, anody, segmenty
PUBLIC wyswietlacz_LED, cyfra_na_7_seg
wyswietlacz_LED:
ORL anody, #0F0H ; wylaczenie anod (ustawiajac cztery starsze bity portu)
DJNZ nr_LED, disp1
MOV nr_LED, #liczba_LEDow
disp1:
MOV A, #nr_LED ; do adresu poczatku bufora wyswietlacza
ADD A, nr_LED ; dodaje numer aktywnego wskaznika, co daje
MOV R0, A ; adres aktywnego wskaznika w buforze wyswietlacza
MOV A, @R0 ; zawartosc aktywnego bajtu bufora wyswietlacza do ACC
MOV segmenty, A ; a nastepnie do rejestru segmentow
MOV ACC, #2 ; offset do tabeli anod
ADD A, nr_LED ; uwzgledniajacy numer aktywnego wyswietlacza
MOVC A, @A+PC ; wyluskanie kodu anody z tabeli anod
XRL anody, A ; wlaczenie nowej anody
RET
tabela_anod:
DB 80H, 40H, 20H, 10H
;=================================================================
; procedura pomocnicza konwersji cyfry hex na kod 7-segmentowy
; latwa w przystosowaniu do dowolnego rozmieszczenia segment體
; i dowolnego rodzaju wskaznik體 (ze wsp髄na anoda / katoda)
; cyfra do zdekodowania i zwrotny kod w ACC
;=================================================================
cyfra_na_7_seg:
INC A ; uwzglednienie przeskoku przez instrukcja RET
MOVC A, @A+PC ; wyluskanie kodu z ponizszej tabeli kod體
RET
DB 11000000B; 0
DB 11111001B; 1
DB 10100100B; 2
DB 10110000B; 3
DB 10011001B; 4
DB 10010010B; 5
DB 10000010B; 6
DB 11111000B; 7
DB 10000000B; 8
DB 10010000B; 9
DB 10001000B; A
DB 10000011B; b
DB 11000110B; C
DB 10100001B; d
DB 10000110B; E
DB 10001110B; F
DB 11111111B; wygaszony (16)
DB 10111111B; - (17)
DB 11111110B; . (18)
END ; koniec modulu
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -