'--------------------------------------------------------------------------' ' ' Timer ' ' angelehnt an das Programm von Matthias Franz, HB9EFY im Dezember 2007 ' ' Benutzung auf eigene Gefahr, keine Garantie ' keine Gewährleistung ' ' Berechnung des Timer1 Startwertes: ' 65535 - (Quarzfrequenz / Vorteiler) ' 65535 - (16000000 Hz / 256) ' = 3035 ' ' ' Starttaster Port B, Pin 2 ' ' ' Relais Port B, Pin 3 ' ' ' VIEL SPASS ' Matthias ' '--------------------------------------------------------------------------' $regfile = "m8def.dat" ' BASCOM AVR Steuerdatei für ATmega8 $crystal = 3686400 ' 3,6864 Mhz Quarz '------------------------------------------------------------------------------ ' Initialisierung des LCD Displays (unveränderte Standardbelegung) ' Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2 Config Lcdbus = 4 Cls Cursor Off Noblink ' '------------------------------------------------------------------------------ ' ' Dimensionierung der verwendeten Variablen ' Dim Spalte As Byte ' Position auf dem LC-Display Dim C As Integer Dim Ce As Eram Integer 'Variable im EEprom (Zeit) Config Pinb.5 = Output 'Ausgang für den Alarmton (derzeit NICHT BENUTZ) Config Pinb.3 = Output 'Ausgang für Relais Portb.5 = 0 'Alarmton AUS (DERZEIT NICHT BENUTZT) Portb.3 = 0 'Relais AUS C = 10 'Wert für die Zeit aus Eeprom holen If C < 0 Then ' Entsprechend dem Wert im Eeprom (ein-, zwei- oder mehrstellig) C = 0 ' wird die Position auf dem LCD angepasst Spalte = 11 End If If C >= 0 Then Spalte = 11 If C >= 10 Then Spalte = 10 If C >= 100 Then Spalte = 9 '------------------------------------------------------------------------------ ' Locate 1 , 1 : Lcd "Zeit:" : Locate 1 , Spalte : Lcd C Locate 1 , 13 : Lcd "sec." '------------------------------------------------------------------------------ ' Countdown - sub - routine ' Countdown: Ce = C 'Belichtungszeit in Eeprom schreiben Locate 2 , 1 : Lcd "Restzeit" ' LCD Zeile 2 löschen On Timer1 Ontimer1 Config Timer1 = Timer , Prescale = 1024 ' Vorteiler für Timer1 Enable Timer1 Enable Interrupts Portb.3 = 1 'Relais (Belichtung) EIN '--------------------------------------------------------- Timer1 = 61935 Do If C = 0 Then Goto Countdown_stop If C < 100 Then Spalte = 10 Locate 1 , 9 : Lcd " " End If If C < 10 Then Spalte = 11 Locate 1 , 10 : Lcd " " End If Locate 1 , Spalte : Lcd C Loop '--------------------------------------------------------- Ontimer1: Timer1 = 61935 C = C - 1 Return '--------------------------------------------------------- ' ' Countdown STOP ' Countdown_stop: Portb.3 = 0 'Relais AUS Portb.5 = 1 'Alarmton AN (DERZEIT NICHT BENUTZT) Cls ' LCD: Endmeldung angeben Locate 1 , 1 Lcd "Für Neustart" Locate 2 , 1 Lcd "Reset Drücken" ' RESET drücken für Anfangszustand Stop End