'Programmierbeispiel von www.marwedels.de/malte 'Programmierung mittels Bascom AVR 'Programmierung für den Mikrocontroller ATMEL AT90S4433 'LED Statusanzeige: 'Grün leuchten : Zeichne daten Auf 'Orange kurz leuchten: Schreibe Daten in EEprom 'Orange dauer leuchten: EEprom voll 'Rot Dauerleuchten: Aufzeichnung abgebrochen (durch Taste) 'Grün blinken: Sende aufgezeichnete Daten an RS232 'Version 1.00 $crystal = 8000000 Config Portd = Input Config Portb = &B00000101 Config Portc = Input Config Adc = Single , Prescaler = Auto Start Adc Config Timer1 = Timer , Prescale = 256 Dim Sekunde As Word Dim Ad0 As Word Dim Ad1 As Word Dim Ad2 As Word Dim Allad As Long Dim Temp As Long Dim Table(62) As Eram Long Dim Posi As Byte Dim Savebit As Byte 'Dieser Wert sagt, nach wie viel Sekunden jeweils aufgezeichnet werden soll Const Beisec = 120 Set Portb.2 Wait 1 Reset Portb.2 Main: If Pind.4 = 1 Then 'übrtrage alle daten über die rs232 schnittstelle (weiße taste) Goto Sende End If If Pind.5 = 0 Then 'starte aufzeichnung (rote taste) Goto Aufzstart End If Goto Main Sende: Reset Portb.2 For Posi = 1 To 60 Allad = Table(posi) Toggle Portb.0 Waitms 100 Print Allad Next Reset Portb.0 Goto Main Aufzstart: Set Portb.0 'grüne LED an Set Portb.2 'rote LED aus Wait 2 Posi = 0 Sekunde = 0 Savebit = 1 If Table(1) >= &B1000000000000000000000000000000 Then Savebit = 0 End If Reset Portb.2 'rote LED aus Timer1 = 0 Start Timer1 Warteschleife: 'Ruft nach einer bestimmten Zeit (in Minuten) ein Unterprogramm auf If Timer1 => 31250 Then Timer1 = 0 Incr Sekunde End If If Sekunde = Beisec Then Sekunde = 0 Goto Adlesen End If If Pind.5 = 0 Then 'abbruch der aufzeichnung Set Portb.2 Reset Portb.0 Wait 2 Goto Main End If If Posi => 60 Then 'Speicher voll Set Portb.2 Goto Main End If Goto Warteschleife Adlesen: Incr Posi Set Portb.2 Ad0 = Getadc(0) Ad1 = Getadc(1) Ad2 = Getadc(2) Allad = Ad0 Temp = Ad1 * 1024 Allad = Allad + Temp Temp = Ad2 * 1048576 Allad = Allad + Temp If Savebit = 1 Then Allad = Allad + &B1000000000000000000000000000000 End If Table(posi) = Allad Waitms 200 Reset Portb.2 Goto Warteschleife