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ę

Bascom AVR i RC5

karol
-
-
Posty:6
Rejestracja:2 wrz 2003, o 18:51
Bascom AVR i RC5

Postautor: karol » 30 paź 2008, o 20:00

Mam problem z obsługą pilota RC5 w przerwaniu - działa odbiór pojedynczej komendy.
Chciałbym wprowadzać za pomocą pilota kody wielocyfrowe - kolejne komendy potrzebuje zapisać np. do zmiennej tablicowej.
To, co próbowałem napisać działa nie tak jak potrzebuję - nie chcę, aby np. przytrzymanie przycisku 1 powodowało wprowadzenie np. dwóch kolejnych 1 (potrzebuję, aby wprowadzenie dwóch 1 wymagało dwukrotnego naciśnięcia przycisku).

Awatar użytkownika
ZbeeGin
-
-
Posty:170
Rejestracja:3 kwie 2003, o 10:10
Lokalizacja:Metropolia Katowice

Postautor: ZbeeGin » 31 paź 2008, o 19:02

Kod!

karol
-
-
Posty:6
Rejestracja:2 wrz 2003, o 18:51

Postautor: karol » 1 lis 2008, o 07:21

Z kodem to jest mały problem, program jest już bardzo duzy, chciałem tylko do obsługi klawiatury lokalnej dołożyć mozliwość wprowadzania danych przez pilota.
Chodzi mi o jakiś przykład wprowadzania kilku liczb z pilota (to co próbowałem napisać powodowało wprowadzenie kilu liczb ale takich samych)

Awatar użytkownika
Paweł.W.
-
-
Posty:33
Rejestracja:31 sty 2007, o 14:26
Lokalizacja:Andrychów

Postautor: Paweł.W. » 1 lis 2008, o 13:00

Trudno powiedzieć co tam narobiłeś w kodzie... jeśli go nie przedstawiłeś.
Poza tym to co to za ukontroler? Nie ma gotowych procedur które by znaczniej uprościły zadanie?? Tym samym zaoszczędzając czas i pamięć flash...

karol
-
-
Posty:6
Rejestracja:2 wrz 2003, o 18:51

Postautor: karol » 5 lis 2008, o 19:37

Trochę poeksperymentowałem i powstało coś takiego

Kod: Zaznacz cały

$crystal = 16000000 $regfile = "m16def.dat" Config Rc5 = Pind.3 'konfiguracja wyświetlacza Config Lcd = 20 * 4 Config Lcdpin = Pin , Db4 = Portc.5 , Db5 = Portc.4 , Db6 = Portc.3 , Db7 = Portc.2 , E = Portc.6 , Rs = Portc.7 'konfiguracja linii Config Int1 = Low Level On Int1 Pobr_rc5 'deklaracja procedur Declare Sub Keyscan Declare Sub Odczytkomendy 'deklaracja zmiennych Dim Komenda(2) As Byte Dim Key As Byte Dim Licznik As Byte Dim Wylocznik As Integer 'zmienne do odczytu kodu RC5 Dim Address As Byte Dim Command As Byte Dim Flagarc5 As Bit Enable Interrupts Enable Int1 Cls Flagarc5 = 0 Wylocznik = 0 Cursor Off 'PROGRAM GŁÓWNY Do Enable Int1 Call Odczytkomendy Loop End Pobr_rc5: 'obsługa przerwania INT0 Disable Int1 Enable Interrupts Getrc5(address , Command) Command = Command And &B01111111 If Command < 127 And Flagarc5 = 0 Then Flagarc5 = 1 End If Return Sub Keyscan If Command < 127 And Flagarc5 = 1 Then Key = Command Flagarc5 = 0 End If End Sub Sub Odczytkomendy 'odczyt 2 znaków z pilota Licznik = 1 Locate 1 , 1 Lcd "COMMAND :" Do Enable Int1 Call Keyscan Disable Int1 If Key < 127 And Flagarc5 = 1 Then Komenda(licznik) = Key If Licznik = 1 Then Locate 1 , 11 Lcd Komenda(licznik) Wylocznik = Komenda(1) * 10 End If If Licznik = 2 Then Locate 1 , 12 Lcd Komenda(licznik) Wylocznik = Wylocznik + Komenda(2) End If Incr Licznik End If If Key = 107 Then 'kod ENTER Licznik = 1 Locate 1 , 11 Lcd " " Locate 4 , 1 Lcd Wylocznik Exit Do End If Loop End Sub
Miał to być "program" do przećwiczenia wprowadzania za pomocą pilota komendy dwu cyfrowej, jednak nie działa on stabilnie (można powiedzieć, ze raz działa a raz nie) i juz sie trochę zapętliłem. Może ktoś chłodnym okiem wyłapie, co jest nie tak (tak właściwie to jest moje pierwsze podejście do obsługi przerwań zewnętrznych).

Wróć do „Projektowanie PCB, programy EDA, CAD, narzędziowe”

Kto jest online

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