Witam.
Napisałem taki program w bascomie do obsługi RTC PCF8583. Chcę abym mógł go nastawiać z pilota. Niestety ale nie wychodzi mi to za bardzo (po wciśnięciu klawisza pojawia się tylko kursor i program dalej nie chce iść). Pod Int0 podłączyłem przerwanie od PCF'a a pod Int1 odbiornik Rc5. Odmierzanie czasu jest poprawne. Tutaj kod:
Program zatrzymuje się po wejściu do przerwania "Menu". Co w takim razie robię źle? Z góry pozdrawiam, Polprzewodnikowy.
Napisałem taki program w bascomie do obsługi RTC PCF8583. Chcę abym mógł go nastawiać z pilota. Niestety ale nie wychodzi mi to za bardzo (po wciśnięciu klawisza pojawia się tylko kursor i program dalej nie chce iść). Pod Int0 podłączyłem przerwanie od PCF'a a pod Int1 odbiornik Rc5. Odmierzanie czasu jest poprawne. Tutaj kod:
$regfile = "m32def.dat"
$crystal = 16000000
Enable Interrupts
Enable Int0
Enable Int1
On Int0 Odczyt_czasu
On Int1 Menu
Dim Sekunda As Byte , Minuta As Byte , Godzina As Byte
Dim Ustaw_h As Byte , Ustaw_m As Byte , Ustaw_s As Byte
Dim Command As Byte , Addres As Byte
Config Lcd = 16 * 2
Config Lcdpin = Pin , Rs = Portc.2 , E = Portc.3 , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7
Config Sda = Portc.1
Config Scl = Portc.0
Config Int1 = Low Level
Config Rc5 = Pind.3
Ustaw_h = 1
Ustaw_m = 1
Ustaw_s = 1
Cls
Do
Loop
End
Odczyt_czasu:
I2cinit
I2cstart
I2cwbyte 162
I2cwbyte 2
I2cstart
I2cwbyte 163
I2crbyte Sekunda , Ack
I2crbyte Minuta , Ack
I2crbyte Godzina , Nack
I2cstop
Godzina = Makedec(godzina)
Minuta = Makedec(minuta)
Sekunda = Makedec(sekunda)
Locate 1 , 1
Lcd Godzina ; ":" ; Minuta ; ":" ; Sekunda ; " "
Return
Menu:
Disable Int0
Disable Int1
Cls
Do
Getrc5(command , Addres)
Command = Command And &B01111111
If Command = 1 Then Incr Ustaw_h
If Command = 2 Then Decr Ustaw_h
If Ustaw_h > 23 Then Ustaw_h = 0
Lcd "Ustaw godziny: " ; Ustaw_h
Loop Until Command = 4
Cls
Do
Getrc5(Command , Addres)
Command = Command And &B01111111
If Command = 1 Then Incr Ustaw_m
If Command = 2 Then Decr Ustaw_m
If Ustaw_m > 59 Then Ustaw_m = 0
Lcd "Ustaw Minuty: " ; Ustaw_m
Loop Until Command = 4
Cls
Do
Getrc5(Command , Addres)
Command = Command And &B01111111
If Command = 1 Then Incr Ustaw_s
If Command = 2 Then Decr Ustaw_s
If Ustaw_s > 59 Then Ustaw_s = 0
Lcd "Ustaw Sekundy: " ; Ustaw_s
Loop Until Command = 4
I2cstart
I2cwbyte 162
I2cwbyte 2
I2cwbyte Ustaw_s
I2cwbyte Ustaw_m
I2cwbyte Ustaw_h
I2cstop
Cls : Lcd " Zapisano "
Wait 1
Enable Int0
Enable Int1
ReturnProgram zatrzymuje się po wejściu do przerwania "Menu". Co w takim razie robię źle? Z góry pozdrawiam, Polprzewodnikowy.