📄 ad转换.lst
字号:
C51 COMPILER V8.02 AD转换 04/01/2006 14:11:18 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE AD转换
OBJECT MODULE PLACED IN ad转换.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ad转换.c BROWSE DEBUG OBJECTEXTEND
line level source
1
2
3 /*********************************************************
4 A/D转换应用程序,外部中断0用来开启一次新的转换,
5 每次中断结束,自动申请中断1,进行数据的采集和显示
6 *********************************************************/
7 #include <reg51.h>
8 #include <absacc.h>
9
10 #define DIGPOT XBYTE[0x200] //定义字位口
11 #define WORDPOT XBYTE[0x100] // 定义字型口
12 #define fosc 11.0592 //晶振频率
13 #define timer0 2000 //延时时间
14
15 unsigned char t; //计算延时临时变量
16 sbit P10=P1^0;
17 sbit P11=P1^1;
18 sbit P12=P1^2;
19 sbit P13=P1^3;
20 sbit P14=P1^4;
21 sbit P15=P1^5;
22 sbit P16=P1^6;
23 sbit P17=P1^7;
24
25 unsigned char wordbuf[4]; //字型码缓冲区
26 void rdp1(void);
27 unsigned int bcd_convt(unsigned char i);
28 void yanshi(void); //保留
29
30
31 void TIMEER_DELAY(void); //延时函数
32 void display(void); //显示函数
33 void main(void)
34 {
35 1
36 1 IT0=1; // 中断0下降沿触发
37 1 EA=1;
38 1 EX0=1; //中断0开中断
39 1 IT1=1;
40 1 EX1=1;
41 1
42 1
43 1
44 1 P1=0xff;
45 1
46 1 wordbuf[0]=0xbf;
47 1 wordbuf[1]=0x3f;
48 1 wordbuf[2]=0x3f;
49 1 wordbuf[3]=0x3f;
50 1
51 1
52 1
53 1 while(1)
54 1 {
55 2 display( );
C51 COMPILER V8.02 AD转换 04/01/2006 14:11:18 PAGE 2
56 2
57 2 }
58 1
59 1 }
60
61 void int0(void) interrupt 0
62 {
63 1 IT1=1;
64 1 EX1=1; // 中断1开中断
65 1
66 1
67 1 wordbuf[0]=0xbf;
68 1 wordbuf[1]=0x3f;
69 1 wordbuf[2]=0x3f;
70 1 wordbuf[3]=0x3f;
71 1
72 1
73 1 }
74
75
76 void int1(void) interrupt 2
77 {
78 1
79 1
80 1
81 1 rdp1(); // 读取转换结果
82 1
83 1 EX1=1; //中断1关
84 1
85 1 }
86
87
88
89
90
91 /***************读取转换结果*******************/
92
93 void rdp1(void)
94 {
95 1 unsigned char i;
96 1 P1=0xFF;
97 1 while(P14==0){};
98 1 while(P14==1) //等待选通信号DS1
99 1 {
100 2 if ( P10==0 && P13==0 ) wordbuf[0]=0x86; //读最高位
101 2 if (P10==0 && P13==1 ) wordbuf[0]=0xbf;
102 2 }
103 1
104 1
105 1 i=0;
106 1
107 1 while(P15==0){};
108 1 yanshi();
109 1 i=P1;
110 1 i=i&0x0f;
111 1 if (i<0x0a) wordbuf[1]= bcd_convt(i);
112 1
113 1 i=0;
114 1 while(P16==0){}; //等待选通信号DS3
115 1 yanshi();
116 1 i=P1;
117 1 i=i&0x0f;
C51 COMPILER V8.02 AD转换 04/01/2006 14:11:18 PAGE 3
118 1 if (i<0x0a) wordbuf[2]= bcd_convt(i);
119 1
120 1 i=0;
121 1 while(P17==0){}; //等待选通信号DS4
122 1 yanshi();
123 1 i=P1;
124 1 i=i&0x0f;
125 1 if (i<0x0a) wordbuf[3]=bcd_convt(i);
126 1
127 1
128 1 }
129
130
131 /******************BCD码和7段码转换**********************/
132
133 unsigned int bcd_convt(unsigned char i)
134 {
135 1 unsigned char p;
136 1
137 1 switch (i)
138 1 {
139 2 case 0: p=0x3f; break;
140 2 case 1: p=0x06; break;
141 2 case 2: p=0x5b; break;
142 2 case 3: p=0x4f; break;
143 2 case 4: p=0x66; break;
144 2 case 5: p=0x6d; break;
145 2 case 6: p=0x7D; break;
146 2 case 7: p=0x07; break;
147 2 case 8: p=0x7f; break;
148 2 case 9: p=0x6f; break;
149 2 default: p=0x76; break; //乱码显示H
150 2
151 2 }
152 1
153 1 return(p) ;
154 1 }
155
156
157
158
159
160 /***************2毫秒延时函数***************/
161 void TIMEER_DELAY(void)
162 {
163 1 TMOD=0x01;
164 1 t=65536-timer0*fosc/12;
165 1 TH0= (t/256);
166 1 TL0= (t%256);
167 1 TR0=1;
168 1 ET0=0;
169 1 while(TH0!=0 && TL0!=0){};
170 1
171 1
172 1
173 1 }
174
175 /*******************结果显示函数***********************/
176 void display(void)
177 {
178 1 WORDPOT=wordbuf[0];
179 1 DIGPOT=0x01;
C51 COMPILER V8.02 AD转换 04/01/2006 14:11:18 PAGE 4
180 1 TIMEER_DELAY();
181 1 DIGPOT=0x00;
182 1
183 1
184 1 WORDPOT=wordbuf[1];
185 1 DIGPOT=0x02;
186 1 TIMEER_DELAY();
187 1 DIGPOT=0x00;
188 1
189 1
190 1
191 1 WORDPOT=wordbuf[2];
192 1 DIGPOT=0x04;
193 1 TIMEER_DELAY();
194 1 DIGPOT=0x00;
195 1
196 1
197 1 WORDPOT=wordbuf[3];
198 1 DIGPOT=0x08;
199 1 TIMEER_DELAY();
200 1 DIGPOT=0x00;
201 1
202 1 }
203
204 void yanshi(void)
205 {
206 1 int j;
207 1 for(j=0;j++;j<1000){};
208 1
209 1 }
210
211
212
213
214
215
216
217
218
219
220
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 426 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 5 1
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 + -