📄 矩阵键盘.lst
字号:
C51 COMPILER V6.12 _____黖_ 03/01/2009 11:54:09 PAGE 1
C51 COMPILER V6.12, COMPILATION OF MODULE _____黖_
OBJECT MODULE PLACED IN C:\Documents and Settings\Administrator\桌面\临时\矩阵键盘.obj
COMPILER INVOKED BY: E:\KEIL C51\C51\BIN\C51.EXE .\矩阵键盘.c DEBUG OBJECTEXTEND OBJECT(C:\Documents and Settings\Admini
-strator\桌面\临时\矩阵键盘.obj)
stmt level source
1 /****************************************/
2 /* 楼宇0711 */
3 /* http://www.bloglcz.ccoo.cn */
4 /* 综合演示程序 */
5 /* 目标器件:AT89C51 */
6 /* 晶振:11.0592MHZ */
7 /* 编译环境:Keil C51 */
8 /****************************************/
9
10 #include<reg51.h>
11
12 /*********************************数码管表格********************************/
13
14 unsigned char table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,
15
16 0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};
17
18 /****************************************************************************
19
20 函数功能:延时子程序
21
22 入口参数:
23
24 出口参数:
25
26 ****************************************************************************/
27
28 void delay(void)
29
30 {
31 1
32 1 unsigned char i,j;
33 1
34 1 for(i=0;i<20;i++)
35 1
36 1 for(j=0;j<250;j++);
37 1
38 1 }
39
40 /****************************************************************************
41
42 函数功能:LED显示子程序
43
44 入口参数:i
45
46 出口参数:
47
48 ****************************************************************************/
49
50 void display(unsigned char i)
51
52 {
53 1
54 1 P2=0x01;
C51 COMPILER V6.12 _____黖_ 03/01/2009 11:54:09 PAGE 2
55 1
56 1 P0=table[i];
57 1
58 1 }
59
60 /****************************************************************************
61
62 函数功能:键盘扫描子程序
63
64 入口参数:
65
66 出口参数:
67
68 ****************************************************************************/
69
70 void keyscan(void)
71
72 {
73 1
74 1 unsigned char n;
75 1
76 1 //扫描第一行
77 1
78 1 P1=0xfe;
79 1
80 1 n=P1;
81 1
82 1 n&=0xf0;
83 1
84 1 if(n!=0xf0)
85 1
86 1 {
87 2
88 2 delay();
89 2
90 2 P1=0xfe;
91 2
92 2 n=P1;
93 2
94 2 n&=0xf0;
95 2
96 2 if(n!=0xf0)
97 2
98 2 {
99 3
100 3 switch(n)
101 3
102 3 {
103 4
104 4 case(0xe0):display(0);break;
105 4
106 4 case(0xd0):display(1);break;
107 4
108 4 case(0xb0):display(2);break;
109 4
110 4 case(0x70):display(3);break;
111 4
112 4 }
113 3
114 3 }
115 2
116 2 }
C51 COMPILER V6.12 _____黖_ 03/01/2009 11:54:09 PAGE 3
117 1
118 1 //扫描第二行
119 1
120 1 P1=0xfd;
121 1
122 1 n=P1;
123 1
124 1 n&=0xf0;
125 1
126 1 if(n!=0xf0)
127 1
128 1 {
129 2
130 2 delay();
131 2
132 2 P1=0xfd;
133 2
134 2 n=P1;
135 2
136 2 n&=0xf0;
137 2
138 2 if(n!=0xf0)
139 2
140 2 {
141 3
142 3 switch(n)
143 3
144 3 {
145 4
146 4 case(0xe0):display(4);break;
147 4
148 4 case(0xd0):display(5);break;
149 4
150 4 case(0xb0):display(6);break;
151 4
152 4 case(0x70):display(7);break;
153 4
154 4 }
155 3
156 3 }
157 2
158 2 }
159 1
160 1 //扫描第三行
161 1
162 1 P1=0xfb;
163 1
164 1 n=P1;
165 1
166 1 n&=0xf0;
167 1
168 1 if(n!=0xf0)
169 1
170 1 {
171 2
172 2 delay();
173 2
174 2 P1=0xfb;
175 2
176 2 n=P1;
177 2
178 2 n&=0xf0;
C51 COMPILER V6.12 _____黖_ 03/01/2009 11:54:09 PAGE 4
179 2
180 2 if(n!=0xf0)
181 2
182 2 {
183 3
184 3 switch(n)
185 3
186 3 {
187 4
188 4 case(0xe0):display(8);break;
189 4
190 4 case(0xd0):display(9);break;
191 4
192 4 case(0xb0):display(10);break;
193 4
194 4 case(0x70):display(11);break;
195 4
196 4 }
197 3
198 3 }
199 2
200 2 }
201 1
202 1 //扫描第四行
203 1
204 1 P1=0xf7;
205 1
206 1 n=P1;
207 1
208 1 n&=0xf0;
209 1
210 1 if(n!=0xf0)
211 1
212 1 {
213 2
214 2 delay();
215 2
216 2 P1=0xf7;
217 2
218 2 n=P1;
219 2
220 2 n&=0xf0;
221 2
222 2 if(n!=0xf0)
223 2
224 2 {
225 3
226 3 switch(n)
227 3
228 3 {
229 4
230 4 case(0xe0):display(12);break;
231 4
232 4 case(0xd0):display(13);break;
233 4
234 4 case(0xb0):display(14);break;
235 4
236 4 case(0x70):display(15);break;
237 4
238 4 }
239 3
240 3 }
C51 COMPILER V6.12 _____黖_ 03/01/2009 11:54:09 PAGE 5
241 2
242 2 }
243 1
244 1 }
245
246 /****************************************************************************
247
248 函数功能:主程序
249
250 入口参数:
251
252 出口参数:
253
254 ****************************************************************************/
255
256 void main(void)
257
258 {
259 1
260 1 while(1)
261 1
262 1 {
263 2
264 2 keyscan();
265 2
266 2 }
267 1
268 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 314 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 16 ----
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 + -