To tylko jedna z 3 stron tej notatki. Zaloguj się aby zobaczyć ten dokument.
Zobacz
całą notatkę
;================================================================================
;Listing 7.6 Procedura identyfikacji nacisnietego klawisza z budzeniem procesora
;================================================================================
;definicje linii procesora
#define budz gpio, 0 ;deklaracja linii budz (GP0)
#define we gpio, 1 ;deklaracja linii we (GP1)
#define klaw gpio, 5 ;deklaracja linii klaw (GP5)
;================================================================================
loop ;petla glowna sleep ;przejdz w stan uspienia i czekaj na nacisniecie przycisku
nop ;procesor budzi sie
call del_20ms ;czekaj 20 ms - eliminacja drgan stykow
call pomiar_tx ;zmierz czas tx i oblicz xklaw
;inne procedury w petli
spr_puszcz ;sprawdz czy zwolniony przycisk
btfsc budz ;czy puszczony przycisk - 1 sprawdzenie
goto spr_puszcz ;nie, czekaj na puszczenie przycisku
call del_20ms ;czekaj 20 ms - eliminacja drgan stykow
btfsc budz ;czy puszczony przycisk - 2 sprawdzenie
goto spr_puszcz ;nie, czekaj na puszczenie przycisku
bsf status, rp0 ;bank1
bcf we ;ustaw gp1 jako wyjscie
bcf status, rp0 ;bank0
bsf we ;wpisz 1 na gp1 i odczytaj stan portu
bcf intcon, gpif ;skasuj flage przerwania od zmiany stanu na porcie
goto loop ;idz do petli glownej
;==============================================================================
pomiar_tx ;mierzy czas ladowania kondensatora przez niezwarte rezystory
;ustaw budz jako wyjscie i wpisz 1
bsf status, rp0 ;bank1
bcf budz ;ustaw gp0 jako wyjscie
bcf status, rp0 ;bank0
bsf budz ;ustaw 1 na gp0
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
;ustaw budz jako wejscie
bsf status, rp0 ;bank1
bsf budz ;ustaw gp0 jako wejscie
bcf status, rp0 ;bank0
;zapamietaj pomiar do wyswietlenia
movf tmr1l, w movwf lbyte ;wpisz tmr1l do lbyte
... zobacz całą notatkę
Komentarze użytkowników (0)