Hi Leute! Vorweg: ich bin noch ein blutiger Anfänger beim Programmieren! Ich hab ein kleines Problem! Ich will mit einer Infrarotfernbedienung 2 Zahlen eingeben und nach der "Enter"-Taste sollen diese auf einer 7Segment anzeige erscheinen. Das ganze funktioniert schon ganz gut! Nur: das mit dem multiplexen der Anzeige haut nicht so ganz hin weil scheinbar das Programm für das auswerten vom rc5 (getrc5) zulange braucht. Jetzt blinkt die erste anzeige. Gibt es da eine möglichkeit ein Unterprogramm für's Multiplexen im Hintergrund laufen zu lassen??? mfg Klaus
Klaus O. wrote: > Gibt es da eine möglichkeit ein Unterprogramm für's Multiplexen im > Hintergrund laufen zu lassen??? Wieviele Kerne hat Dein uC? Olli
Tu das Multiplexen in nen Timer-Interrupt und gut ist.
>cheinbar das Programm für das auswerten vom rc5 (getrc5) zulange braucht.
Sind dort etwa delays drin??
Das RC5 dekodieren geschieht doch auch im Timer interrupt...
Also bis jetzt hab ich das:
$regfile = "m32def.dat"
$framesize = 1000
$swstack = 1000
$hwstack = 1000
$crystal = 16000000
$baud = 9600
Config Portc = Output
Ddra = &B00000011
Seg1 Alias Porta.0
Seg2 Alias Porta.1
Config Rc5 = Pina.3
Enable Interrupts
Dim Address As Byte , Command As Byte , Seg1_var As Byte , Seg2_var As
Byte , Eingabe As Byte
Dim Einer As Byte , Zehner As Byte , Zahl As Byte , Enter As Bit ,
Erste_fertig As Bit
Do
Getrc5(address , Command)
Command = Command And &B01111111
'Print Address ; " " ; Command
'Print Zehner ; " " ; Einer ; " " ; Enter
If Address = 255 Then
Erste_fertig = 0
Goto Weiter
End If
If Command < 10 And Zahl = 0 Then 'zehner
Zehner = Command
Zahl = 1
Erste_fertig = 1
End If
If Command < 10 And Zahl = 1 And Erste_fertig = 0 Then 'einer
Einer = Command
Zahl = 2
End If
If Command = 87 And Zahl = 2 Then 'enter
Enter = 1
Zahl = 0
End If
Weiter:
If Command = 41 Then 'löschen
Enter = 0
End If
If Enter = 1 Then
Seg1_var = Lookup(zehner , Anzeige)
Seg2_var = Lookup(einer , Anzeige)
Seg1 = 1
Seg2 = 0
Portc = Seg1_var
Waitms 5
Seg1 = 0
Seg2 = 1
Portc = Seg2_var
Waitms 5
Else
Seg1 = 0
Seg2 = 0
End If
Loop
End
Anzeige:
Data 63 , 6 , 91 , 79 , 102 , 109 , 125 , 7 , 127 , 111
' 0 1 2 3 4 5 6 7 8 9
Mit Timern hab ich noch nicht wirklich erfahrung gemacht...
Hat wer verbesserungsvorschläge?
Irgendwelche Fehler?
>Mit Timern hab ich noch nicht wirklich erfahrung gemacht...
Dann wirst du es jetzt wohl oder übel machen müssen.
>Tu das Multiplexen in nen Timer-Interrupt und gut ist.
Das wars'
DANKE!!!!!
lg
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.