PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : probleme mit lauflicht, timer und toggle



bigeggmc
23.03.2006, 20: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

x-ryder
25.03.2006, 09:26
ehm was soll das programm machen, bzw. welches licht soll wann angehen, dann schreibich dafür nochmal nen schöneren quellcode, das iss ja voll das durcheinander da, aber ne gute struktur ;-)

dann kannich dir vllt auch mal erklärn, was an deinem lauflicht nicht lauflichtet ^^

Martin