📄 key_ultmate.lst
字号:
C51 COMPILER V8.08 KEY_ULTMATE 05/15/2009 19:15:14 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE KEY_ULTMATE
OBJECT MODULE PLACED IN key_ultmate.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE key_ultmate.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <reg51.h>
2 #include <stdio.h>
3 #define uchar unsigned char
4 #include <math.h>
5
6 uchar key_all=0;
7 uchar in_number=0;
8
9 uchar data12[9]={0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f};
10 int speed=4;int jieju;
11 const uchar data_void[9]={0x00,0x00,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f};
12 unsigned char anticlock[8]= { 0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1};
13 unsigned char clock[8]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9};
14
15 uchar in_status;
16 int temp;
17 uchar m;
18
19 sbit DIN=P3^5;
20 sbit LOAD=P3^6;
21 sbit CLP=P3^7;
22 bit yes;
23 //sbit my=P1^7;
24
25
26 void delay(void);
27 void send(uchar add,uchar );
28 void s_seg(uchar *p);
29 void keyscan(void); //键盘扫描函数
30 void clear_all(void);
31 void my_delay(void);
32
33 void zhengzhuan(int );
34 void fanzhuan(int ) ;
35 void key_process(void);
36
37
38 void main()
39 {
40 1 //uchar key_get=15;
41 1 in_status=0;
42 1 while(1)
43 1 {
44 2 keyscan();
45 2 key_process();
46 2 if(yes){ zhengzhuan(speed); yes=0;}
47 2
48 2 }
49 1 }
50
51 void key_process(void)
52 {
53 1
54 1 // in_number=0;
55 1
C51 COMPILER V8.08 KEY_ULTMATE 05/15/2009 19:15:14 PAGE 2
56 1
57 1 if((key_all==13 )||( key_all==14))
58 1 {
59 2 if(key_all==13) in_status=1;
60 2 else in_status= 2;
61 2 clear_all();
62 2 }
63 1 if((in_status!=0)&&(key_all>=1)&&(key_all<=10))
64 1 {
65 2 for(m=8;m>1;m--)
66 2 {
67 3 data12[m]=data12[m-1];
68 3 }
69 2 data12[1]=key_all-1;
70 2
71 2 in_number++;
72 2
73 2 s_seg(data12);
74 2
75 2
76 2 if( in_number >7 ) in_number=0;
77 2
78 2 }
79 1 if(key_all==11)
80 1 {
81 2 temp=0;
82 2 for(m=1;m<=in_number;m++)
83 2 {
84 3 temp+=data12[m]*pow(10,(m-1));
85 3 // temp=data12[1];
86 3 }
87 2 switch(in_status)
88 2 {
89 3 case 1: speed=temp;break;
90 3 case 2: jieju=temp;break;
91 3 }
92 2 yes=1;
93 2
94 2 }
95 1 if(key_all==12)
96 1 {
97 2 clear_all();
98 2
99 2 }
100 1
101 1 }
102 void clear_all(void)
103 {
104 1 uchar j;
105 1
106 1 in_number=0;
107 1 for( j=1;j<9;j++)
108 1 {
109 2 data12[j]=0x0f;
110 2
111 2 }
112 1
113 1 s_seg(data_void);
114 1
115 1 }
116 void delay(void) //延时函数
117 {
C51 COMPILER V8.08 KEY_ULTMATE 05/15/2009 19:15:14 PAGE 3
118 1 int i;
119 1 for (i=4800;i>0;i--);
120 1 }
121
122 void keyscan(void) //键盘扫描函数
123 {
124 1 uchar scan,tep;
125 1 key_all=0;
126 1 P2=0xf0;
127 1 if((P2&0xf0)!=0xf0) //若有键盘按下
128 1 {
129 2 delay();
130 2 if((P2&0xf0)!=0xf0) //若有键盘按下
131 2
132 2 {
133 3 P2=0xfe; // 发全0扫描码
134 3
135 3 if((P2&0xf0)!=0xf0) //若有键盘按下
136 3 {
137 4 delay();
138 4 if((P2&0xf0)!=0xf0) //若有键盘按下
139 4 {
140 5 scan=P2&0xf0;
141 5 switch( scan)
142 5 {
143 6 case 0xe0: key_all= 1;break;
144 6 case 0xd0: key_all= 2;break;
145 6 case 0xb0: key_all= 3;break;
146 6 case 0x70: key_all= 4;break;
147 6 }
148 5 while((P2&0xf0)!=0xf0);
149 5
150 5 }
151 4 return ;
152 4 }
153 3
154 3 P2=0xfd; // 发全0扫描码
155 3
156 3 if((P2&0xf0)!=0xf0) //若有键盘按下
157 3 {
158 4 delay();
159 4 if((P2&0xf0)!=0xf0) //若有键盘按下
160 4 {
161 5 scan=P2&0xf0;
162 5 switch( scan)
163 5 {
164 6 case 0xe0: key_all= 5;break;
165 6 case 0xd0: key_all= 6;break;
166 6 case 0xb0: key_all= 7;break;
167 6 case 0x70: key_all= 8;break;
168 6 }
169 5 while(( P2&0xf0)!=0xf0);
170 5
171 5
172 5 }
173 4 return ;
174 4 }
175 3 P2=0xfb; // 发全0扫描码
176 3
177 3 if((P2&0xf0)!=0xf0) //若有键盘按下
178 3 {
179 4 delay();
C51 COMPILER V8.08 KEY_ULTMATE 05/15/2009 19:15:14 PAGE 4
180 4 if((P2&0xf0)!=0xf0) //若有键盘按下
181 4 {
182 5 scan=P2&0xf0;
183 5 switch( scan)
184 5 {
185 6 case 0xe0: key_all= 9;break;
186 6 case 0xd0: key_all= 10;break;
187 6 case 0xb0: key_all= 11;break;
188 6 case 0x70: key_all= 12;break;
189 6 }
190 5 while(( P2&0xf0)!=0xf0);
191 5
192 5 }
193 4 return;
194 4 }
195 3 P2=0xf7; // 发全0扫描码
196 3
197 3 if((P2&0xf0)!=0xf0) //若有键盘按下
198 3 {
199 4 delay();
200 4 if((P2&0xf0)!=0xf0) //若有键盘按下
201 4 {
202 5 scan=P2&0xf0;
203 5 switch( scan)
204 5 {
205 6 case 0xe0: key_all= 13;break;
206 6 case 0xd0: key_all= 14;break;
207 6 case 0xb0: key_all= 15;break;
208 6 case 0x70: key_all= 16;break;
209 6 }
210 5 while(( P2&0xf0)!=0xf0);
211 5
212 5 }
213 4 return;
214 4 }
215 3 }
216 2 }
217 1 }
*** WARNING C280 IN LINE 124 OF KEY_ULTMATE.C: 'tep': unreferenced local variable
218
219 void send(uchar add,uchar dat)
220 {
221 1 uchar ADS,i,j;
222 1 CLP=0;
223 1 LOAD=0;
224 1 DIN=0;
225 1 i=4;
226 1 while(i<16)
227 1 {
228 2 if(i<8)
229 2 {
230 3 ADS=add;
231 3 }
232 2 else
233 2 {
234 3 ADS=dat;
235 3 }
236 2 for(j=8;j>=1;j--)
237 2 {
238 3
239 3 if((ADS&0x80)==0)
240 3 { DIN=0 ;}
C51 COMPILER V8.08 KEY_ULTMATE 05/15/2009 19:15:14 PAGE 5
241 3 else
242 3 { DIN=1;}
243 3 ADS=ADS<<1;
244 3
245 3 CLP=1;
246 3 CLP=0;
247 3 }
248 2 i=i+8;
249 2 }
250 1 LOAD=1;
251 1 }
252
253 void s_seg(uchar *p)
254 {
255 1 send(0x0c,0x01);//正常状态
256 1 send(0x0b,0x07);//设置扫描范围DIG0-7
257 1 send(0x0a,0x05);//设置亮度11/32
258 1 send(0x09,0xff);//采用译码方式
259 1
260 1 send(0x01,p[8]);
261 1 send(0x02,p[7]);
262 1 send(0x03,p[6]);
263 1 send(0x04,p[5]);
264 1 send(0x05,p[4]);
265 1 send(0x06,p[3]);
266 1 send(0x07,p[2]);
267 1 send(0x08,p[1]);
268 1 }
269
270
271
272
273
274 /*void zhengzhuan(int step)
275 {
276 int i; unsigned char pos;
277
278 for (i=0;i<step;i++)
279 {
280 if(pos>7) pos=0;
281 P1=clock[pos];
282 pos++;
283 my_delay();
284 }
285 }
286 void fanzhuan(int step)
287 {
288 int i; unsigned char pos;
289 my_delay();
290
291
292 for (i=0;i<step;i++)
293 {
294 if(pos>7) pos=0;
295 P1=anticlock[pos];
296 pos++;
297 my_delay();
298 }
299 }
300 */
301
302 void zhengzhuan(int step)
C51 COMPILER V8.08 KEY_ULTMATE 05/15/2009 19:15:14 PAGE 6
303 {
304 1 int i; unsigned char pos;
305 1 for (pos=0;pos<step;pos++)
306 1 {
307 2
308 2 for (i=0;i<8;i++)
309 2 {
310 3 P1=clock[i];
311 3 my_delay();
312 3 }
313 2 }
314 1 }
315 void fanzhuan(int step)
316 {
317 1 int i; unsigned char pos;
318 1 for (pos=0;pos<step;pos++)
319 1 {
320 2
321 2 for (i=0;i<8;i++)
322 2 {
323 3 P1=anticlock[i];
324 3 my_delay();
325 3 }
326 2 }
327 1 }
328
329
330
331
332 void my_delay(void)
333 {
334 1 int i,j;
335 1 for (i=0;i<10000;i++);
336 1 {
337 2 for(j=0;j<10000;j++);
338 2 }
339 1 }
340
341
342
343
344
345
346
347
348
349
350
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 984 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 44 14
IDATA SIZE = ---- ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 1 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -