STC8_ADC

 1 #include "reg51.h"
 2 #include "stdio.h"
 3 #define OSC 18432000L
 4 #define BAUD 9600
 5 #define    ADC_POWER 0x80
 6 #define    ADC_FLAG  0x10
 7 #define    ADC_START  0x08
 8 #define    ADC_SPEEDLL  0x00
 9 #define    ADC_SPEEDL      0x20
10 #define    ADC_SPEEDH      0x40
11 #define    ADC_SPEEDHH      0x60
12 
13 sfr T2H=0xD6;
14 sfr T2L=0xD7;
15 sfr AUXR=0x8E;
16 sfr ADC_CONTR=0xBC;
17 sfr ADC_RES=0xBD;
18 sfr ADC_RESL=0xBE;
19 sfr P1ASF=0x9D;
20 
21 unsigned  char     ch=2;
22 float  voltage =0;
23 unsigned char tstr[5];
24 unsigned int ref=0,vin=0;
25 
26 void sendData(unsigned char dat)
27 
28 {
29     while(!TI);
30     TI=0;
31     SBUF=dat;
32 }
33 
34 void adc_int() interrupt 5
35 {
36     unsigned char i=0;
37     unsigned long int j=0;
38     ADC_CONTR&=!ADC_FLAG;
39     vin=(ADC_RES*4+ADC_RESL);
40     voltage=2.5*vin/ref;
41     sprintf(tstr,"%1.4f",voltage);
42     sendData('\r');
43     sendData('\n');
44     for(i=0;i<5;i++)
45     sendData(tstr[i]);
46 
47        for(j=0;j<=80000;j++);
48     ADC_RES=0;
49     ADC_RESL=0;
50     ADC_CONTR=ADC_POWER|ADC_SPEEDLL|ADC_START|ch;
51 }
52 
53 void main()
54 {
55     unsigned int i;
56     SCON=0x5A;
57     T2L=65536-OSC/4/BAUD;
58     T2H=(65536-OSC/4/BAUD)>>8;
59     AUXR=0x14;
60     AUXR|=0x01;
61     P1ASF=0xFF;
62     ADC_RES=0;
63     ADC_CONTR=ADC_POWER|ADC_SPEEDLL|ADC_START|ch;
64     for(i=0;i<=10000;i++);
65     IE=0xA0;
66     while(1);
67 }
68  
View Code

猜你喜欢

转载自www.cnblogs.com/https/p/9303541.html
ADC