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

📄 mcs51_list_10_5.asm

📁 source code from Starcki book
💻 ASM
字号:
; =======================================================================
;
;           Tomasz Starecki: "Mikrokontrolery 8051 w praktyce"
;              Wydawnictwo BTC  -  http://www.btc.pl
;
; =======================================================================
; procedura programowego odbiornika lacza RS
; musi byc wywolywana z czestotliwosca l_szpilek x baud rate
; bit sygnalizujacy Frame Error zwracany jest stanem wskaznika F0 (PSW.5)
; udostepniane sa procedury jak w deklaracji PUBLIC
; wymagane zdefiniowanie (typowo w module glownym) parametr體 jak w EXTERN
;    niszczy ACC, PSW (CY, F0) 
; =======================================================================

EXTERN	RX_gotowy, l_szpilek, polowa_l_szpilek 
EXTERN	RX_aktywny, RX_pin, RX_buf, RX_temp, nr_szpilki
PUBLIC 	odbior_RS

ORG	1400H

odbior_RS:
MOV	A, RX_aktywny
JNZ 	obsluga_RX		; jesli RX_aktywny <> 0 to obsluga
; jak nie, to moze bit startu?
JB	RX_pin, koniec		; powrot jesli brak bitu startu
MOV	RX_aktywny, #10		; do odbioru jest 10 bitow
MOV	nr_szpilki, #l_szpilek		
RET

obsluga_RX:
DJNZ	nr_szpilki, dalej_RX	; -1 i skok jesli nr_szpilki <> 0
MOV	nr_szpilki, #l_szpilek		
koniec:	CLR	F0		; zerowanie wskaznika Frame Error
RET

dalej_RX:
MOV 	A, nr_szpilki
CJNE	A, #polowa_l_szpilek, koniec	; powrot jesli nie polowa bitu
DJNZ	RX_aktywny, wczytaj_bit_danych  ; -1 i skok jesli RX_aktywny <> 0
JNB	RX_pin, blad_ramki		; test bitu stopu, jesli OK to
MOV	RX_buf, RX_temp		; RX_temp do bufora odbiornika
CLR 	F0			; sygnalizacja, ze stop OK
SETB	RX_gotowy			; i ze dane czekaja w buforze
RET

blad_ramki:
SETB	F0			; sygnalizacja Frame Error (bledu ramki)
RET

wczytaj_bit_danych:	
MOV	A, RX_aktywny
CJNE	A, #9, nie_bit_startu	; skok jesli RX_aktywny <> 9
JNB	RX_pin, koniec		; poprawny bit startu
MOV	RX_aktywny, #0		; zaklocenie, a nie bit startu
RET

nie_bit_startu:			; doklejenie kolejnego odebranego bitu
MOV	A, RX_temp
MOV	C, RX_pin
RRC	A
MOV	RX_temp, A
CLR	F0			; i zerowanie wskaznika bledu ramki
RET
END					; koniec modulu

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -