📄 ad0832.lst
字号:
C51 COMPILER V8.08 AD0832 05/22/2009 21:58:14 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE AD0832
OBJECT MODULE PLACED IN ad0832.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ad0832.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg52.h>
2 #include<intrins.h>
3 float dat1,result;
4 sbit ADDI=P3^5;
5 sbit ADCLK=P3^6;
6 sbit ADCS=P3^7;
7 unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
8 int ge,yi,er,san;
9 /*
10 unsigned char yi;
11 unsigned char er;
12 unsigned char san; */
13 unsigned long int temp;
14
15 unsigned char k;
16 unsigned char m;
17 unsigned char n;
18 unsigned char ndat;
19 unsigned char dat;
20
21 void delay()
22 {
23 1 unsigned char i;
24 1 unsigned char j;
25 1
26 1 for(i=0;i<=200;i++)
27 1 for(j=0;j<=20;j++);
28 1
29 1 }
30 void display()
31 {
32 1 temp=result*1000.0;
33 1 temp=temp*4.99;
34 1 temp=temp/255.0;
35 1
36 1
37 1 ge=temp/1000;
38 1 yi=temp/100%10;
39 1 er=temp%100/10;
40 1 san=temp%10;
41 1 P2=0x08;
42 1 P0=table[ge];
43 1 delay();
44 1 P2=0x04;
45 1 P0=table[yi];
46 1 delay();
47 1 P2=0x02;
48 1 P0=table[er];
49 1 delay();
50 1 P2=0x01;
51 1 P0=table[san];
52 1 delay();
53 1
54 1
55 1 }
C51 COMPILER V8.08 AD0832 05/22/2009 21:58:14 PAGE 2
56
57 ADC0832(unsigned char channel) //AD转换,返回结果
58 {
59 1 dat=ndat=0;
60 1
61 1 if(channel==0)channel=0;//通道号10,只对CH0进行单通道转换
62 1 if(channel==1)channel=1;//通道号11,只对CH2进行单通道转换
63 1 ADDI=1;//在第1 个时钟脉冲的下沉之前DI端必须是高电平,表示启始信号
64 1 ADCLK=0;//拉低CLK端
65 1 _nop_();
66 1 _nop_();
67 1 ADCS=0;//拉低CS端,使能ADC0832,
68 1 _nop_();
69 1 _nop_();
70 1 ADCLK=1;//拉高CLK端
71 1 _nop_();
72 1 _nop_();
73 1 ADCLK=0;//拉低CLK端,形成下降沿1
74 1 _nop_();
75 1 _nop_();
76 1 ADCLK=1;//拉高CLK端
77 1 ADDI=channel&0x01;//在第2个脉冲下沉之前DI端应输入第1位通道选择数据
78 1 _nop_();
79 1 _nop_();
80 1 ADCLK=0;//拉低CLK端,形成下降沿2
81 1 _nop_();
82 1 _nop_();
83 1 ADCLK=1;//拉高CLK端
84 1 ADDI=channel&0x02;//在第3个脉冲下沉之前DI端应输入第2位通道选择数据
85 1 _nop_();
86 1 _nop_();
87 1 ADCLK=0;//拉低CLK端,形成下降沿3
88 1 _nop_();
89 1 _nop_();
90 1 ADDI=1;
91 1 for(m=0;m<8;m++)
92 1 { dat<<=1;
93 2 ADCLK=1;//收数据
94 2 _nop_();
95 2 _nop_();
96 2 ADCLK=0;//形成一次时钟脉冲
97 2 dat|=ADDI;
98 2 _nop_();
99 2 _nop_();
100 2
101 2
102 2 }
103 1
104 1 for(m=0;m<8;m++)
105 1 {
106 2 k=0;
107 2 k|=ADDI;//收数据
108 2 k<<=7;
109 2 ndat|=k;
110 2 if(m<7)
111 2 ndat>>=1;
112 2 ADCLK=1;
113 2 _nop_();
114 2 _nop_();
115 2 ADCLK=0;//形成第12-19次下降沿
116 2
117 2 _nop_();
C51 COMPILER V8.08 AD0832 05/22/2009 21:58:14 PAGE 3
118 2 _nop_();
119 2 }
120 1
121 1 ADCS=1;//拉低CS端
122 1 ADCLK=0;//拉低CLK端
123 1 ADDI=1;//拉高数据端,回到初始状态
124 1 result=(dat+ndat)/2.0;
125 1 // return(result); //return ad k
126 1 }
127 void main()
128 {
129 1 while(1)
130 1 {
131 2 ADC0832(0);
132 2 display();
133 2 }
134 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 469 ----
CONSTANT SIZE = 10 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 25 ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -