bigeggmc
23.03.2006, 21:51
namd
ich glaub das ja nun nicht wa ;) also wie gut das ich noch am lernen bin sonst wärs bestimmt peinlich oder so :-&
ich hab nun schon hier im forum durch hilfe herraufinden können was toggle ist ;)
dann auch noch wie man mit toggle nen prog starten kann, soweit so gut
aber ich hatte dummerweise meine lauflichter mit nem wait befehl geprogt, nun da der controller ja nun in der waitperioden nichts tut, nahm er auch keine befehle zum abschalten mehr entgegen, einschalten ging wunderbar.
also hab ich das ganze mit nem timer versucht, es sind allerdings 3 lauflicht progs in einem... naja seht selbst, evt kann mir ja jemand helfen, aber seit gnädig ich bin noch anfänger und hab nicht ein buch hier ;)
$regfile = "m8def.dat"
Config Timer1 = Timer , Prescale = 1
Ddrb = &B00001111
Config Portc = Output
Config Portd = Output
Portb = &B00001111
Dim C As Byte
C = &B11001100
Dim B As Byte
B = &B11111000
Dim A As Byte
A = &B11000000
Dim Licht As Byte
Dim Lauflicht1 As Bit
Dim Lauflicht2 As Bit
Dim Lauflicht3 As Bit
Portd = &B00000000
On Timer1 Timer_irq
Const Timervorgabe = 64536
Enable Timer1
Enable Interrupts
Do
If Pinb.0 = 0 And Pinb.1 = 1 And Pinb.2 = 1 And Pinb.3 = 1 Then
Waitms 80
If Pinb.0 = 0 And Pinb.1 = 1 And Pinb.2 = 1 And Pinb.3 = 1 Then Toggle Portc.1
End If
If Pinb.0 = 1 And Pinb.1 = 0 And Pinb.2 = 1 And Pinb.3 = 1 Then
Waitms 80
If Pinb.0 = 1 And Pinb.1 = 0 And Pinb.2 = 1 And Pinb.3 = 1 Then Toggle Portc.2
End If
If Pinb.0 = 1 And Pinb.1 = 1 And Pinb.2 = 0 And Pinb.3 = 1 Then
Waitms 80
If Pinb.0 = 1 And Pinb.1 = 1 And Pinb.2 = 0 And Pinb.3 = 1 Then Toggle Portc.3
End If
If Pinb.0 = 1 And Pinb.1 = 1 And Pinb.2 = 1 And Pinb.3 = 0 Then
Waitms 80
If Pinb.0 = 1 And Pinb.1 = 1 And Pinb.2 = 1 And Pinb.3 = 0 Then Toggle Portc.4
End If
If Pinb.0 = 1 And Pinb.1 = 0 And Pinb.2 = 0 And Pinb.3 = 1 Then
Waitms 80
If Pinb.0 = 1 And Pinb.1 = 0 And Pinb.2 = 0 And Pinb.3 = 1 Then Toggle Portc.5
End If
If Pinb.0 = 0 And Pinb.1 = 1 And Pinb.2 = 0 And Pinb.3 = 1 Then
Portc = &B00000000
End If
If Pinb.0 = 0 And Pinb.1 = 0 And Pinb.2 = 1 And Pinb.3 = 0 Then
Waitms 80
If Pinb.0 = 0 And Pinb.1 = 0 And Pinb.2 = 1 And Pinb.3 = 0 Then Toggle Lauflicht1
End If
If Lauflicht1 = 1 Then
Portd = A
If Licht = 149 Or Licht = 74 Then
Rotate A , Left , 1
End If
If Pinb.0 = 0 And Pinb.1 = 1 And Pinb.2 = 1 And Pinb.3 = 0 Then
Waitms 80
If Pinb.0 = 0 And Pinb.1 = 1 And Pinb.2 = 1 And Pinb.3 = 0 Then Toggle Lauflicht2
End If
If Lauflicht2 = 1 Then
Portd = B
If Licht = 148 Or Licht = 73 Then
Rotate B , Right , 1
End If
If Pinb.0 = 1 And Pinb.1 = 1 And Pinb.2 = 0 And Pinb.3 = 0 Then
Waitms 80
If Pinb.0 = 1 And Pinb.1 = 1 And Pinb.2 = 0 And Pinb.3 = 0 Then Toggle Lauflicht3
End If
If Lauflicht3 = 1 Then
Portd = C
If Licht = 147 Or Licht = 72 Then
Rotate C , Left , 1
End If
If Pinb.0 = 0 And Pinb.1 = 0 And Pinb.2 = 1 And Pinb.3 = 1 Then
Portd = &B11111111
Waitms 10
Portd = &B00000000
Waitms 50
Return
Elseif Pinb.0 = 1 And Pinb.1 = 1 And Pinb.2 = 1 And Pinb.3 = 1 Then
Portd = &B00000000
End If
Loop
End
Timer_irq:
Timer1 = Timervorgabe
Incr Licht
If Licht = 150 Then Licht = 1
End If
Return
ich muss noch sagen das ich ne kleine 10er tastatur zur auswahl dran hab, selber gebaut versteht sich ;)
somit spart man ports und um genau zu sein 6 ;) wie ihr im programm seht braucht man dann nur noch 4 ports, man könnte dann theoretisch 15 taster an 4 ports anschließen
gruss, bigeggmc
ich glaub das ja nun nicht wa ;) also wie gut das ich noch am lernen bin sonst wärs bestimmt peinlich oder so :-&
ich hab nun schon hier im forum durch hilfe herraufinden können was toggle ist ;)
dann auch noch wie man mit toggle nen prog starten kann, soweit so gut
aber ich hatte dummerweise meine lauflichter mit nem wait befehl geprogt, nun da der controller ja nun in der waitperioden nichts tut, nahm er auch keine befehle zum abschalten mehr entgegen, einschalten ging wunderbar.
also hab ich das ganze mit nem timer versucht, es sind allerdings 3 lauflicht progs in einem... naja seht selbst, evt kann mir ja jemand helfen, aber seit gnädig ich bin noch anfänger und hab nicht ein buch hier ;)
$regfile = "m8def.dat"
Config Timer1 = Timer , Prescale = 1
Ddrb = &B00001111
Config Portc = Output
Config Portd = Output
Portb = &B00001111
Dim C As Byte
C = &B11001100
Dim B As Byte
B = &B11111000
Dim A As Byte
A = &B11000000
Dim Licht As Byte
Dim Lauflicht1 As Bit
Dim Lauflicht2 As Bit
Dim Lauflicht3 As Bit
Portd = &B00000000
On Timer1 Timer_irq
Const Timervorgabe = 64536
Enable Timer1
Enable Interrupts
Do
If Pinb.0 = 0 And Pinb.1 = 1 And Pinb.2 = 1 And Pinb.3 = 1 Then
Waitms 80
If Pinb.0 = 0 And Pinb.1 = 1 And Pinb.2 = 1 And Pinb.3 = 1 Then Toggle Portc.1
End If
If Pinb.0 = 1 And Pinb.1 = 0 And Pinb.2 = 1 And Pinb.3 = 1 Then
Waitms 80
If Pinb.0 = 1 And Pinb.1 = 0 And Pinb.2 = 1 And Pinb.3 = 1 Then Toggle Portc.2
End If
If Pinb.0 = 1 And Pinb.1 = 1 And Pinb.2 = 0 And Pinb.3 = 1 Then
Waitms 80
If Pinb.0 = 1 And Pinb.1 = 1 And Pinb.2 = 0 And Pinb.3 = 1 Then Toggle Portc.3
End If
If Pinb.0 = 1 And Pinb.1 = 1 And Pinb.2 = 1 And Pinb.3 = 0 Then
Waitms 80
If Pinb.0 = 1 And Pinb.1 = 1 And Pinb.2 = 1 And Pinb.3 = 0 Then Toggle Portc.4
End If
If Pinb.0 = 1 And Pinb.1 = 0 And Pinb.2 = 0 And Pinb.3 = 1 Then
Waitms 80
If Pinb.0 = 1 And Pinb.1 = 0 And Pinb.2 = 0 And Pinb.3 = 1 Then Toggle Portc.5
End If
If Pinb.0 = 0 And Pinb.1 = 1 And Pinb.2 = 0 And Pinb.3 = 1 Then
Portc = &B00000000
End If
If Pinb.0 = 0 And Pinb.1 = 0 And Pinb.2 = 1 And Pinb.3 = 0 Then
Waitms 80
If Pinb.0 = 0 And Pinb.1 = 0 And Pinb.2 = 1 And Pinb.3 = 0 Then Toggle Lauflicht1
End If
If Lauflicht1 = 1 Then
Portd = A
If Licht = 149 Or Licht = 74 Then
Rotate A , Left , 1
End If
If Pinb.0 = 0 And Pinb.1 = 1 And Pinb.2 = 1 And Pinb.3 = 0 Then
Waitms 80
If Pinb.0 = 0 And Pinb.1 = 1 And Pinb.2 = 1 And Pinb.3 = 0 Then Toggle Lauflicht2
End If
If Lauflicht2 = 1 Then
Portd = B
If Licht = 148 Or Licht = 73 Then
Rotate B , Right , 1
End If
If Pinb.0 = 1 And Pinb.1 = 1 And Pinb.2 = 0 And Pinb.3 = 0 Then
Waitms 80
If Pinb.0 = 1 And Pinb.1 = 1 And Pinb.2 = 0 And Pinb.3 = 0 Then Toggle Lauflicht3
End If
If Lauflicht3 = 1 Then
Portd = C
If Licht = 147 Or Licht = 72 Then
Rotate C , Left , 1
End If
If Pinb.0 = 0 And Pinb.1 = 0 And Pinb.2 = 1 And Pinb.3 = 1 Then
Portd = &B11111111
Waitms 10
Portd = &B00000000
Waitms 50
Return
Elseif Pinb.0 = 1 And Pinb.1 = 1 And Pinb.2 = 1 And Pinb.3 = 1 Then
Portd = &B00000000
End If
Loop
End
Timer_irq:
Timer1 = Timervorgabe
Incr Licht
If Licht = 150 Then Licht = 1
End If
Return
ich muss noch sagen das ich ne kleine 10er tastatur zur auswahl dran hab, selber gebaut versteht sich ;)
somit spart man ports und um genau zu sein 6 ;) wie ihr im programm seht braucht man dann nur noch 4 ports, man könnte dann theoretisch 15 taster an 4 ports anschließen
gruss, bigeggmc