1: #include[SIZE=+1]<pic[SIZE=+1].[/SIZE]h[SIZE=+1]>[/SIZE] //include MCU head file
2: __CONFIG[SIZE=+1]([/SIZE]0x1832[SIZE=+1])[/SIZE][SIZE=+1];[/SIZE]
3: //THE configure of MCU,watchdog OFF,electrify delay OPEN,power down check OFF,
4: //LOW power programme OFF,encrypt,4M crystal HS surge.
5: const char TABLE[SIZE=+1][[/SIZE][SIZE=+1]][/SIZE][SIZE=+1]=[/SIZE][SIZE=+1]{[/SIZE]0xc0[SIZE=+1],[/SIZE]0xf9[SIZE=+1],[/SIZE]0xa4[SIZE=+1],[/SIZE]0xb0[SIZE=+1],[/SIZE]0x99[SIZE=+1],[/SIZE]0x92[SIZE=+1],[/SIZE]0X82[SIZE=+1],[/SIZE]0XF8[SIZE=+1],[/SIZE]0X80[SIZE=+1],[/SIZE]0X90[SIZE=+1]}[/SIZE][SIZE=+1];[/SIZE]
6: //define the table of constant 0-9
7: void DELAY[SIZE=+1]([/SIZE][SIZE=+1])[/SIZE][SIZE=+1];[/SIZE] //delay function declare
8: void init[SIZE=+1]([/SIZE][SIZE=+1])[/SIZE][SIZE=+1];[/SIZE] //I/O PORT initialize function declare
9: void display[SIZE=+1]([/SIZE]int x[SIZE=+1])[/SIZE][SIZE=+1];[/SIZE] //display function declare
10: //------------------------------------------------
11: //main program
12: void main[SIZE=+1]([/SIZE][SIZE=+1])[/SIZE]
13: [SIZE=+1]{[/SIZE]
14: int result[SIZE=+1]=[/SIZE]0x00[SIZE=+1];[/SIZE] //define convert result register
15: while[SIZE=+1]([/SIZE]1[SIZE=+1])[/SIZE] //dead circle
16: [SIZE=+1]{[/SIZE]
17: int i[SIZE=+1];[/SIZE] //define the times of circle control
18: result[SIZE=+1]=[/SIZE]0x00[SIZE=+1];[/SIZE] //clear the convert result
19: for[SIZE=+1]([/SIZE]i[SIZE=+1]=[/SIZE]5[SIZE=+1];[/SIZE]i[SIZE=+1]>[/SIZE]0[SIZE=+1];[/SIZE]i[SIZE=+1][SIZE=+1]-[/SIZE][SIZE=+1]-[/SIZE][/SIZE][SIZE=+1])[/SIZE] //get the average of five convert results
20: [SIZE=+1]{[/SIZE]
21: init[SIZE=+1]([/SIZE][SIZE=+1])[/SIZE][SIZE=+1];[/SIZE] //call initialize function
22: ADGO[SIZE=+1]=[/SIZE]0X1[SIZE=+1];[/SIZE] //start convert
23: while[SIZE=+1]([/SIZE]ADGO[SIZE=+1])[/SIZE][SIZE=+1];[/SIZE] //wait for finish convert
24: result[SIZE=+1]=[/SIZE]result[SIZE=+1]+[/SIZE]ADRESL[SIZE=+1];[/SIZE] //accumulative total convert results
25: [SIZE=+1]}[/SIZE]
26: result[SIZE=+1]=[/SIZE]result[SIZE=+1]/[/SIZE]5[SIZE=+1];[/SIZE] //get the average of five convert results
27: display[SIZE=+1]([/SIZE]result[SIZE=+1])[/SIZE][SIZE=+1];[/SIZE] //call display function
28: [SIZE=+1]}[/SIZE]
29: [SIZE=+1]}[/SIZE]
30: //-----------------------------------------------
31: //initialize function
32:
33: void init[SIZE=+1]([/SIZE][SIZE=+1])[/SIZE]
34: [SIZE=+1]{[/SIZE]
35: PORTA[SIZE=+1]=[/SIZE]0XFF[SIZE=+1];[/SIZE]
36: PORTD[SIZE=+1]=[/SIZE]0XFF[SIZE=+1];[/SIZE] //close all display
37: TRISA[SIZE=+1]=[/SIZE]0X1[SIZE=+1];[/SIZE] //set RA0 INPUT,the others OUTPUT
38: TRISD[SIZE=+1]=[/SIZE]0X00[SIZE=+1];[/SIZE] //set D PORT all OUTPUT
39: ADCON1[SIZE=+1]=[/SIZE]0X8E[SIZE=+1];[/SIZE] //set RA0 simulate INPUT,the others general I/O
40: ADCON0[SIZE=+1]=[/SIZE]0X41[SIZE=+1];[/SIZE] //system clock Fosc/8,select RA0 routeway,allow ADC work
41: DELAY[SIZE=+1]([/SIZE][SIZE=+1])[/SIZE][SIZE=+1];[/SIZE] //ensure sampling delay
42: [SIZE=+1]}[/SIZE]
43: //-----------------------------------------------
44: //display function
[SIZE=+1][/SIZE]
[/SIZE]
45: void display[SIZE=+1](int x[SIZE=+1])[/SIZE]
46: [SIZE=+1]{[/SIZE]
47: int bai[SIZE=+1],[/SIZE]shi[SIZE=+1],[/SIZE]ge[SIZE=+1],[/SIZE]temp[SIZE=+1];[/SIZE] //define four temporary variable
48: temp[SIZE=+1]=[/SIZE]x[SIZE=+1];[/SIZE] //temporary keep AD convert result
49: bai[SIZE=+1]=[/SIZE]temp[SIZE=+1]/[/SIZE]0x64[SIZE=+1];[/SIZE] //get display hundred bit
50: shi[SIZE=+1]=[/SIZE][SIZE=+1]([/SIZE]temp[SIZE=+1]%[/SIZE]0x64[SIZE=+1])[/SIZE][SIZE=+1]/[/SIZE]0xa[SIZE=+1];[/SIZE] //get display ten bit
51: ge[SIZE=+1]=[/SIZE][SIZE=+1]([/SIZE]temp[SIZE=+1]%[/SIZE]0x64[SIZE=+1])[/SIZE][SIZE=+1]%[/SIZE]0xa[SIZE=+1];[/SIZE] //get display Entries bit
52: PORTD[SIZE=+1]=[/SIZE]TABLE[SIZE=+1][[/SIZE]bai[SIZE=+1]][/SIZE][SIZE=+1];[/SIZE] //get the display hundred bit code from table
53: PORTA[SIZE=+1]=[/SIZE]0x37[SIZE=+1];[/SIZE] //RA3 OUTPUT low,light hundred bit display
54: DELAY[SIZE=+1]([/SIZE][SIZE=+1])[/SIZE][SIZE=+1];[/SIZE] //delay some time,ensure display brightness
55: PORTD[SIZE=+1]=[/SIZE]TABLE[SIZE=+1][[/SIZE]shi[SIZE=+1]][/SIZE][SIZE=+1];[/SIZE] //get the display ten bit code from table
56: PORTA[SIZE=+1]=[/SIZE]0x2F[SIZE=+1];[/SIZE] //RA4 OUTPUT low,light ten bit display
57: DELAY[SIZE=+1]([/SIZE][SIZE=+1])[/SIZE][SIZE=+1];[/SIZE] //delay some time,ensure display brightness
58: PORTD[SIZE=+1]=[/SIZE]TABLE[SIZE=+1][[/SIZE]ge[SIZE=+1]][/SIZE][SIZE=+1];[/SIZE] //get the display Entries bit code from table
59: PORTA[SIZE=+1]=[/SIZE]0x1F[SIZE=+1];[/SIZE] //RA5 OUTPUT low,light Entries bit display
60: DELAY[SIZE=+1]([/SIZE][SIZE=+1])[/SIZE][SIZE=+1];[/SIZE] //delay some time,ensure display brightness
61: [SIZE=+1]}[/SIZE]
62:
63: //----------------------------------------------
64: //delay program
65: void DELAY[SIZE=+1]([/SIZE][SIZE=+1])[/SIZE] //delay program
66: [SIZE=+1]{[/SIZE]
67: int i[SIZE=+1];[/SIZE] //define integer variable
68: for[SIZE=+1]([/SIZE]i[SIZE=+1]=[/SIZE]0x100[SIZE=+1];[/SIZE]i[SIZE=+1][SIZE=+1]-[/SIZE][SIZE=+1]-[/SIZE][/SIZE][SIZE=+1];[/SIZE][SIZE=+1])[/SIZE][SIZE=+1];[/SIZE] //delay
69: [SIZE=+1]}
[/SIZE][/SIZE]
by Aaron Carman
by Duane Benson
by Jake Hertz