📄 0.lst
字号:
C51 COMPILER V8.02 0 06/28/2010 11:17:35 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE 0
OBJECT MODULE PLACED IN 0.OBJ
COMPILER INVOKED BY: D:\处理软件\keil\C51\BIN\C51.EXE 0.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /******************************************************************
2 “天祥电子” 倾情奉献
3 www.txmcu.com
4 www.txmcu.cn
5 *******************************************************************
6
7 程序功能:按下键盘矩阵后,在六个数码管上依次显示所按下的键所代表的数字。
8 按复位键可以清空显示为0
9 ******************************************************************/
10 #include<reg51.h>
11
12 #define uchar unsigned char
13
14 sbit dula=P2^6;
15 sbit wela=P2^7;
16 sbit beep=P2^3;
17
18 uchar a=16,b=16,c=16,d=16,e=16,f=16;
19 uchar wei,temp,key,ok;
20 uchar s1,s2,s3,s4,s5,s6;
21 unsigned long shu;
22
23 unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
24 0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};
25
26
27 void delay(uchar i)
28 {
29 1 uchar j,k;
30 1 for(j=i;j>0;j--)
31 1 for(k=125;k>0;k--);
32 1 }
33
34
35 void keyscan()
36 {
37 1 P3=0xfe;
38 1 temp=P3;
39 1 temp=temp&0xf0;
40 1 if(temp!=0xf0)
41 1 {
42 2 delay(10);
43 2 if(temp!=0xf0)
44 2 {
45 3 temp=P3;
46 3 switch(temp)
47 3 {
48 4 case 0xee:
49 4 key=0;
50 4 wei++;
51 4 break;
52 4
53 4 case 0xde:
54 4 key=1;
55 4 wei++;
C51 COMPILER V8.02 0 06/28/2010 11:17:35 PAGE 2
56 4 break;
57 4
58 4 case 0xbe:
59 4 key=2;
60 4 wei++;
61 4 break;
62 4
63 4 case 0x7e:
64 4 key=3;
65 4 wei++;
66 4 break;
67 4 }
68 3 while(temp!=0xf0)
69 3 {
70 4 temp=P3;
71 4 temp=temp&0xf0;
72 4 beep=0;
73 4 }
74 3 beep=1;
75 3 }
76 2 }
77 1 P3=0xfd;
78 1 temp=P3;
79 1 temp=temp&0xf0;
80 1 if(temp!=0xf0)
81 1 {
82 2 delay(10);
83 2 if(temp!=0xf0)
84 2 {
85 3 temp=P3;
86 3 switch(temp)
87 3 {
88 4 case 0xed:
89 4 key=4;
90 4 wei++;
91 4 break;
92 4
93 4 case 0xdd:
94 4 key=5;
95 4 wei++;
96 4 break;
97 4
98 4 case 0xbd:
99 4 key=6;
100 4 wei++;
101 4 break;
102 4
103 4 case 0x7d:
104 4 key=7;
105 4 wei++;
106 4 break;
107 4 }
108 3 while(temp!=0xf0)
109 3 {
110 4 temp=P3;
111 4 temp=temp&0xf0;
112 4 beep=0;
113 4 }
114 3 beep=1;
115 3 }
116 2 }
117 1 P3=0xfb;
C51 COMPILER V8.02 0 06/28/2010 11:17:35 PAGE 3
118 1 temp=P3;
119 1 temp=temp&0xf0;
120 1 if(temp!=0xf0)
121 1 {
122 2 delay(10);
123 2 if(temp!=0xf0)
124 2 {
125 3 temp=P3;
126 3 switch(temp)
127 3 {
128 4 case 0xeb:
129 4 key=8;
130 4 wei++;
131 4 break;
132 4
133 4 case 0xdb:
134 4 key=9;
135 4 wei++;
136 4 break;
137 4 case 0x7b:
138 4 ok=1;
139 4 //key=11;
140 4 //wei++;
141 4 break;
142 4 }
143 3 while(temp!=0xf0)
144 3 {
145 4 temp=P3;
146 4 temp=temp&0xf0;
147 4 beep=0;
148 4 }
149 3 beep=1;
150 3 }
151 2 }
152 1 }
153
154
155 void display(uchar a,uchar b,uchar c,uchar d,uchar e,uchar f)
156 {
157 1 dula=0;
158 1 P0=table[a];
159 1 dula=1;
160 1 dula=0;
161 1
162 1 wela=0;
163 1 P0=0xfe;
164 1 wela=1;
165 1 wela=0;
166 1 delay(5);
167 1
168 1 P0=table[b];
169 1 dula=1;
170 1 dula=0;
171 1
172 1 P0=0xfd;
173 1 wela=1;
174 1 wela=0;
175 1 delay(5);
176 1
177 1 P0=table[c];
178 1 dula=1;
179 1 dula=0;
C51 COMPILER V8.02 0 06/28/2010 11:17:35 PAGE 4
180 1
181 1 P0=0xfb;
182 1 wela=1;
183 1 wela=0;
184 1 delay(5);
185 1
186 1 P0=table[d];
187 1 dula=1;
188 1 dula=0;
189 1
190 1 P0=0xf7;
191 1 wela=1;
192 1 wela=0;
193 1 delay(5);
194 1
195 1 P0=table[e];
196 1 dula=1;
197 1 dula=0;
198 1
199 1 P0=0xef;
200 1 wela=1;
201 1 wela=0;
202 1 delay(5);
203 1
204 1 P0=table[f];
205 1 dula=1;
206 1 dula=0;
207 1
208 1 P0=0xdf;
209 1 wela=1;
210 1 wela=0;
211 1 delay(5);
212 1 }
213
214 void main()
215 {
216 1 while(1)
217 1 {
218 2 keyscan();
219 2 if(wei!=0)
220 2 {
221 3 switch(wei)
222 3 {
223 4 case 1: a=key;s1=a; break;
224 4 case 2: b=key;s2=b; break;
225 4 case 3: c=key;s3=c; break;
226 4 case 4: d=key;s4=d; break;
227 4 case 5: e=key;s5=e; break;
228 4 case 6: f=key;s6=f; break;
229 4 }
230 3 }
231 2 if(ok) //将采集到的单个数据转化为一个整数。
232 2 { ok=0;
233 3 switch(wei)
234 3 {
235 4 case 1: shu=s1; break;
236 4 case 2: shu=s2+s1*10; break;
237 4 case 3: shu=s3+s2*10+s1*100; break;
238 4 case 4: shu=s4+s3*10+s2*100+s1*1000; break;
239 4 case 5: shu=s5+s4*10+s3*100+s2*1000+s1*10000; break;
240 4 case 6: shu=s6+s5*10+s4*100+s3*1000+s2*10000+s1*100000; break;
241 4 }
C51 COMPILER V8.02 0 06/28/2010 11:17:35 PAGE 5
242 3 wei=0;
243 3 // f=0;e=0;d=0;c=0;b=0;a=0;
244 3 // f=16;e=16;d=16;c=16;b=16;a=16;
245 3 s1=0;s2=0;s3=0;s4=0;s5=0;s6=0;
246 3 }
247 2 display(a,b,c,d,e,f);
248 2 }
249 1 }
250
251
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 832 ----
CONSTANT SIZE = 17 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 20 6
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 + -