Aktyw Forum

Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.

Sprawdź punkty Zarejestruj się

Mierzenie długości wcisniętego przycisku

mnowak02
-
-
Posty: 2
Rejestracja: 16 gru 2009, o 13:03
Lokalizacja: www
Kontaktowanie:

Mierzenie długości wcisniętego przycisku

Postautor: mnowak02 » 16 gru 2009, o 13:14

Mam program liczący czas pomiedzy dwoma naciśnięciami klawisza enter i pokazuje ten czas na wyświetlaczu 7-segm jak mozna go zmodyfikować aby nie liczył czasu pomiędzy dwoma kliknięciami tylko się naciska przycisk 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
Edit:

Kod: Zaznacz cały

[/color]
Ostatnio zmieniony 19 gru 2009, o 12:14 przez mnowak02, łącznie zmieniany 1 raz.

mnowak02
-
-
Posty: 2
Rejestracja: 16 gru 2009, o 13:03
Lokalizacja: www
Kontaktowanie:

Postautor: mnowak02 » 18 gru 2009, o 22:10

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????

Edit:

Kod: Zaznacz cały

[/color]
Ostatnio zmieniony 19 gru 2009, o 12:13 przez mnowak02, łącznie zmieniany 2 razy.

Awatar użytkownika
pajaczek
Moderator
Moderator
Posty: 2650
Rejestracja: 24 sty 2005, o 00:39
Lokalizacja: Winny gród

Postautor: pajaczek » 19 gru 2009, o 12:19

Na przyszłość zainteresuj się znacznikiem

Kod: Zaznacz cały

gdy będziesz umieszczał listingi. A co do tych zmian 0->1 i odwrotnie... zainteresuj się co to jest drganie styków, i sposobach jego eliminacji. Choć w Twoim zastosowaniu po pierwsze minimalnie wpłynie to na pomiar, po drugie programowe metody debouncera (eliminatora drgań) bazują na podobnych mechanizmach co sam Twój kod.

Wróć do „8051”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 13 gości