Hey,
ich habe mir ein AVR Buch gekauft und bin auch schon ein ganzes stück weiter, blos diese Aufgabe bekomme ich einfach nicht hin. Sitze hier nun schon 6 Stunden am Stück und Probiere. Wäre vielleicht jemand so nett mir zu helfen?
Der Code in meinem Beispiel soll kurz-kurz-lang sein und es soll bei richtiger Eingabe eine Led togglen. Sobald eine Taste falsch eingegeben wurde soll sich alles zurück setzen.
Code:
$regfile = M8def.dat
$crystal = 3686400
Config Portd = Output
Config Portb = Input
Portb = &B000000001
Ledtest Alias Portd.4
Led Alias Portd.3
Taster Alias Pinb.0
'Timer Config (jede 10ms Interrupt)
Enable Timer0
Enable Interrupts
Config Timer0 = Timer , Prescale = 256
Const Timervorgabe = 112
On Timer0 Ueberlauf
Dim Lang As Bit
Dim Kurz As Bit
Dim Zler As Byte
Dim Ged As Bit
Dim Code_lang As Bit
Dim Code_kurz As Bit
Dim Erste_stelle As Bit
Dim Zweite_stelle As Bit
Do
If Kurz = 1 Then 'wenn kurz = 1, dann Code_kurz setzen und kurz = 0
Set Code_kurz
Kurz = 0
End If
If Lang = 1 Then 'wenn lang = 1, dann Code_lang setzen und lang = 0
Set Code_lang
Lang = 0
End If
If Code_lang = 0 Then 'Erste Stelle vom Code (Kurz)
If Code_kurz = 1 Then
Set Erste_stelle
Else
Reset Erste_stelle
End If
End If
If Code_lang = 0 Then 'Zweite Stelle vom Code (Kurz)
If Code_kurz = 1 Then
If Erste_stelle = 1 Then
Set Zweite_stelle
Else
Reset Erste_stelle
Reset Zweite_stelle
End If
End If
End If
If Code_lang = 1 Then 'Dritte Stelle vom Code (Lang)
If Code_kurz = 0 Then
If Erste_stelle = 1 Then
If Zweite_stelle = 1 Then
Toggle Led
Else
Reset Erste_stelle
Reset Zweite_stelle
End If
End If
End If
End If
Loop
Ueberlauf:
Timer0 = Timervorgabe
If Taster = 0 Then 'Wenn Taster gedrückt Zler um einen erhöhen
Incr Zler
End If
If Zler > 100 Then 'Wenn Zler größer als 100 "lang" setzen
Lang = 1
End If
If Zler <= 100 Then 'Wenn zler kleiner oder gleich 100...
If Taster = 1 Then '...und der Taser nicht mehr gedrückt ist...
Kurz = 1 '..."kurz" setzen
End If
End If
If Kurz = 1 Then
Led = 1
End If
If Lang = 1 Then
Led = 0
End If
Return
Lesezeichen