To tylko jedna z 2 stron tej notatki. Zaloguj się aby zobaczyć ten dokument.
Zobacz
całą notatkę
;==============================================================================
;Listing 7.13 Procedura odbioru ramki 8N1
;==============================================================================
rx_in ;procedura odbioru ramki 8n1
bcf rx_err ;zeruj flage bledu
movlw .8 ;liczba bitow danych
movwf cnt ;inicjuj licznik bitow
; goto $+1 ;zamiast 2 nastepnych linii
btfsc in ;sprawdz linie in
goto $-1 ;czekaj na bit startu
call del_ptb ;opoznienie 0.5 tb
; goto $+1 ;zamiast 2 nastepnych linii
btfsc in ;sprawdz bit startu po czasie 0.5 tb
goto rx_end ;brak, pomin odbior ramki
call del_ptb ;opoznienie 0.5 tb
nop ;dodatkowe opoznienie
rx_loop ;odbior kolejnych bitow
call del_ptb ;opoznienie 0.5 tb
bcf status, c ;zeruj c
btfsc in ;sprawdz linie in
bsf status, c ;ustaw c
rrf rx_reg, f ;przesun c do rejestru rx_reg
call del_ptb ;opoznienie 0.5 tb
decfsz cnt, f ;czy odebrano wszystkie bity
goto rx_loop ;kolejny bit danych
call del_ptb ;opoznienie 0.5 tb
call del_ptb ;opoznienie 0.5 tb
btfss in ;sprawdz bit stopu
bsf rx_err ;brak, ustaw flage bledu
movf rx_reg, w ;zapisz dane do w
rx_end ;koniec procedury rx_in
return
... zobacz całą notatkę
Komentarze użytkowników (0)