;***************************** Instellingen ****************************************************** CONFIG HS_OSC, WDT_OFF, PWRTE_ON, LVP_OFF DEVICE = 16F877A ;We gebruiken een 16F877A XTAL 20 ;Kristal van 20MHz ALL_DIGITAL = True ;Alle ingangen digitaal OPTIMISER_LEVEL 6 ; TRISD = %00000000 ;PORTC uitgang voor display module TRISB = %11001001 ;***************************** Variabele ********************************************************* SYMBOL Dig1 = PORTB.1 " CA pin 1e digit SYMBOL Dig2 = PORTB.2 " CA pin 2e digit SYMBOL Dig3 = PORTB.4 " CA pin 3e digit SYMBOL Dig4 = PORTB.5 " CA pin 4e digit SYMBOL Num = PORTD " segmenten pin ;***************************** Alias ************************************************************* DIM Digi1 AS BYTE " Waarde 1e digit DIM Digi2 AS BYTE " Waarde 2e digit DIM Digi3 AS BYTE " Waarde 3e digit DIM Digi4 AS BYTE " Waarde 4e digit DIM Time AS WORD " 'aan' tijd per digit DIM Teller AS WORD " Teller stand ;***************************** Jump ************************************************************** LOW Dig1 " \ LOW Dig2 " \Display uit zetten LOW Dig3 " / LOW Dig4 " / GOTO Main " Naar hoofd programma ;***************************** Karakter map ****************************************************** Seg0: Num = %11000000 RETURN Seg1: Num = %01111001 RETURN Seg2: Num = %10100100 RETURN Seg3: Num = %00110000 RETURN Seg4: Num = %10011001 RETURN Seg5: Num = %00010010 RETURN Seg6: Num = %10000010 RETURN Seg7: Num = %01111000 RETURN Seg8: Num = %10000000 RETURN Seg9: Num = %00010000 RETURN ;***************************** Display sturing *************************************************** Display: WHILE Time > 0 IF Digi1 = 0 THEN GOSUB Seg0 " Zet de juiste segmenten IF Digi1 = 1 THEN GOSUB Seg1 " aan zoals in de IF Digi1 = 2 THEN GOSUB Seg2 " karakter map gedefinieerd IF Digi1 = 3 THEN GOSUB Seg3 IF Digi1 = 4 THEN GOSUB Seg4 IF Digi1 = 5 THEN GOSUB Seg5 IF Digi1 = 6 THEN GOSUB Seg6 IF Digi1 = 7 THEN GOSUB Seg7 IF Digi1 = 8 THEN GOSUB Seg8 IF Digi1 = 9 THEN GOSUB Seg9 HIGH Dig1 DELAYMS 1 LOW Dig1 IF Digi2 = 0 THEN GOSUB Seg0 IF Digi2 = 1 THEN GOSUB Seg1 IF Digi2 = 2 THEN GOSUB Seg2 IF Digi2 = 3 THEN GOSUB Seg3 IF Digi2 = 4 THEN GOSUB Seg4 IF Digi2 = 5 THEN GOSUB Seg5 IF Digi2 = 6 THEN GOSUB Seg6 IF Digi2 = 7 THEN GOSUB Seg7 IF Digi2 = 8 THEN GOSUB Seg8 IF Digi2 = 9 THEN GOSUB Seg9 HIGH Dig2 DELAYMS 1 LOW Dig2 IF Digi3 = 0 THEN GOSUB Seg0 IF Digi3 = 1 THEN GOSUB Seg1 IF Digi3 = 2 THEN GOSUB Seg2 IF Digi3 = 3 THEN GOSUB Seg3 IF Digi3 = 4 THEN GOSUB Seg4 IF Digi3 = 5 THEN GOSUB Seg5 IF Digi3 = 6 THEN GOSUB Seg6 IF Digi3 = 7 THEN GOSUB Seg7 IF Digi3 = 8 THEN GOSUB Seg8 IF Digi3 = 9 THEN GOSUB Seg9 HIGH Dig3 DELAYMS 1 LOW Dig3 IF Digi4 = 0 THEN GOSUB Seg0 IF Digi4 = 1 THEN GOSUB Seg1 IF Digi4 = 2 THEN GOSUB Seg2 IF Digi4 = 3 THEN GOSUB Seg3 IF Digi4 = 4 THEN GOSUB Seg4 IF Digi4 = 5 THEN GOSUB Seg5 IF Digi4 = 6 THEN GOSUB Seg6 IF Digi4 = 7 THEN GOSUB Seg7 IF Digi4 = 8 THEN GOSUB Seg8 IF Digi4 = 9 THEN GOSUB Seg9 HIGH Dig4 DELAYMS 1 LOW Dig4 DEC Time WEND Time = 25 RETURN ;***************************** Hoofdprogramma **************************************************** Main: Teller = 0 WHILE Teller < 9999 Digi1 = DIG Teller , 0 " 1e getal opslaan Digi2 = DIG Teller , 1 " 2e getal opslaan Digi3 = DIG Teller , 2 " 3e getal opslaan Digi4 = DIG Teller , 3 " 4e getal opslaan GOSUB Display " Alle getallen laten zien INC Teller " optellen WEND WHILE Teller > 0 Digi1 = DIG Teller , 0 Digi2 = DIG Teller , 1 Digi3 = DIG Teller , 2 Digi4 = DIG Teller , 3 GOSUB Display DEC Teller " aftellen WEND GOTO Main