wolleausmallo
25.04.2007, 14:33
Hallo Zusammen. Mein Code funktioniert bis auf den Idle-Modus. Bitte helft mir den Fehler zu finden:
$regfile = "2313def.dat"
$crystal = 3686400 '64
Config Timer1 = Timer , Prescale = 64 'Vorteiler der Quarzfrequenz
Config Timer0 = Timer , Prescale = 64
Config Pinb.2 = Output 'Pinb.2 als Sekundenanzeige
Led3 Alias Portb.2 'Anderer Name für Portb.2
Config Pinb.7 = Output '-------Pinb.7 als Motorschalter
Config Pinb.1 = Input '-------Pin für die Sommerprogrammierung(Kontrollpin)
Kontrollpin Alias Pinb.1 '--------Alias für die Sommer/Winterprogrammierung
'Config Pinb.3 = Input
'Powerpin Alias Portb.3
Config Pind.2 = Input 'Powercontrol (Stromausfallindikator)
Powercontrol Alias Pind.2
Mcucr = &B00111000
On Timer1 Timer_irq
Const Timervorgabe = 7936 'Bei Interruptanforderung Sprung und Timervoreinstellung
Enable Timer0
Start Timer0
On Int0 Int0_isr
Enable Int0
Enable Timer1 'Timer1-Freigabe(Zeitbasis 1Sek)
Enable Interrupts ' Dimensionierungen
Dim Sekunde As Byte
Dim Minute As Byte
Dim Stunde As Byte
Dim Motor As Byte
Declare Sub An 'Declarationen der Unterprogramme
Declare Sub Aus
Declare Sub Sommer
Declare Sub Winter
Declare Sub Aufwachen
'Portd.2 = 0
Portb.1 = 1
Portb.3 = 0
Portb.7 = 0 ' Relaisausgang auf 0
Stunde = 12
'Endlosschleife mit Hauptprogramm
Do
While Pind.2 = 0
Led3 = 0
Portb.7 = 0
Idle
Wend
If Kontrollpin = 0 Then Gosub Sommer
If Kontrollpin = 1 Then Gosub Winter
Loop
Sommer: 'Unterprogramm für den Sommer
If Stunde = 12 Then Gosub An
If Stunde = 20 Then Gosub An
If Stunde = 14 Then Gosub Aus
If Stunde = 22 Then Gosub Aus
'Stunde = 24 dann von vorne
Return
Winter: 'Unterprogramm für den Winter
If Stunde = 0 Then Gosub An
If Stunde = 12 Then Gosub An
If Stunde = 3 Then Gosub Aus
If Stunde = 13 Then Gosub Aus
Return
An: 'Unterprogramm Motor an
Portb.7 = 1
Return
Aus: 'Unterprogramm Motor aus
Portb.7 = 0
Return
Int0_isr: 'Interrupt für das Aufwachen
Return
Timer_irq: 'Interruptroutine für 1 Sekunde Zeitschleife
Timer1 = Timervorgabe
Toggle Led3
Incr Sekunde
Print Sekunde
If Sekunde = 60 Then 'Zählschleifen für Sekunden - Minuten - und Stunden
Incr Minute
Sekunde = 0
If Minute = 60 Then
Incr Stunde
Minute = 0
If Stunde = 24 Then
Stunde = 0
Minute = 0
Sekunde = 0
End If
End If
End If
Return
Grüße
Wolle
$regfile = "2313def.dat"
$crystal = 3686400 '64
Config Timer1 = Timer , Prescale = 64 'Vorteiler der Quarzfrequenz
Config Timer0 = Timer , Prescale = 64
Config Pinb.2 = Output 'Pinb.2 als Sekundenanzeige
Led3 Alias Portb.2 'Anderer Name für Portb.2
Config Pinb.7 = Output '-------Pinb.7 als Motorschalter
Config Pinb.1 = Input '-------Pin für die Sommerprogrammierung(Kontrollpin)
Kontrollpin Alias Pinb.1 '--------Alias für die Sommer/Winterprogrammierung
'Config Pinb.3 = Input
'Powerpin Alias Portb.3
Config Pind.2 = Input 'Powercontrol (Stromausfallindikator)
Powercontrol Alias Pind.2
Mcucr = &B00111000
On Timer1 Timer_irq
Const Timervorgabe = 7936 'Bei Interruptanforderung Sprung und Timervoreinstellung
Enable Timer0
Start Timer0
On Int0 Int0_isr
Enable Int0
Enable Timer1 'Timer1-Freigabe(Zeitbasis 1Sek)
Enable Interrupts ' Dimensionierungen
Dim Sekunde As Byte
Dim Minute As Byte
Dim Stunde As Byte
Dim Motor As Byte
Declare Sub An 'Declarationen der Unterprogramme
Declare Sub Aus
Declare Sub Sommer
Declare Sub Winter
Declare Sub Aufwachen
'Portd.2 = 0
Portb.1 = 1
Portb.3 = 0
Portb.7 = 0 ' Relaisausgang auf 0
Stunde = 12
'Endlosschleife mit Hauptprogramm
Do
While Pind.2 = 0
Led3 = 0
Portb.7 = 0
Idle
Wend
If Kontrollpin = 0 Then Gosub Sommer
If Kontrollpin = 1 Then Gosub Winter
Loop
Sommer: 'Unterprogramm für den Sommer
If Stunde = 12 Then Gosub An
If Stunde = 20 Then Gosub An
If Stunde = 14 Then Gosub Aus
If Stunde = 22 Then Gosub Aus
'Stunde = 24 dann von vorne
Return
Winter: 'Unterprogramm für den Winter
If Stunde = 0 Then Gosub An
If Stunde = 12 Then Gosub An
If Stunde = 3 Then Gosub Aus
If Stunde = 13 Then Gosub Aus
Return
An: 'Unterprogramm Motor an
Portb.7 = 1
Return
Aus: 'Unterprogramm Motor aus
Portb.7 = 0
Return
Int0_isr: 'Interrupt für das Aufwachen
Return
Timer_irq: 'Interruptroutine für 1 Sekunde Zeitschleife
Timer1 = Timervorgabe
Toggle Led3
Incr Sekunde
Print Sekunde
If Sekunde = 60 Then 'Zählschleifen für Sekunden - Minuten - und Stunden
Incr Minute
Sekunde = 0
If Minute = 60 Then
Incr Stunde
Minute = 0
If Stunde = 24 Then
Stunde = 0
Minute = 0
Sekunde = 0
End If
End If
End If
Return
Grüße
Wolle