📄 main.lst
字号:
C51 COMPILER V7.20 MAIN 09/09/2008 17:22:36 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: G:\keil软件\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
line level source
1 //#include<reg51.h>
2 #include"STC12C5410AD.h"
3 #define unchar unsigned char
4 #define uint unsigned int
5
6 unchar code seg1[16] ={0x30,0xf9,0x64,0xe0,0xa9,0xa2,0x22,0xf8,0x20,0xa0,0x28,0x23,0x36,0x61,0x26,0x2e};/
-/大模板上
7 //0,1,2,3,4,5,6,7,8,9,A,b,C,d,e,F
8 unchar code seg2[11] = {0x21,0xf3,0x19,0x51,0xc3,0x45,0x05,0xf1,0x01,0x41,0x84} ;//小模板上 (不带小数点)
9 unchar code seg3[11] = {0x20,0xf2,0x18,0x50,0xc3,0x45,0x04,0xf0,0x00,0x40,0x83} ; //小模板上 (带小数点)
10 unchar code act1[4] = { 0xf7,0xfb,0xfd,0xfe}; //单位选位
11 unchar code act2[9]={0xfe,0xfc,0xf8,0xf0,0xf1,0xf3,0xf7,0xff}; //用作渐出渐入显示选位
12 //uint sum=125;
13 uint key ; //按键按下标志(1到6)
14 uint xdata record1[128]; //用于角度传感器的转换
15 uint xdata record2[128]; //用于按键的转换识别
16 uint xdata record_v[128] ; //用于电压显示
17 uint flag ;
18
19 sbit led = P2^5;
20 sbit m10 = P3^5;
21 sbit m11 = P3^7;
22 sbit m20 = P3^2;
23 sbit m21 = P3^3;
24 sbit right = P1^4;
25 sbit left = P1^5;
26 sbit s0 = P1^0;
27 sbit s1 = P1^1;
28 sbit s2 = P1^2 ;
29 sbit s3 = P1^3;
30
31 /*延时程序*/
32 void delay(int k)
33 {
34 1 int i,j;
35 1 for(i=0;i<k;i++)
36 1 for(j=0;j<121;j++)
37 1 { ; }
38 1 }
39
40
41 /*启动AD转换并返回转换值*/
42 uint GET_AD_Result()
43 {
44 1 unchar temp;
45 1 uint data_temp;
46 1 data_temp=0;
47 1 ADC_DATA=0;
48 1 ADC_LOW2=0;
49 1 ADC_CONTR|=0x08;
50 1 re: temp=0x10;
51 1 temp&=ADC_CONTR; //判断转换是否完成
52 1 if(temp==0)
53 1 goto re;
54 1 ADC_CONTR&=0xe7; //软件清零
C51 COMPILER V7.20 MAIN 09/09/2008 17:22:36 PAGE 2
55 1 data_temp=ADC_DATA;
56 1 data_temp<<=2;
57 1 data_temp+=ADC_LOW2;
58 1 return data_temp;
59 1 }
60 /*显示角度值*/
61 show_r(int h)
62 {
63 1 int a , b ,i;
64 1 if(h > 0)
65 1 {
66 2 if(h < 10)
67 2 {
68 3 for(i = 0; i < 100; i++)
69 3 {
70 4 { P1 = act1[2];P2 = seg2[h];delay(5); }
71 4 { P1 = act1[3]; P2 = 0xc9; delay(5); }//显示“ °” (读数符号)
72 4 }
73 3 }
74 2 else
75 2 {
76 3 a = h%10;
77 3 b =h/10;
78 3 for(i = 0; i < 150; i++)
79 3 {
80 4 { P1 = act1[2]; P2 = seg2[a];delay(5); }
81 4 { P1 = act1[1]; P2 = seg2[b]; delay(5); }
82 4 { P1 = act1[3]; P2 = 0xc9; delay(5); }
83 4 }
84 3 }
85 2 }
86 1
87 1 else
88 1 {
89 2 h = ~h;
90 2
91 2 if(h < 10)
92 2 {
93 3 for(i = 0; i < 150; i++)
94 3 {
95 4 { P1 = act1[2];P2 = seg2[h];delay(5); }
96 4 { P1 = act1[1]; P2 = 0xdf; delay(5); }
97 4 { P1 = act1[3]; P2 = 0xc9; delay(5); }
98 4 }
99 3 }
100 2
101 2 else
102 2 {
103 3 a = h%10;
104 3 b =h/10;
105 3 for(i = 0; i < 150; i++)
106 3 {
107 4 { P1 = act1[2]; P2 = seg2[a];delay(5); }
108 4 { P1 = act1[1]; P2 = seg2[b]; delay(5); }
109 4 { P1 = act1[0]; P2 = 0xdf; delay(5); } //显示负号
110 4 { P1 = act1[3]; P2 = 0xc9; delay(5); }
111 4 }
112 3 }
113 2 }
114 1
115 1
116 1 }
C51 COMPILER V7.20 MAIN 09/09/2008 17:22:36 PAGE 3
117
118
119 /*将转换出来的数据转换成角度值*/
120 void moto(uint h)
121 { int r ,i,k;
122 1 r=(h/5)-83; //转换成角度值
123 1 show_r(r); //显示角度值
124 1
125 1 if(flag)
126 1 {
127 2 if(r > 0)
128 2 {
129 3 {
130 4 led = 0;
131 4 m10 = 1;
132 4 m11 = 0;
133 4 delay(2000);
134 4 m10 = 1;
135 4 m11 = 1;
136 4 delay(100);
137 4 /*CMOD = 0x02;
138 4 CL = 0x00;
139 4 CH = 0x00;
140 4 CCAP0L = 0xff;
141 4 CCAP0H = 0xff;
142 4 CCAPM0 = 0x42;
143 4
144 4 CCAP1L = 0x00;
145 4 CCAP1H = 0x00;
146 4 CCAPM1 = 0x00;
147 4 CR = 1; */
148 4 flag = 0;
149 4 }
150 3 }
151 2 else if(r < 0)
152 2 {
153 3 {
154 4 led = 1;
155 4 m10 = 0;
156 4 m11 = 1;
157 4 delay(2000);
158 4 m10 = 1;
159 4 m11 = 1;
160 4 delay(100);
161 4 flag = 0;
162 4
163 4 /*CMOD = 0x02;
164 4 CL = 0x00;
165 4 CH = 0x00;
166 4 CCAP0L = 0x00;
167 4 CCAP0H = 0x00;
168 4 CCAPM0 = 0x00;
169 4
170 4 CCAP1L = 0xff;
171 4 CCAP1H = 0xff;
172 4 CCAPM1 = 0x42;
173 4 CR = 1;*/
174 4 }
175 3 }
176 2 else
177 2 {
178 3 led = 0;
C51 COMPILER V7.20 MAIN 09/09/2008 17:22:36 PAGE 4
179 3 m10 = 1;
180 3 m11 = 1;
181 3 flag = 0;
182 3 /*CMOD = 0x02;
183 3 CL = 0x00;
184 3 CH = 0x00;
185 3 CCAP0L = 0x00;
186 3 CCAP0H = 0x00;
187 3 CCAPM0 = 0x00;
188 3
189 3 CCAP1L = 0x00;
190 3 CCAP1H = 0x00;
191 3 CCAPM1 = 0x00;
192 3 CR = 1;*/
193 3 }
194 2
195 2 }
196 1
197 1 else
198 1 {
199 2 if(r > 3)
200 2 {
201 3 {
202 4 led = 0;
203 4 m10 = 1;
204 4 m11 = 0;
205 4 delay(2000);
206 4 m10 = 1;
207 4 m11 = 1;
208 4 delay(100);
209 4 /*CMOD = 0x02;
210 4 CL = 0x00;
211 4 CH = 0x00;
212 4 CCAP0L = 0xff;
213 4 CCAP0H = 0xff;
214 4 CCAPM0 = 0x42;
215 4
216 4 CCAP1L = 0x00;
217 4 CCAP1H = 0x00;
218 4 CCAPM1 = 0x00;
219 4 CR = 1; */
220 4 flag = 0;
221 4 }
222 3 }
223 2 else if(r < -3)
224 2 {
225 3
226 3 {
227 4 led = 1;
228 4 m10 = 0;
229 4 m11 = 1;
230 4 delay(2000);
231 4 m10 = 1;
232 4 m11 = 1;
233 4 delay(100);
234 4 flag = 0;
235 4
236 4 /*CMOD = 0x02;
237 4 CL = 0x00;
238 4 CH = 0x00;
239 4 CCAP0L = 0x00;
240 4 CCAP0H = 0x00;
C51 COMPILER V7.20 MAIN 09/09/2008 17:22:36 PAGE 5
241 4 CCAPM0 = 0x00;
242 4
243 4 CCAP1L = 0xff;
244 4 CCAP1H = 0xff;
245 4 CCAPM1 = 0x42;
246 4 CR = 1;*/
247 4
248 4
249 4
250 4 }
251 3 }
252 2 else
253 2 {
254 3 led = 0;
255 3 m10 = 1;
256 3 m11 = 1;
257 3 flag = 0;
258 3 /*CMOD = 0x02;
259 3 CL = 0x00;
260 3 CH = 0x00;
261 3 CCAP0L = 0x00;
262 3 CCAP0H = 0x00;
263 3 CCAPM0 = 0x00;
264 3
265 3 CCAP1L = 0x00;
266 3 CCAP1H = 0x00;
267 3 CCAPM1 = 0x00;
268 3 CR = 1;*/
269 3 }
270 2 }
271 1 }
*** WARNING C280 IN LINE 121 OF MAIN.C: 'i': unreferenced local variable
*** WARNING C280 IN LINE 121 OF MAIN.C: 'k': unreferenced local variable
272
273 /*震动传感器模数转换初始化*/
274 void init_AD()
275 {
276 1 uint a,i,j,b,result,sum;
277 1 uint aa[15];
278 1 unchar k;
279 1 record1[k]=0;
280 1 delay(10);
281 1
282 1 ADC_CONTR|=0x80; //开ADC电源
283 1 P1M0=0xb0; // 将P1.7口设为开漏模式 P1M0 = 1000 0000 (11 开漏 ; 10 高阻 ;01 推挽输出 ;00
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -