-         

Ergebnis 1 bis 2 von 2

Thema: probleme mit lauflicht, timer und toggle

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    06.03.2006
    Beiträge
    25

    probleme mit lauflicht, timer und toggle

    Anzeige

    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

    Code:
       $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

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    01.03.2004
    Ort
    Bielefeld (JA, das gibt es!)
    Alter
    29
    Beiträge
    1.614
    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
    Ich will Microsoft wirklich nicht zerstören. Das wird nur ein gänzlich unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds, Entwickler von Linux

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •