-
$regfile = "m32def.dat"
$framesize = 32
$swstack = 32
$hwstack = 32
Dim I As Integer
Dim Led As Integer
Led = 0
Config Portc.2 = Input
Config Timer0 = Timer, Prescale = 1024
On Timer0 Timer_irq
Const Timervorgabe = 100
Enable Timer0
Enable Interrupts
Do
If Portc.2 = 1 Then
If Led = 0 Then Led = 1
If Led = 1 Then Led = 0
End If
Waitms 1
Loop
Timer_irq:
Timer0 = Timervorgabe
If I = 30000 Then
Led = 0
I = 0
Elseif Led = 1 Then
Incr I
End If
Return
so gehts. aber sollte man anstatt der beiden if sätze nicht else einsetzen für den letzten if satz?
-
Hää? ich versteh nicht ganz dein Problem?
Nimm doch den Code den ich oben gepostet hab, dieser funktioniert.
Und ja du kannst der Variable taste_gedrueckt irgendeinen anderen Namen zuweisen, nur sollte der nicht mit einer Zahl anfangen!
Edit: ja else kannst du auch machen
-
-
achso noch eine frage an welcher stelle muss ich nun mein programm einfügen?
-
-
also habs jetzt drauf geflasht alles geklappt. nur is die led die ich ansteuere eben net aus sondern ein. und abschalten tut se sich auch net per knopfdruck.
-
und mein erstes programm dass ich in die do schleife geschrieben habe geht auch nimmer
-
$regfile = "m8def.dat"
$crystal = 1000000
$baud = 9600
Config Portb.0 = Output
Config Pinc.0 = Input
Config Portb.1 = Output
Config Pinc.1 = Input
Config Pinc.2 = Input
Portc.0 = 1
Portc.1 = 1
Portc.2 = 1
Portc.3 = 1
Dim I As Integer
Dim Led As Integer
Led = 0
Config Timer0 = Timer , Prescale = 1024
On Timer0 Timer_irq
Const Timervorgabe = 100
Enable Timer0
Enable Interrupts
Do
Do
If Portc.2 = 1 Then
If Led = 0 Then Led = 1
If Led = 1 Then Led = 0
End If
Waitms 1
Loop
Timer_irq:
Timer0 = Timervorgabe
If I = 30000 Then
Led = 0
I = 0
Elseif Led = 1 Then
Incr I
End If
If Pinc.0 = 1 Then
Portb.0 = 1
Portb.1 = 0
Portb.1 = 0
Else
Portb.0 = 0
Wait 3
Portb.1 = 1
Wait 5
Portb.1 = 0
Wait 3
End If
If Pinc.1 = 1 Then
Portb.2 = 1
Portb.3 = 0
Portb.3 = 0
Else
Portb.2 = 0
Wait 3
Portb.3 = 1
Wait 5
Portb.3 = 0
Wait 3
End If
Loop
End
-
habs jetzt mal so geschrieben jetzt geht des programm von mir schon mal wieder aber der timer noch net.
$regfile = "m8def.dat"
$crystal = 1000000
$baud = 9600
Config Portb.0 = Output
Config Pinc.0 = Input
Config Portb.1 = Output
Config Pinc.1 = Input
Config Pinc.2 = Input
Portc.0 = 1
Portc.1 = 1
Portc.2 = 1
Portc.3 = 1
Dim I As Integer
Dim Led As Integer
Led = 0
Config Timer0 = Timer , Prescale = 1024
On Timer0 Timer_irq
Const Timervorgabe = 100
Enable Timer0
Enable Interrupts
Do
Do
If Portc.2 = 1 Then
If Led = 0 Then Led = 1
If Led = 1 Then Led = 0
End If
Waitms 1
If Pinc.0 = 1 Then
Portb.0 = 1
Portb.1 = 0
Portb.1 = 0
Else
Portb.0 = 0
Wait 3
Portb.1 = 1
Wait 5
Portb.1 = 0
Wait 3
End If
If Pinc.1 = 1 Then
Portb.2 = 1
Portb.3 = 0
Portb.3 = 0
Else
Portb.2 = 0
Wait 3
Portb.3 = 1
Wait 5
Portb.3 = 0
Wait 3
End If
Loop
Timer_irq:
Timer0 = Timervorgabe
If I = 30000 Then
Led = 0
I = 0
Elseif Led = 1 Then
Incr I
End If
Loop
End
-
Timer_irq solltest du net in die Do Loop Schleife schreiben.
Außerdem hast du 2 verschachtelte Do Loop Schleifen. Du brauchst nur eine.
Und wenn du willst, dass dein Programm nur innerhalb der 5 Minuten ausgeführt wird solltest du überprüfen ob Variable Led ungleich 0 ist, sprich 1.
Code:
$regfile = "m8def.dat"
$crystal = 1000000
$baud = 9600
Config Portb.0 = Output
Config Pinc.0 = Input
Config Portb.1 = Output
Config Pinc.1 = Input
Config Pinc.2 = Input
Portc.0 = 1
Portc.1 = 1
Portc.2 = 1
Portc.3 = 1
Dim I As Integer
Dim Led As Integer
Led = 0
Config Timer0 = Timer , Prescale = 1024
On Timer0 Timer_irq
Const Timervorgabe = 100
Enable Timer0
Enable Interrupts
Do
If Portc.2 = 1 Then
If Led = 0 Then Led = 1
If Led = 1 Then Led = 0
End If
Waitms 1
If Led = 1 Then
If Pinc.0 = 1 Then
Portb.0 = 1
Portb.1 = 0
Portb.1 = 0
Else
Portb.0 = 0
Wait 3
Portb.1 = 1
Wait 5
Portb.1 = 0
Wait 3
End If
If Pinc.1 = 1 Then
Portb.2 = 1
Portb.3 = 0
Portb.3 = 0
Else
Portb.2 = 0
Wait 3
Portb.3 = 1
Wait 5
Portb.3 = 0
Wait 3
End If
End If
Loop
Timer_irq:
Timer0 = Timervorgabe
If I = 30000 Then
Led = 0
I = 0
Elseif Led = 1 Then
Incr I
End If
Return
So dürfte es funktionieren.
MfG