$regfile "Attiny2313.dat" ' we gebruiken de attiny2313 $crystal = 4000000 ' op 4mhz Config Timer1 = Timer , Prescale = 256 , Compare A = Disconnect , Clear Timer = 1 ' timer1 gebruiken als timer, geklokt met 4mhz / 256 bij compare met Comare1a als de waarde bereikt is intrupt geven en ' opnieuw beginnen met tellen. Rem dat wil zeggen dat timer1 15625 per seconde verhoogd word. Compare1a = 15625 ' bij 15625 moet de interupt worden getriggerd. Enable Interrupts ' maak interrupts mogelijk Enable Compare1a ' maak timer 1 interupt mogelijk On Compare1a Timecount ' ga naar het label minute bij deze interupt Dim Seccondes As Byte ' in deze var (bytesize) gaan we de seconden tellen Dim Minuten As Byte ' minuten (losse) Dim Uren As Byte ' en de losse uren. Dagen etc doen we (nog) niet aan. Seccondes = 0 ' we beginnen op 0 Minuten = 0 Uren = 0 Rem alles begint op 0 Config Portb.5 = Input 'alles als inpout = leds lichten niet of slechts zwak op Config Portb.6 = Input Portb.5 = 1 'pullups voor de schakelaars Portb.6 = 1 Do While Pinb.5 = 0 'als je eerst de ene, en dan de ander schakelaar bediend er een minuut bijtellen If Pinb.6 = 0 Then Config Portd = Output Config Portb = Output Config Portb.5 = Input Config Portb.6 = Input Portb.5 = 1 Portb.6 = 1 Minuten = Minuten + 1 Wait 1 End If Config Portb = Output ' als je alleen de ene schakelaar bedient, dan de led's aandoen Config Portd = Output Wend While Pinb.6 = 0 'als je eerst de andere en dan de ene schakelaar bediend er een uur bijtellen If Pinb.5 = 0 Then Config Portd = Output Config Portb = Output Config Portb.5 = Input Config Portb.6 = Input Portb.5 = 1 Portb.6 = 1 Uren = Uren + 1 Wait 1 End If Config Portb = Input 'anders alleen de led's dimmen/uitdoen Config Portd = Input Wend 'in de tussentijd (als er niet op schakelaars word gedrukt of word geinterupt) mag de controller lekker slapen Idle Loop Timecount: ' interrupts staan vanzelf uit in interupt service routine, op harwarebasis. Toggle Portb.4 ' laat de led op portb.4 om de seconde knipperen Seccondes = Seccondes + 1 ' we tellen 1 seconde bij de secondes op If Seccondes = 60 Then ' als we zo gelukking zijn 60 seccondes te tellen Minuten = Minuten + 1 ' 1 minuut erbij Seccondes = 0 ' en de seconden weer op 0 End If ' einde van deze ifthenlus If Minuten = 60 Then ' mochten we nu 60 minuten hebben Minuten = 0 ' dan mag dat eigenlijk helemaal niet, en worden t er weer 0 Uren = Uren + 1 ' want dan hebben we 1 uur End If If Uren = 24 Then ' als we 24 uur hebben Uren = 0 ' dan hebben we 0 uur End If Weergeven: ' Eerst de minuten tonen Portd.5 = Minuten.0 Portd.4 = Minuten.1 Portd.3 = Minuten.2 Portd.2 = Minuten.3 Portd.1 = Minuten.4 Portd.0 = Minuten.5 ' En dan de uren Portd.6 = Uren.0 Portb.0 = Uren.1 Portb.1 = Uren.2 Portb.2 = Uren.3 Portb.3 = Uren.4 Return ' en ga maar terug Rem return (ga terug) naar het hoofdprogramma, Rem er moeten wat LED's licht gaan geven! '