Mierzenie czasu trwania wcisnięcia przycisku

To forum jest dla wszystkich pasjonatów wiecznie młodych mikrokontrolerów '51. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
ODPOWIEDZ
mnowak02
-
Posty: 2
Rejestracja: 16 gru 2009, 13:09
Lokalizacja: www
Kontakt:

Mierzenie czasu trwania wcisnięcia przycisku

Post autor: mnowak02 » 16 gru 2009, 13:24

Mam program liczący czas pomiędzy dwoma naciśnięciami klawisza enter i pokazuje ten czas na wyświetlaczu 7-segmentowym. Jak można go zmodyfikować, aby nie liczył czasu pomiędzy dwoma kliknięciami, tylko się naciska przycisk i w tym momencie rusza timer i gdy go puszczę, timer się zatrzymuje i pokazuje się czas wciśnięcia tego przycisku??

Wpadłem na taki pomysł ale coś mi tu nie działa może mi ktoś powiedzieć co jest nie tak??????
linia P3.5 jest wykorzystywana do odczytu stanu z klawiatury wyświetlacza 7segmentowego

Kod: Zaznacz cały

LOOP1:
CLR TR1 ;zatrzymanie timera
SJMP $

LOOP:

MOV C,P3.5 ;sprawdzam czy coś nacisnąłem

SETB TR1 ;włączam timer
CPL C ;neguje bit C
CJNE C,P3.5,LOOP1 ;sprawdzam czy C jest różne od P3.5 czyli czy puściłem juz klawisz
SJMP LOOP ;jeżeli są równe to skacze do LOOP

Ostatnio zmieniony 19 gru 2009, 17:27 przez mnowak02, łącznie zmieniany 4 razy.

Awatar użytkownika
c4r0
Moderator
Posty: 2150
Rejestracja: 13 kwie 2004, 19:56
Lokalizacja: z lasu
Kontakt:

Post autor: c4r0 » 16 gru 2009, 15:51

Daj ten program co mierzy czas pomiędzy dwoma wciśnięciami to będzie nam łatwiej coś wymyślić.

mnowak02
-
Posty: 2
Rejestracja: 16 gru 2009, 13:09
Lokalizacja: www
Kontakt:

Post autor: mnowak02 » 16 gru 2009, 22:57

dołaczam kompletny działąjący program tylko nie wiem jak te przyciskanie wykombinowac:/

[ Dodano: 2009-12-18, 22:08 ]
zmodyfikowałem kod:

Kod: Zaznacz cały

LOOP:


JNB P3.5,LOOP ;domyślnie jest 0 na P3.5 i jak nacisnę przycisk wskakuje 1
SETB TR1 ;włączam timer jeżeli nic nie wcisnąłem skoczy do LOOP



JNB P3.5,STOP ;jeżeli nacisnąłem więc mam 1 na P3.5 i jak go puszczę mam 0
SJMP LOOP ;więc skoczę do STOP


STOP:

CLR TR1 ;zatrzymanie timera
na moje powinno działać tylko w symulatorze bit P3.5 z zera z 0 na 1 włącza się i podczas czasu trwania wciśnięcia klawisza ten bit sam się zmienia bez przerwy 0->1 i 1->0 a powinien przecież być równy 1 co tu jest źle????
Załączniki
moje.rar
(1.2 KiB) Pobrany 430 razy

ODPOWIEDZ