To tylko jedna z 2 stron tej notatki. Zaloguj się aby zobaczyć ten dokument.
Zobacz
całą notatkę
;==============================================================================
;Listing 7.5 Program identyfikacji nacisnietego klawisza
;==============================================================================
pomiar_tx ;mierzy czas ladowania kondensatora przez niezwarte rezystory
clrf tmr1h ;zeruj tmr1h clrf tmr1l ;zeruj tmr1l
call rozladuj ;zalacz rozladowanie kondensatota
call del_ntb ;poczekaj na rozladowanie
call laduj ;zalacz ladowanie kondensatora
bsf t1con, tmr1on ;zalacz tmr1
btfss cmcon, cout ;sprawdz wyjscie komparatora
goto $-1 ;czekaj na 1 na wyjsciu komparatora
bcf t1con, tmr1on ;wylacz tmr1
;zapamietaj pomiar do wyswietlenia
movf tmr1l, w movwf lbyte ;wpisz tmr1l do lbyte
movf tmr1h, w
movwf hbyte ;wpisz tmr1h do hbyte
;obliczenie dzielnika xklaw
bcf status, c ;zeruj c
rrf div, w ;div/2 - w
addwf tmr1l, f ;dodaj do tmr1l ze wzgledu na zaokraglenie
clrf xklaw ;zeruj xklaw
movf div, w ;wpisz div do w
xk_i ;obliczenie xklaw (xklaw = tmr1l/div)
incf xklaw, f ;inkrementuj xklaw
subwf tmr1l, f ;odejmij nklaw
btfsc status, c ;czy roznica ujemna
goto xk_i ;nie skok do xk_i
addwf tmr1l, f
movlw ((nklaw)/.2)
subwf tmr1l, f ;odejmij nklaw/2
btfss status, c ;czy oznica ujemna
decf xklaw, f ;korekta xklaw
return
;==============================================================================
rozladuj ;rozladowanie kondensatora
bcf we
bsf status, rp0 ;bank 1
bcf we ;ustaw line we jako wyjscie i wpisz 0 bcf status, rp0 ;bank 0
return
;==============================================================================
laduj ;ladowanie kondensatora
bsf status, rp0 ;bank 1
bsf we ;ustaw linie we jako wejscie
bcf status, rp0 ;bank 0
return
... zobacz całą notatkę
Komentarze użytkowników (0)