'Eeprom Countdown 'Atmega8 '--------------------------------------------------------------------------' $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 ' Config Sda = Portc.4 Config Scl = Portc.5 Dim Spalte As Byte ' Position auf dem LC-Display Dim C As Integer Dim X As Byte 'Variable im EEprom (Zeit) Dim A As Byte Dim B As Byte Dim Lesen As Integer At &HA1 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 X = 10 I2cstart 'Start I2C I2cwbyte &HA0 'Sende Slave Adresse I2cwbyte A 'Sende Speicheradresse I2cwbyte X 'Sende Wert I2cstop 'Stop I2C I2cstart 'Start I2C I2cwbyte &HA0 'sende Slave Adresse I2cwbyte B 'sende Speicheradresse I2cstart 'Start I2C I2cwbyte &HA1 'sende Slave Adresse +1 für Lesen I2crbyte Lesen , Nack 'Lese Wert aus EEprom I2cstop If C < 0 Then C = 0 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: Lesen = C Locate 2 , 1 : Lcd "Countdown" ' 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 "Zum Neustatrt" Locate 2 , 1 Lcd "Reset Drücken" ' RESET drücken für Anfangszustand Stop End '--------------------------------------------------------