Sooo ich bin jetzt endlich dazu gekommen mal ein bischen zu programmieren und jetzt gibts leider Probleme... Mein Programm läuft eindeutig auf dem Controller da die Kontroll LED im Sekundentakt blinkt aber leider wird an den Schieberegistern nichts ausgegeben...
Vielleicht kann ja mal jemand drüber schaun:
Code:$regfile = "m8def.dat" $crystal = 8000000 'Ports einstellen Config Portb.0 = Output 'SRData Config Portb.3 = Output 'PWM Config Portd.7 = Output 'SCK Config Portd.6 = Output 'RCK Config Portd.5 = Output 'Reset Config Portd.2 = Output 'LED Config Pinc.3 = Input 'Taster1 Config Pinc.4 = Input 'Taster2 Config Pinc.5 = Input 'Taster3 'Alias definieren Rck Alias Portd.6 Sck Alias Portd.7 Datasr Alias Portb.0 Resetsr Alias Portd.5 Led Alias Portd.2 Pwm Alias Portb.3 Taster1 Alias Pinc.3 Taster2 Alias Pinc.4 Taster3 Alias Pinc.5 'Portpegel setzen Rck = 0 Sck = 0 Datasr = 0 Resetsr = 0 Led = 0 Pwm = 1 Taster1 = 1 Taster2 = 1 Taster3 = 1 'Timer konfigurieren Config Timer1 = Timer , Prescale = 256 Enable Timer1 On Timer1 Sekundentakt Enable Interrupts Timer1 = 34285 'Config Timer2 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Prescale = 1 'Variablen definieren Dim Sekunden As Integer Dim Minuten As Byte Dim Stunden As Byte Sekunden = 0 Minuten = 0 Stunden = 12 'Bitmuster erstellen und Array befüllen Dim Stundenarray(12) As Word Dim Minutenarray(12) As Byte Dim I As Byte Dim Stdpos As Byte Dim Minpos As Byte Minutenarray(1) = &B00000000 'Voll Minutenarray(2) = &B10000001 'Fünf nach Minutenarray(3) = &B10000010 'Zehn nach Minutenarray(4) = &B00010001 'Viertel nach Minutenarray(5) = &B00100110 'Zehn vor Halb Minutenarray(6) = &B00100101 'Fünf vor Halb Minutenarray(7) = &B00100000 'Halb Minutenarray(8) = &B00101001 'Fünf nach Halb Minutenarray(9) = &B00101010 'Zehn nach Halb Minutenarray(10) = &B01010000 'Viertel vor Minutenarray(11) = &B01000010 'Zehn vor Minutenarray(12) = &B01000001 'Fünf vor Stundenarray(1) = &B0000000100000000 'Eins Stundenarray(2) = &B0000001000000000 'Zwei Stundenarray(3) = &B0000010000000000 'Drei Stundenarray(4) = &B0000100000000000 'Vier Stundenarray(5) = &B0001000000000000 'Fünf Stundenarray(6) = &B0010000000000000 'Sechs Stundenarray(7) = &B0100000000000000 'Sieben Stundenarray(8) = &B1000000000000000 'Acht Stundenarray(9) = &B0000000000010000 'Neun Stundenarray(10) = &B0000000000100000 'Zehn Stundenarray(11) = &B0000000001000000 'Elf Stundenarray(12) = &B0000000010000000 'Zwölf 'Hauptschleife Do 'Arrayposition berechnen Bsp: Minuten = 3 ===> Arrayposition 1 muss ausgegeben werden Minpos = Minuten / 5 Minpos = Minpos + 1 'Überprüfen ob die Stunde + 1 ausgegeben werden muss. Bsp: 05:31 ===> Halb Sechs Stdpos = Stunden If Minuten >= 5 Then Stdpos = Stdpos + 1 End If 'Stundenarray an der Position "Stunden" in die Schieberegister takten For I = 1 To 16 Step 1 Datasr = Stundenarray(Stunden).I Toggle Sck Toggle Sck Next A 'Minutenarray an der Position "Minpos" in die Schieberegister takten For I = 1 To 8 Step 1 Datasr = Minutenarray(Minpos).I Toggle Sck Toggle Sck Next A 'Latch der Schieberegister auf Ausgänge schalten Toggle Rck Toggle Rck 'In Idle Mode wechseln zum strom sparen und um unnötiges beschreiben der Schieberegister 'zu vermeiden. Geweckt wird im Sekundentakt des Timers. POWER IDLE Loop End 'Interrupt Routine für den Timer1. Läuft Sekündlich über. Sekundentakt: Timer1 = 34285 Toggle Led If Sekunden < 59 Then Sekunden = Sekunden + 1 Else Sekunden = 1 Minuten = Minuten + 1 End If If Minuten >= 59 Then Minuten = 0 Stunden = Stunden + 1 End If If Stunden > 12 Then Stunden = 1 Minuten = 0 End If Return
Wo liegt mein Fehler? Falls Ihr mehr Infos braucht dann geb ich die natürlich so bald wie möglich raus. Danke schonmal!
Edit: Hier schonmal der Schaltplan falls der auch von interesse ist:
http://rapidshare.com/files/440502830/Qlocktwo.pdf







Zitieren
Lesezeichen