Blinkdauer und Pause können unter Blinken geändert werden
$hwstack = 20 'hardwarestack herabsetzen damit genügend variablen zur verfügung stehen
$regfile = "ATtiny13.DAT"
$crystal = 128000 'Frequenz des internen Oszillators
Config Adc = Single , Prescaler = Auto
Config Portb = &B00001000 'Pinb.3 auf 'Ausgang', Rest auf 'Eingang' schalten
Portb = 0 'Ausgänge auf Low setzen
Stop Ac 'Analog-Komparator abschalten, um Strom zu sparen
Wdtcr = &B11010011 'Watchdog definieren: 0.125 Sekunden, Interrupt auslösen, kein Reset
Enable Interrupts 'Interrupts freigeben
Const Tagschwelle = 800 'Schwellwert für Schlafmodus
Dim A As Byte 'Variablen definieren
Dim Ldr As Integer '0 = Dunkel, 1023 = Hell
Do
Reset Watchdog
Powerdown 'prozessor bremsen da sonst lichtänderung nicht erkannt wird
Start Adc 'A/D-Wandler starten
Ldr = Getadc(2) 'Helligkeitswert einlesen
Stop Adc 'A/D-Wandler zum Stromsparen wieder stoppen
If Ldr > Tagschwelle Then Gosub Pause 'wenn Helligkeit zu groß dann schlafen
If Ldr < Tagschwelle Then Gosub Blinken 'sonst Blinken
Loop
Blinken: 'LED blinken lassen
Portb.3 = 1
For A = 1 To 1 'je größer A umso länger ist die LED an
Reset Watchdog
Powerdown
Next A
Portb.3 = 0
For A = 1 To 30
'je größer A umso länger ist die LED aus
Reset Watchdog
Powerdown
Next A
Return
Pause:
Wdtcr = &B11110001 'Watchdog auf 8 Sekunden stellen
Reset Watchdog
Powerdown
Wdtcr = &B11010011 'Watchdog wieder auf 0,125 Sekunden zurückstellen
Return
End
Comments (0)
You don't have permission to comment on this page.