hmm, aber ich benutze ja gar keine timer, sondern nur nen stinknormalen externen interrupt, oder geht dass vllt net, weil er dann ne falsche rücksprungaddresse hat?
oder funzt des net mit int2
hmm, ich habs glaubich schon mal per interrupt gesehn, ich such dann mal wo...
edit:
also jetzt funzts:
Code:
'LED Controller
'--------------------------------------------------------------
$regfile = "m16def.dat"
$crystal = 16000000
Mcucsr.4 = 1
Mcucsr.4 = 1
Config Porta = 255
Config Portc = 255
Config Portd = 0&11111111
Config Portb = 0&00011001
Config Rc5 = Pinb.2
Config Int2 = Falling
On Int2 Interrupt
Enable Int2
'Config Lcdmode = Port
'Config Lcdbus = 4
'Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , Rs = Portb.0 , E = Portb.3
'Config Lcd = 16 * 2
'Initlcd
Dim Address As Byte , Command As Byte
Dim Onoff As Bit
Porta = 255 'LEDs an
Portc = 255
'Cls
'Cursor Off Noblink
'Lcd " LED Controller "
'Lowerline
'Lcd " Testversion"
Enable Interrupts
Mainloop2:
'Lowerline
'Lcd "Warte auf RC5.."
Do
Loop
Interrupt:
Disable Int2
Waitms 100 'auf zweiten gesendeten Code warten (Code wird alle 113ms wiederholt)
Enable Interrupts
Getrc5(address , Command)
Command = Command And &B01111111
If Address < 255 Then
'Lowerline
'Lcd ; "Adr: " ; Address ; " Cmd: " ; Command ; " "
If Address = 8 Then
Select Case Command
Case 1 : Toggle Porta.0
Case 2 : Toggle Porta.1
Case 3 : Toggle Porta.2
Case 4 : Toggle Porta.3
Case 5 : Toggle Porta.4
Case 6 : Toggle Porta.5
Case 7 : Toggle Porta.6
Case 8 : Toggle Porta.7
Case 9 : Toggle Portc.7
Case 49 : Toggle Portc.6
Case 0 : Toggle Portc.5
Case 41 : Toggle Portc.4
Case 35 : Toggle Portc.3
Case 15 : Toggle Portc.2
Case 63 : Toggle Portc.1
Case 26 : Toggle Portc.0
Case 12 :
If Onoff = 0 Then
Portc = 255
Porta = 255
Onoff = 1
Elseif Onoff = 1 Then
Portc = 0
Porta = 0
Onoff = 0
End If
End Select
End If
End If
Enable Int2
Return
allerdings muss ich auf den zweiten gesendeten code warten, da er sonst den ersten nicht 100%ig erkennt
Lesezeichen