Habe nicht getestet. Wäre ein Versuch wert.
Code:'Konfiguration µC: $regfile = "m8def.dat" 'AT-Mega8 $crystal = 16000000 'Quarz: 16 MHz $baud = 38400 'Baudrate definieren $hwstack = 64 ' default use 32 for the hardware stack $swstack = 64 ' default use 10 for the SW stack $framesize = 64 '------------------------------------------------------------------------------- 'Ein- Ausgänge: Ddrb = &B11111111 '1 Ausgang, 0 Eingang => Pin PB7-0 als Ausgang Ddrc = &B11111111 '1 Ausgang, 0 Eingang => Pin PB7-0 als Ausgang Portb = 0 Portc = 0 '------------------------------------------------------------------------------- 'Timer0 = 8 Bit 'wird für RC5 Auswertung benötigt!!! Config Rc5 = Pind.3 'Timer0 in Benutzung!!! Portd.3 = 1 'Pull Up für Empfänger '16Bit Timer: Config Timer1 = Timer , Prescale = 256 On Timer1 Timer1_irq Const Timervorgabe = 64911 '100 mal pro Sekunde Enable Timer1 Enable Interrupts '------------------------------------------------------------------------------- 'Variablen: '------------------------------------------------------------------------------- Dim Address As Byte , Command As Byte , Command_old As Bit , Flag As Bit 'RC5 'Taste lange gedrückt 'Dim Taste_lang As Word 'Taste 1-6 auf der FB Dim T1 As Byte , T2 As Byte , T3 As Byte ' , T4 As Byte , T5 As Byte , T6 As Byte 'Lampe 1-12 'Dim L1s As Bit , L2s As Bit , L3s As Bit , L4s As Bit , L5s As Bit , L6s As Bit , L7s As Bit , L8s As Bit , L9s As Bit , L10s As Bit , L11s As Bit , L12s As Bit , Dim Empfang As Bit 'ist 0 wenn kein empfang also 255 von address Dim Sek As Byte 'wenn = 100 dann 1 sec um Dim L As Integer 'Lampen festlegen '------------------------------------------------------------------------------- 'Vor Programmstart: 'alle Lampen aus: Const An = 1 Const Aus = 0 Const Nichts = 255 T3 = Nichts '------------------------------------------------------------------------------- '------------------------------------------------------------------------------- 'Hauptprogramm Do...Loop '------------------------------------------------------------------------------- '------------------------------------------------------------------------------- Print "Programm Start 38400 Baud..." Do '------------------------------------------------------------------------------- 'Rc5 Code einlesen: Getrc5(address , Command) 'Print "Address: " ; Address 'Print "Command: " ; Command '------------------------------------------------------------------------------- 'RC5 Code umsetzen: If Address = 255 Then 'also kein Signal Empfang = 0 Sek = 0 T3 = Nichts End If If Address = 0 Then 'Adresse 0=TV FB If Empfang = 0 Then Empfang = 1 ' Timer1 = Timervorgabe 'Timer1 zurücksetzen, damit erst bei Tastendruck gezählt wird 'Print "timerzurück" End If ' If Command.7 = Command_old Then ' Incr Taste_lang ' Else ' Taste_lang = 0 'Variable zurücksetzen ' Command_old = Command.7 ' End If 'Print "Command.7: " ; Command.7 'Print "Taste_lang: " ; Taste_lang 'Command = Command And &B01111111 'reset toggle bit ' Reset Command.7 'reset toggle bit Select Case Command Case 0 : Print "CASE = 0" Case 1 : T1 = 1 T2 = 2 Gosub Lampe1 Case 2 : T1 = 3 T2 = 4 Gosub Lampe1 Case 3 : T1 = 5 T2 = 6 Gosub Lampe1 Case 4 : T1 = 7 T2 = 8 Gosub Lampe1 Case 5 : T1 = 9 T2 = 10 Gosub Lampe1 Case 6 : T1 = 11 T2 = 12 Gosub Lampe1 Case Else : Print "Fehler: " ; Command End Select End If '_______________________________________________________________________________ Loop End '------------------------------------------------------------------------------- 'Relais ansteuern '------------------------------------------------------------------------------- Lampe1: '============= If T3 = Nichts Then If L.t1 = 0 Then T3 = An Else T3 = Aus End If End If If Sek < 200 Then If T3 = An Then Set L.t1 Print "L" ; T1 ; ":1" Else Reset L.t2 Print "L" ; T2 ; ":0" End If Else If T3 = An Then Set L.t2 Print "L" ; T2 ; ":1" Else Reset L.t1 Print "L" ; T1 ; ":0" End If End If Gosub Setzen Return Timer1_irq: Timer1 = Timervorgabe If Empfang = 1 Then If Sek < 255 Then Incr Sek End If End If Return Setzen: Portc.5 = L.1 Portc.4 = L.2 Portc.3 = L.3 Portc.2 = L.4 Portc.1 = L.5 Portc.0 = L.6 Portb.5 = L.7 Portb.4 = L.8 Portb.3 = L.9 Portb.2 = L.10 Portb.1 = L.11 Portb.0 = L.12 Return







Zitieren

Lesezeichen