Device 16F886 ;De 16F886 wordt gebruikt ASM CONFIG_REQ __CONFIG _CONFIG1, WDT_OFF & DEBUG_OFF & FCMEN_OFF & IESO_OFF & BOR_OFF & CPD_OFF & CP_OFF & MCLRE_OFF & PWRTE_ON & LVP_OFF & HS_OSC __CONFIG _CONFIG2, WRT_OFF ENDASM ;config in assembler XTAL 16 ALL_DIGITAL TRUE ;Alle ingangen digitaal PORTB_PULLUPS On ;pull-up weerstanden geactiveerd Symbol num = PORTC ;C poorten noemen nu num Symbol Dig1 = PORTA.0 ;seconden1 = portA.0 Symbol Dig2 = PORTA.1 ;seconden10 = portA.1 Symbol Dig3 = PORTA.2 ;minuten1 = portA.2 Symbol Dig4 = PORTA.3 ;minuten10 = portA.3 Symbol Dig5 = PORTA.4 ;uren1 = portA.4 Symbol Dig6 = PORTA.5 ;uren10 = portA.5 Symbol Chrono = PORTB.5 ;+ 1 Symbol Dat = PORTB.4 ;+ 10 Symbol Slapen = PORTB.0 ;datum tijdelijk weergeven Symbol Plus10 = PORTB.2 ;naar chronostand gaan Symbol Set_clock = PORTB.7 ;reset Symbol Maak00 = PORTB.3 ;start/stop chrono Symbol Stasto = PORTB.1 ;display uit + enable alle toetsen Symbol Plus1 = PORTB.6 ;set de klok Dim Uren10 As Word ;Maak variabele voor klok (voor de 6 digits) Dim Uren1 As Byte ;Maak variabele voor klok (voor de 6 digits) Dim Min10 As Byte ;Maak variabele voor klok (voor de 6 digits) Dim Min1 As Byte ;Maak variabele voor klok (voor de 6 digits) Dim Sec10 As Byte ;Maak variabele voor klok (voor de 6 digits) Dim Sec1 As Byte ;Maak variabele voor klok (voor de 6 digits) Dim Teller As Word ;variabele voor het vorman van precies 1 seconde Dim Knopje As Byte ;variabele voor soort van IOC Dim Instelling As Byte ;variabele voor stand set_clock te onthouden Dim Tellertje As Word Dim Tellerken As Byte Dim knopken As Byte Dim Maand1 As Byte Dim Maand10 As Byte Dim Dag1 As Byte Dim Dag10 As Byte Dim Jaar1 As Byte Dim Jaar10 As Byte Dim Ms1 As Byte Dim Ms2 As Byte Dim Ms10 As Byte Dim Ms20 As Byte Dim Se1 As Byte Dim Se2 As Byte Dim Se10 As Byte Dim Se20 As Byte Dim Mi1 As Byte Dim Mi2 As Byte Dim Mi10 As Byte Dim Mi20 As Byte Dim Chronoteller As Byte ;1 ms Dim Chroteller As Byte ;IOC Dim Start As Byte ;IOC Dim Begin As Byte Dim Laptime As Byte ;IOC Dim Stopchro As Byte Dim Onthouder As Byte Dim Plus11 As Word Dim Plus12 As Word Dim Plus101 As Word Dim Plus102 As Word Dim Maak001 As Word Dim Maak002 As Word Dim Chroslaap As Byte Dim Chroslaap2 As Byte Dim Dagteller As Byte Dim Datu As Byte Dim Datumminder As Byte Dim Datumteller As Word Dim Datchro As Byte Dim Datumsetter As Byte Dim Datumsetter2 As Byte Clear ;wis alle RAM ;interrupts Symbol GIE = INTCON.7 ;global interrupt enable Symbol T0IE = INTCON.5 ;TMR0 overflow interrupt enable Symbol T0IF = INTCON.2 ;TMR0 overflow interrupt flag bit Symbol PS0 = OPTION_REG.0 ;Prescaler ratio bit-0 Symbol PS1 = OPTION_REG.1 ;Prescaler ratio bit-1 Symbol PS2 = OPTION_REG.2 ;Prescaler ratio bit-2 Symbol PSA = OPTION_REG.3 ;Prescaler Assignment (1=assigned to WDT 0=assigned to oscillator) Symbol T0CS = OPTION_REG.5 ;Timer0 Clock Source Select (0=Internal instruction cycle clock 1= Transition on T0CKI pin) Symbol RBPU = OPTION_REG.7 ;PORTB pull-up (1 = disabled, 0 = enabled) On_Interrupt GoTo Interrupt_handler ; 76543210 PORTA = %00000000 ;PIC opstarten met sommige PORTA poorten laag PORTC = %11111111 ;PIC opstarten met alle PORTC poorten hoog TRISA = %11000000 ;Maak PORTA.7 en 6 ingang voor kristal TRISC = %00000000 ;Maak PORTC uitgang voor segmenten ANSELH = %00000000 ;alle B-poorten digitaal TRISB = %11111111 ;alle B-poorten zijn ingangen Uren1 = 2 Uren10 = 10 Dag1 = 0 ;opstarten met datum op 01/01/09 Dag10 = 0 Maand1 = 1 Maand10 = 1 Jaar1 = 9 Jaar10 = 9 GIE = 0 ;disable all global interrupts PSA = 0 ;Assign the prescaler to oscillator PS0 = 0 ;Set the prescaler PS1 = 0 ;to increment TMR0 PS2 = 1 ;every 2nd instruction cycle T0CS = 0 ;Assign TMR0 clock to internal source T0IE = 1 ;TMR0 overflow interrupt enable T0IF = 1 ;TMR0 overflow interrupt flag bit GIE = 1 ;enable all global interrupts TMR0 = 0 ;zet tmr0 op 0 GoTo Klok ;ga naar hoofdprogramma Interrupt_handler: ;interrupt handler Context SAVE ;register onthouden Inc Teller ;teller verhogen If Teller = 500 Then Inc Sec1 ;als teller aan 500 zit dan seconde bijtellen Clear Teller EndIf ;teller wissen als er seconde is bijgeteld If Uren10 > 23 Then Clear Uren1 Clear Uren10 EndIf If Sec1 >= 10 Then Inc Sec10 ;bij 10 seconden sec10 verhogen If Sec10 >= 6 Then Inc Min1 ;bij 60 seconden 1 minuut bijtellen If Min1 >= 10 Then Inc Min10 ;bij 10 minuten min10 verhogen If Min10 >= 6 Then Inc Uren1 ;bij 60 minuten uur bijtellen Inc Uren10 EndIf If Sec1 > 9 Then Sec1 = 0 ;bij 10 sec sec1 clearen If Sec10 >= 6 Then Sec10 = 0 ;bij 60 sec sec10 clearen If Min1 > 9 Then Min1 = 0 ;bij 10 minuten min1 clearen If Min10 >= 6 Then Min10 = 0 ;bij 60 minuten min10 clearen If Uren1 > 9 Then Uren1 = 0 ;bij 10 uren uren1 clearen If Begin = 1 Then GoTo Chronovormen MMM: T0IF = 0 ;timer0 flag bit clearen Context Restore ;terugkeren van waar je kwam Chronovormen: ;kleine routine waarin chrono gevormd wordt Inc Chronoteller ;teller voor ms If Chronoteller = 6 Then Inc Ms2 ;na 5*0,2 ms een ms bijtellen If Chronoteller = 6 Then Chronoteller = 1 ;chronoteller clearen If Ms2 >= 10 Then Inc Ms20 ;na 9 ms dig 2 verhogen Clear Ms2 ;na 9 ms variabele voor dig 1 clearen EndIf If Ms20 >= 10 Then Inc Se2 ;na 99 ms een second bijtellen Clear Ms20 ;na 99 ms variabele voor dig2 clearen EndIf If Se2 >= 10 Then Inc Se20 Clear Se2 EndIf If Se20 >= 6 Then Inc Mi2 Clear Se20 EndIf If Mi2 >= 10 Then Inc Mi20 Clear Mi2 EndIf If Mi20 > 9 Then Clear Mi20 GoTo MMM Gelijkstellen: ASM movf Ms2,W movwf Ms1 movf Ms20,W movwf Ms10 movf Se2,W movwf Se1 movf Se20,W movwf Se10 movf Mi2,W movwf Mi1 movf Mi20,W movwf Mi10 ENDASM GoTo RRR Onderzoek: If Instelling = 1 Then Inc Sec1 If Instelling = 2 Then Inc Min1 If Instelling = 3 Then Inc Uren1 Inc Uren10 EndIf If Instelling = 4 Then Inc Dag1 Inc Dag10 EndIf If Instelling = 5 Then Inc Maand1 Inc Maand10 EndIf If Instelling = 6 Then Inc Jaar1 Inc Jaar10 EndIf Return Onderzoek2: If Instelling = 1 Then Inc Sec10 If Instelling = 2 Then Inc Min10 If Instelling = 3 Then Uren10 = Uren10 + 10 If Instelling = 4 Then Dag10 = Dag10 + 10 If Instelling = 5 Then Maand10 = Maand10 + 10 If Instelling = 6 Then Jaar10 = Jaar10 +10 Return Onderzoek3: If Instelling = 1 Then Clear Sec1 Clear Teller Clear Sec10 EndIf If Instelling = 2 Then Clear Min1 Clear Min10 EndIf If Instelling = 3 Then Clear Uren1 Clear Uren10 EndIf If Instelling = 4 Then Dag1 = 1 Dag10 = 1 EndIf If Instelling = 5 Then Maand1 = 1 Maand10 = 1 EndIf If Instelling = 6 Then Clear Jaar1 Clear Jaar10 EndIf Return Jan: If Dag10 > 31 Then Inc Maand1 Inc Maand10 Dag1 = 1 Dag10 = 1 EndIf Return Feb: If Jaar10 = 4 Then GoTo Schrikkeljaar If Jaar10 = 8 Then GoTo Schrikkeljaar If Jaar10 = 12 Then GoTo Schrikkeljaar If Jaar10 = 16 Then GoTo Schrikkeljaar If Jaar10 = 20 Then GoTo Schrikkeljaar If Jaar10 = 24 Then GoTo Schrikkeljaar If Jaar10 = 28 Then GoTo Schrikkeljaar If Jaar10 = 32 Then GoTo Schrikkeljaar If Jaar10 = 36 Then GoTo Schrikkeljaar If Jaar10 = 40 Then GoTo Schrikkeljaar If Dag10 > 28 Then Inc Maand1 Inc Maand10 Dag1 = 1 Dag10 = 1 EndIf Return Schrikkeljaar: If Dag10 > 29 Then Inc Maand1 Inc Maand10 Dag1 = 1 Dag10 = 1 EndIf Return Maa: If Dag10 > 31 Then Inc Maand1 Inc Maand10 Dag1 = 1 Dag10 = 1 EndIf Return Apr: If Dag10 > 32 Then Inc Maand1 Inc Maand10 Dag1 = 1 Dag10 = 1 EndIf Return Mei: If Dag10 > 31 Then Inc Maand1 Inc Maand10 Dag1 = 1 Dag10 = 1 EndIf Return Jun: If Dag10 > 30 Then Inc Maand1 Inc Maand10 Dag1 = 1 Dag10 = 1 EndIf Return Jul: If Dag10 > 31 Then Inc Maand1 Inc Maand10 Dag1 = 1 Dag10 = 1 EndIf Return Aug: If Dag10 > 31 Then Inc Maand1 Inc Maand10 Dag1 = 1 Dag10 = 1 EndIf Return Sep: If Dag10 > 30 Then Inc Maand1 Inc Maand10 Dag1 = 1 Dag10 = 1 EndIf Return Okt: If Dag10 > 31 Then Inc Maand1 Inc Maand10 Dag1 = 1 Dag10 = 1 EndIf Return Nov: If Dag10 > 30 Then Inc Maand1 Inc Maand10 Dag1 = 1 Dag10 = 1 EndIf Return Dece: If Dag10 > 31 Then Inc Maand1 Inc Maand10 Dag1 = 1 Dag10 = 1 EndIf Return Datumstellen: If Maand10 = 1 Then GoSub Jan If Maand10 = 2 Then GoSub Feb If Maand10 = 3 Then GoSub Maa If Maand10 = 4 Then GoSub Apr If Maand10 = 5 Then GoSub Mei If Maand10 = 6 Then GoSub Jun If Maand10 = 7 Then GoSub Jul If Maand10 = 8 Then GoSub Aug If Maand10 = 9 Then GoSub Sep If Maand10 = 10 Then GoSub Okt If Maand10 = 11 Then GoSub Nov If Maand10 = 12 Then GoSub Dece If Dag1 > 9 Then Clear Dag1 If Maand10 > 12 Then Inc Jaar1 Inc Jaar10 Maand1 = 1 Maand10 = 1 EndIf If Maand1 > 9 Then Maand1 = 0 If Jaar1 > 9 Then Clear Jaar1 If Jaar10 > 99 Then Clear Jaar1 Clear Jaar10 EndIf If Datumsetter = 1 Then GoTo WW If Datumsetter2 = 1 Then GoTo UU GoTo TTT Klok: If Uren10 > 20 Then Dagteller = 0 If Uren10 < 20 Then Inc Dagteller If Dagteller = 1 Then Inc Dag1 Inc Dag10 EndIf If Dagteller > 1 Then Dagteller = 2 If Dat = 1 Then Datu = 0 If Dat = 0 Then Inc Datu If Datu = 0 Then Datumminder = 0 If Datu = 1 Then Datumminder = 1 GoTo Datum EndIf If Datu > 2 Then Datu = 2 If Plus1 = 1 Then Plus11 = 0 If Plus1 = 0 Then Inc Plus11 If Plus11 = 1 Then Clear Plus12 If Plus11 > 2 Then Plus11 = 2 If Plus11 = 2 Then Inc Plus12 If Plus12 > 800 Then Clear Plus12 GoSub Onderzoek EndIf If Plus11 = 1 Then GoSub Onderzoek If Plus10 = 1 Then Plus101 = 0 If Plus10 = 0 Then Inc Plus101 If Plus101 = 1 Then Clear Plus102 If Plus101 > 2 Then Plus101 = 2 If Plus101 = 2 Then Inc Plus102 If Plus102 > 800 Then Clear Plus102 GoSub Onderzoek2 EndIf If Plus101 = 1 Then GoSub Onderzoek2 If Maak00 = 1 Then Maak001 = 0 If Maak00 = 0 Then Inc Maak001 If Maak001 = 1 Then Clear Maak002 If Maak001 > 2 Then Maak001 = 2 If Maak001 = 2 Then Inc Maak002 If Maak002 > 800 Then Clear Maak002 GoSub Onderzoek3 EndIf If Maak001 = 1 Then GoSub Onderzoek3 GoTo Datumstellen TTT: If Slapen = 0 Then GoTo Slaap ;als slapen = 0 naar slaapmodus gaan (display uit) LLL: If Chrono = 1 Then Chroteller = 0 If Chrono = 0 Then Inc Chroteller If Chroteller = 1 Then GoTo Chron If Chroteller > 1 Then Chroteller = 2 If Tellertje > 750 Then Clear Tellertje If Tellertje > 200 Then GoTo YYY If Instelling = 1 Then DelayUS 200 GoTo ZZZ EndIf YYY: If Sec1 = 0 Then num = %01111110 ;als sec1 = 0 dan 0 weergeven If Sec1 = 1 Then num = %01001000 ;als sec1 = 1 dan 1 weergeven If Sec1 = 2 Then num = %10111010 ;als sec1 = 2 dan 2 weergeven If Sec1 = 3 Then num = %11101010 ;als sec1 = 3 dan 3 weergeven If Sec1 = 4 Then num = %11001100 ;als sec1 = 4 dan 4 weergeven If Sec1 = 5 Then num = %11100110 ;als sec1 = 5 dan 5 weergeven If Sec1 = 6 Then num = %11110110 ;als sec1 = 6 dan 6 weergeven If Sec1 = 7 Then num = %01001010 ;als sec1 = 7 dan 7 weergeven If Sec1 = 8 Then num = %11111110 ;als sec1 = 8 dan 8 weergeven If Sec1 >= 9 Then num = %11101110 ;als sec1 = 9 dan 9 weergeven High Dig1 ;digit 1 hoog maken DelayUS 100 ;digit 1 1 ms hoog houden Low Dig1 ;digit 1 laag maken If Sec10 = 0 Then num = %01111110 ;als sec10 = 0 dan 0 weergeven If Sec10 = 1 Then num = %01001000 ;als sec10 = 1 dan 1 weergeven If Sec10 = 2 Then num = %10111010 ;als sec10 = 2 dan 2 weergeven If Sec10 = 3 Then num = %11101010 ;als sec10 = 3 dan 3 weergeven If Sec10 = 4 Then num = %11001100 ;als sec10 = 4 dan 4 weergeven If Sec10 = 5 Then num = %11100110 ;als sec10 = 5 dan 5 weergeven If Sec10 >= 6 Then num = %11110110 ;als sec10 = 6 dan 6 weergeven High Dig2 ;digit 2 hoog maken DelayUS 100 ;digit 2 1 ms hoog houden Low Dig2 ;digit 2 laag maken ZZZ: If Tellertje > 200 Then GoTo AAA If Instelling = 2 Then DelayUS 200 GoTo BBB EndIf AAA: If Min1 = 0 Then num = %01111110 If Min1 = 1 Then num = %01001000 If Min1 = 2 Then num = %10111010 If Min1 = 3 Then num = %11101010 If Min1 = 4 Then num = %11001100 If Min1 = 5 Then num = %11100110 If Min1 = 6 Then num = %11110110 If Min1 = 7 Then num = %01001010 If Min1 = 8 Then num = %11111110 If Min1 = 9 Then num = %11101110 High Dig3 DelayUS 100 Low Dig3 If Min10 = 0 Then num = %01111110 If Min10 = 1 Then num = %01001000 If Min10 = 2 Then num = %10111010 If Min10 = 3 Then num = %11101010 If Min10 = 4 Then num = %11001100 If Min10 = 5 Then num = %11100110 If Min10 = 6 Then num = %11110110 High Dig4 DelayUS 100 Low Dig4 BBB: If Tellertje > 200 Then GoTo CCC If Instelling = 3 Then DelayUS 200 GoTo DDD EndIf CCC: If Teller < 250 Then GoTo WWW If Uren1 = 0 Then num = %01111110 If Uren1 = 1 Then num = %01001000 If Uren1 = 2 Then num = %10111010 If Uren1 = 3 Then num = %11101010 If Uren1 = 4 Then num = %11001100 If Uren1 = 5 Then num = %11100110 If Uren1 = 6 Then num = %11110110 If Uren1 = 7 Then num = %01001010 If Uren1 = 8 Then num = %11111110 If Uren1 = 9 Then num = %11101110 If Teller > 249 Then GoTo NNN WWW: If Uren1 = 0 Then num = %01111111 If Uren1 = 1 Then num = %01001001 If Uren1 = 2 Then num = %10111011 If Uren1 = 3 Then num = %11101011 If Uren1 = 4 Then num = %11001101 If Uren1 = 5 Then num = %11100111 If Uren1 = 6 Then num = %11110111 If Uren1 = 7 Then num = %01001011 If Uren1 = 8 Then num = %11111111 If Uren1 = 9 Then num = %11101111 NNN: High Dig5 DelayUS 100 Low Dig5 If Uren10 < 30 Then num = %10111010 If Uren10 < 20 Then num = %01001000 If Uren10 < 10 Then num = %01111110 High Dig6 DelayUS 100 Low Dig6 DDD: Inc Tellertje Datchro = 0 If Set_clock = 0 Then Inc Knopje If Set_clock = 1 Then Knopje = 0 GoTo Klok EndIf If Knopje = 1 Then Inc Instelling If Knopje > 1 Then Knopje = 2 If Instelling > 6 Then Clear Instelling If Instelling > 3 Then GoTo Datum GoTo Klok Slaap: While Slapen = 0 ;knop is nog altijd ingedrukt DelayMS 10 Wend ;lus While Slapen = 1 ;knop wordt losgelaten DelayMS 10 Datumsetter2 = 1 If Uren10 > 20 Then Dagteller = 0 If Uren10 < 20 Then Inc Dagteller If Dagteller = 1 Then Inc Dag1 Inc Dag10 EndIf If Dagteller > 1 Then Dagteller = 2 GoTo Datumstellen UU: Wend While Slapen = 0 DelayMS 10 Wend Datumsetter2 = 0 If Chroslaap = 1 Then GoTo PPP If Chroslaap2 = 1 Then GoTo QQQ GoTo LLL EEE: Datumteller = 0 If Datchro = 1 Then GoTo Chron GoTo Klok OOO: If Instelling = 0 Then GoTo Klok Return Datum: Datumsetter = 1 GoTo Datumstellen WW: Datumsetter = 0 If Plus1 = 1 Then Plus11 = 0 If Plus1 = 0 Then Inc Plus11 If Plus11 = 1 Then Clear Plus12 If Plus11 > 2 Then Plus11 = 2 If Plus11 = 2 Then Inc Plus12 If Plus12 > 800 Then Clear Plus12 GoSub Onderzoek EndIf If Plus11 = 1 Then GoSub Onderzoek If Plus10 = 1 Then Plus101 = 0 If Plus10 = 0 Then Inc Plus101 If Plus101 = 1 Then Clear Plus102 If Plus101 > 2 Then Plus101 = 2 If Plus101 = 2 Then Inc Plus102 If Plus102 > 800 Then Clear Plus102 GoSub Onderzoek2 EndIf If Plus101 = 1 Then GoSub Onderzoek2 If Maak00 = 1 Then Maak001 = 0 If Maak00 = 0 Then Inc Maak001 If Maak001 = 1 Then Clear Maak002 If Maak001 > 2 Then Maak001 = 2 If Maak001 = 2 Then Inc Maak002 If Maak002 > 800 Then Clear Maak002 GoSub Onderzoek3 EndIf If Maak001 = 1 Then GoSub Onderzoek3 If Chrono = 1 Then Chroteller = 0 If Chrono = 0 Then Inc Chroteller If Chroteller = 1 Then GoTo Chron If Chroteller > 2 Then Chroteller = 2 If Dat = 1 Then Datu = 0 If Dat = 0 Then Inc Datu If Datu = 1 Then GoTo EEE If Datu > 2 Then Datu = 2 If Datumminder = 1 Then Inc Datumteller If Datumteller = 8000 Then GoTo EEE If Tellertje > 750 Then Clear Tellertje If Tellertje > 200 Then GoTo FFF If Instelling = 4 Then DelayUS 200 GoTo GGG EndIf FFF: If Dag1 = 0 Then num = %01111110 If Dag1 = 1 Then num = %01001000 If Dag1 = 2 Then num = %10111010 If Dag1 = 3 Then num = %11101010 If Dag1 = 4 Then num = %11001100 If Dag1 = 5 Then num = %11100110 If Dag1 = 6 Then num = %11110110 If Dag1 = 7 Then num = %01001010 If Dag1 = 8 Then num = %11111110 If Dag1 = 9 Then num = %11101110 High Dig5 DelayUS 100 Low Dig5 If Dag10 < 10 Then num = %01111110 If Dag10 > 9 Then num = %01001000 If Dag10 > 19 Then num = %10111010 If Dag10 > 29 Then num = %11101010 High Dig6 DelayUS 100 Low Dig6 GGG: If Tellertje > 200 Then GoTo HHH If Instelling = 5 Then DelayUS 200 GoTo III EndIf HHH: If Maand10 < 10 Then num = %01111110 If Maand10 > 9 Then num = %01001000 High Dig4 DelayUS 100 Low Dig4 If Maand1 = 0 Then num = %01111110 If Maand1 = 1 Then num = %01001000 If Maand1 = 2 Then num = %10111010 If Maand1 = 3 Then num = %11101010 If Maand1 = 4 Then num = %11001100 If Maand1 = 5 Then num = %11100110 If Maand1 = 6 Then num = %11110110 If Maand1 = 7 Then num = %01001010 If Maand1 = 8 Then num = %11111110 If Maand1 = 9 Then num = %11101110 High Dig3 DelayUS 100 Low Dig3 III: If Tellertje > 200 Then GoTo JJJ If Instelling = 6 Then DelayUS 200 GoTo KKK EndIf JJJ: If Jaar10 < 99 Then num = %01111110 If Jaar10 > 9 Then num = %01001000 If Jaar10 > 19 Then num = %10111010 If Jaar10 > 29 Then num = %11101010 If Jaar10 > 39 Then num = %11001100 If Jaar10 > 49 Then num = %11100110 If Jaar10 > 59 Then num = %11110110 If Jaar10 > 69 Then num = %01001010 If Jaar10 > 79 Then num = %11111110 If Jaar10 > 89 Then num = %11101110 High Dig2 DelayUS 100 Low Dig2 If Jaar1 = 0 Then num = %01111110 If Jaar1 = 1 Then num = %01001000 If Jaar1 = 2 Then num = %10111010 If Jaar1 = 3 Then num = %11101010 If Jaar1 = 4 Then num = %11001100 If Jaar1 = 5 Then num = %11100110 If Jaar1 = 6 Then num = %11110110 If Jaar1 = 7 Then num = %01001010 If Jaar1 = 8 Then num = %11111110 If Jaar1 >= 9 Then num = %11101110 High Dig1 DelayUS 100 Low Dig1 KKK: Inc Tellertje If Set_clock = 1 Then Knopje = 0 If Set_clock = 0 Then Inc Knopje If Knopje = 1 Then Inc Instelling If Instelling > 6 Then Clear Instelling GoTo Klok EndIf If Knopje = 1 Then GoSub OOO GoTo Datum Chron: QQQ: If Start = 1 Then Inc Begin If Stasto = 0 Then Inc Start If Stasto = 1 Then Start = 0 If Begin > 2 Then Begin = 1 If Start > 2 Then Start = 2 If Slapen = 1 Then Chroslaap = 0 If Slapen = 0 Then Chroslaap = 1 If Chroslaap = 1 Then GoTo Slaap PPP: If Plus1 = 0 Then Inc Laptime If Laptime > 2 Then Laptime = 2 If Laptime = 1 Then Inc Onthouder If Onthouder > 1 Then Clear Onthouder If Plus1 = 1 Then Laptime = 0 If Maak00 = 1 Then Stopchro = 0 If Maak00 = 0 Then Inc Stopchro If Stopchro > 1 Then Stopchro = 2 If Stopchro = 1 Then Clear Ms2 Clear Ms20 Clear Se2 Clear Se20 Clear Mi2 Clear Mi20 Clear Ms1 Clear Ms10 Clear Se1 Clear Se10 Clear Mi1 Clear Mi10 EndIf If Chrono = 1 Then Chroteller = 0 If Chrono = 0 Then Inc Chroteller If Chroteller = 1 Then GoTo Klok If Chroteller > 2 Then Chroteller = 2 If Dat = 1 Then Datu = 0 Datumminder = 0 EndIf If Dat = 0 Then Inc Datu Inc Datumminder EndIf If Datumminder > 1 Then Datumminder = 0 If Datu = 0 Then Datchro = 0 If Datu = 1 Then Datchro = 1 GoTo Datum EndIf If Datu > 2 Then Datu = 2 If Onthouder = 0 Then GoTo Gelijkstellen RRR: If Mi10 = 0 Then num = %01111110 If Mi10 = 1 Then num = %01001000 If Mi10 = 2 Then num = %10111010 If Mi10 = 3 Then num = %11101010 If Mi10 = 4 Then num = %11001100 If Mi10 = 5 Then num = %11100110 If Mi10 = 6 Then num = %11110110 If Mi10 = 7 Then num = %01001010 If Mi10 = 8 Then num = %11111110 If Mi10 = 9 Then num = %11101110 High Dig6 DelayUS 100 Low Dig6 If Ms20 < 5 Then GoTo ZZ If Mi1 = 0 Then num = %01111110 If Mi1 = 1 Then num = %01001000 If Mi1 = 2 Then num = %10111010 If Mi1 = 3 Then num = %11101010 If Mi1 = 4 Then num = %11001100 If Mi1 = 5 Then num = %11100110 If Mi1 = 6 Then num = %11110110 If Mi1 = 7 Then num = %01001010 If Mi1 = 8 Then num = %11111110 If Mi1 = 9 Then num = %11101110 If Ms20 > 4 Then GoTo EE ZZ: If Mi1 = 0 Then num = %01111111 If Mi1 = 1 Then num = %01001001 If Mi1 = 2 Then num = %10111011 If Mi1 = 3 Then num = %11101011 If Mi1 = 4 Then num = %11001101 If Mi1 = 5 Then num = %11100111 If Mi1 = 6 Then num = %11110111 If Mi1 = 7 Then num = %01001011 If Mi1 = 8 Then num = %11111111 If Mi1 = 9 Then num = %11101111 EE: High Dig5 DelayUS 100 Low Dig5 If Se10 = 0 Then num = %01111110 If Se10 = 1 Then num = %01001000 If Se10 = 2 Then num = %10111010 If Se10 = 3 Then num = %11101010 If Se10 = 4 Then num = %11001100 If Se10 = 5 Then num = %11100110 If Se10 = 6 Then num = %11110110 High Dig4 DelayUS 100 Low Dig4 If Se1 = 0 Then num = %01111110 If Se1 = 1 Then num = %01001000 If Se1 = 2 Then num = %10111010 If Se1 = 3 Then num = %11101010 If Se1 = 4 Then num = %11001100 If Se1 = 5 Then num = %11100110 If Se1 = 6 Then num = %11110110 If Se1 = 7 Then num = %01001010 If Se1 = 8 Then num = %11111110 If Se1 = 9 Then num = %11101110 High Dig3 DelayUS 100 Low Dig3 If Ms10 = 0 Then num = %01111110 If Ms10 = 1 Then num = %01001000 If Ms10 = 2 Then num = %10111010 If Ms10 = 3 Then num = %11101010 If Ms10 = 4 Then num = %11001100 If Ms10 = 5 Then num = %11100110 If Ms10 = 6 Then num = %11110110 If Ms10 = 7 Then num = %01001010 If Ms10 = 8 Then num = %11111110 If Ms10 = 9 Then num = %11101110 High Dig2 DelayUS 100 Low Dig2 If Ms1 = 0 Then num = %01111110 If Ms1 = 1 Then num = %01001000 If Ms1 = 2 Then num = %10111010 If Ms1 = 3 Then num = %11101010 If Ms1 = 4 Then num = %11001100 If Ms1 = 5 Then num = %11100110 If Ms1 = 6 Then num = %11110110 If Ms1 = 7 Then num = %01001010 If Ms1 = 8 Then num = %11111110 If Ms1 = 9 Then num = %11101110 High Dig1 DelayUS 100 Low Dig1 GoTo Chron End