Hallo zusammen,
ich habe mir das LCD-Add-On für mein my-AVR-Programmierboard geholt.
Ich programmiere mir gerade eine Uhr, doch leider funktioniert der DEBOUNCE-Befehl zum Stellen der Uhr nicht.
Folgendes Problem: Sobald ich den Befehl Debounce einfüge, wird das LCD nicht mehr beschrieben.
Ich würde mich sehr freuen, wenn mir jemand auf die Sprünge helfen könnte.
Vielen Dank im Vorraus
Liebe Grüße
Kokusnuss
ich habe mir das LCD-Add-On für mein my-AVR-Programmierboard geholt.
Ich programmiere mir gerade eine Uhr, doch leider funktioniert der DEBOUNCE-Befehl zum Stellen der Uhr nicht.
Folgendes Problem: Sobald ich den Befehl Debounce einfüge, wird das LCD nicht mehr beschrieben.
Ich würde mich sehr freuen, wenn mir jemand auf die Sprünge helfen könnte.
Vielen Dank im Vorraus
Code:
$crystal = 8000000
$regfile = "m8def.dat"
$hwstack = 50
$swstack = 100
$framesize = 100
Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2 'definiere die LCD-Pin's
Config Lcd = 16 * 2 'definiere die Größe des LCD's
Config Portd.3 = Input 'definiere die Eingänge
Config Portd.4 = Input 'definiere die Eingänge
Portd.3 = 1 'Pull_Up's setzen
Portd.4 = 1 'Pull_Up's setzen
Taster_1 Alias Pind.3 'bezeichne die Eingänge
Taster_2 Alias Pind.4 'bezeichne die Eingänge
'- - - - - - - - - - - - - - - - - - - - -
' Uhrzeit-Variablen
'- - - - - - - - - - - - - - - - - - - - -
Dim Sekunden As Integer 'Sekunden
Dim Minuten As Integer 'Minuten
Dim Stunden As Integer 'Stunden
Dim Sekunden_ovrly As String * 2 'Sekunden_String
Dim Minuten_ovrly As String * 2 'Minuten_String
Dim Stunden_ovrly As String * 2 'Stunden_String
Sekunden_ovrly = Str(sekunden) 'gebe Sekunden_String einen Wert
Minuten_ovrly = Str(minuten) 'gebe Minuten_String einen Wert
Stunden_ovrly = Str(stunden) 'gebe Stunden_String einen Wert
Dim Sek_act As Bit 'Aktualisierung Sekunden
Dim Min_act As Bit 'Aktualisierung Minuten
Dim Stu_act As Bit 'Aktualisierung Stunden
Dim Stellenmerker As Byte
'- - - - - - - - - - - - - - - - - - - - -
' Timer-Konfiguration
'- - - - - - - - - - - - - - - - - - - - -
Config Timer1 = Timer , Prescale = 64 'Konfiguriere Timer1
Enable Timer1 'schalte den Timer1 ein
On Timer1 Timer_1 'verzweige bei Timer1 überlauf zu Isr_von_Timer1
Enable Interrupts 'noch keine 1 Hz
Timer1 = 45000
'- - - - - - - - - - - - - - - - - - - - -
'- - - - - - - - - - - - - - - - - - - - -
' HAUPTPROGRAMM
'- - - - - - - - - - - - - - - - - - - - -
'- - - - - - - - - - - - - - - - - - - - -
Initlcd 'initialisier das LCD
Cls 'lösche das Display
Sekunden_ovrly = Format(sekunden_ovrly , "00") 'Sekundenformat vorgeben
Minuten_ovrly = Format(minuten_ovrly , "00") 'Minutenformat vorgeben
Stunden_ovrly = Format(stunden_ovrly , "00") 'Stundenformat vorgeben
Lcd " " + Stunden_ovrly + ":" + Minuten_ovrly + ":" + Sekunden_ovrly + " Uhr" 'Stelle Text/Uhrzeit auf dem Display dar
Locate 2 , 1 'zweite Zeile
Lcd "Test - Programm" 'Stelle Text auf dem Display dar
Cursor Off
Do
If Sek_act = 1 Then
Sekunden_ovrly = Str(sekunden)
Sekunden_ovrly = Format(sekunden_ovrly , "00")
Locate 1 , 9
Lcd Sekunden_ovrly
Sek_act = 0
End If
If Min_act = 1 Then
Minuten_ovrly = Str(minuten)
Minuten_ovrly = Format(minuten_ovrly , "00")
Locate 1 , 6
Lcd Minuten_ovrly
Min_act = 0
End If
If Stu_act = 1 Then
Stunden_ovrly = Str(stunden)
Stunden_ovrly = Format(stunden_ovrly , "00")
Locate 1 , 3
Lcd Stunden_ovrly
Stu_act = 0
End If
Debounce Taster_1 , 0 , Anzeigemodus , Sub
Debounce Taster_2 , 0 , Stellenmodus , Sub
Loop
'- - - - - - - - - - - - - - - - - - - - -
' Anzeigemodus - Sub
'- - - - - - - - - - - - - - - - - - - - -
Anzeigemodus:
Incr Stellenmerker
If Stellenmerker > 2 Then Stellenmerker = 0
Return
'- - - - - - - - - - - - - - - - - - - - -
' Stellenmodus - Sub
'- - - - - - - - - - - - - - - - - - - - -
Stellenmodus:
If Stellenmerker = 1 Then
Incr Stunden
Stu_act = 1
End If
If Stellenmerker = 2 Then
Incr Minuten
Min_act = 1
End If
Return
'- - - - - - - - - - - - - - - - - - - - -
' Timer1 - Routine (1Hz-Takt)
'- - - - - - - - - - - - - - - - - - - - -
Timer_1:
Timer1 = 45000 '45000 bei Prescale = 64 ist --> 1Hz muss noch ermittelt werden
Sek_act = 1 'aktualisiere Sekunden
Incr Sekunden
'-----------------------
' Uhrenablauf
'-----------------------
If Sekunden > 59 Then
Incr Minuten
Min_act = 1
Sekunden = 0
End If
If Minuten > 59 Then
Incr Stunden
Stu_act = 1
Minuten = 0
End If
If Stunden > 23 Then
Stunden = 0
End If
Return
End
Liebe Grüße
Kokusnuss