⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mcs51_list_10_2.asm

📁 source code from Starcki book
💻 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 + -