keyboard.lst
来自「含有大量的单片机代码」· LST 代码 · 共 328 行
LST
328 行
C51 COMPILER V7.06 KEYBOARD 12/01/2006 20:20:16 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE KEYBOARD
OBJECT MODULE PLACED IN keyboard.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE keyboard.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include"reg52.h"
2 #include "intrins.h"
3 #include "key.h" //按键通码与ascii对照表
4 #define uchar unsigned char
5 #define uint unsigned int
6 #define cmd_word 0xff //复位命令
7
8 //sbit Clk_Line = P3^3; //时钟线
9 //sbit Data_Line=P3^5; //键盘数据线
10
11 sbit Clk_Line = P3^3; //时钟线
12 sbit Data_Line=P3^4; //键盘数据线
13
14 uchar key=0; //按键最终值
15 uint Key_Value=0;
16 uchar save=0;
17 uchar Int_Time=0;
18 void init(void);
19 void delay(uint us); //us=12大约100us
20 void command(uchar cmd);
21 void commanden(uchar cmd);
22 void interrupt1_receive(void);
23 void getkey(void) ;////内部中断0 用来处理缓冲区里的数据
24 void main(void)
25 {
26 1 uchar thir=2;
27 1 init(); //初始化
28 1 while(thir--)
29 1 {
30 2 command(cmd_word);
31 2 //commanden(0xf4);
32 2 delay(1000);
33 2 }
34 1 delay(150);
35 1 delay(300);
36 1 while(1)
37 1 {
38 2 EX1=1;
39 2 while(EX1) ;
40 2 P0=Key_Value;
41 2 getkey();
42 2
43 2 }
44 1 }
45 void init(void)
46 {
47 1 EA = 1;
48 1 IT1 = 1; //外部中断1是下降沿触发方式
49 1 TMOD = 0x20; //定时器1工作于方式2
50 1 TL1 = 0xfd; //串口波特率设置为9600
51 1 TH1 = 0xfd;
52 1 SCON = 0xd8; //11011000 串口工作方式3,11位异步收发,波特率由定时器1控制
53 1 PCON = 0x00;
54 1 TR1 = 1; //启动定时器1
55 1 }
C51 COMPILER V7.06 KEYBOARD 12/01/2006 20:20:16 PAGE 2
56
57 void getkey(void)
58 {
59 1 uchar i=0;
60 1 save = Key_Value;
61 1 //P0 = save;
62 1 for(i=0;i<80;i++)
63 1 {
64 2 if(noshift[i][0]==save) //普按键的通码在缓冲区的第一位
65 2 {
66 3 key=noshift[i][1]; //搜索到字母后进行相应的处理
67 3 P0 = key;
68 3 break;
69 3 }
70 2 }
71 1 }
72
73 void delay(uint us) //us=12大约100us
74 {
75 1 while(us--) ;
76 1 }
77
78 void interrupt1_receive(void) interrupt 2
79 {
80 1 _nop_();
81 1 if(Data_Line)
82 1 Key_Value|=0x8000;
83 1 Int_Time++;
84 1 if(Int_Time==11)
85 1 {
86 2 Key_Value>>=6;
87 2 Int_Time=0;
88 2 EX1=0;
89 2 }
90 1 Key_Value>>=1;
91 1 }
92 void command(uchar cmd)
93 {
94 1 uchar parity,time;
95 1 parity=0;
96 1 Clk_Line=1;
97 1 Data_Line=1;
98 1 delay(100);
99 1 Clk_Line=0;
100 1 delay(20);
101 1 Data_Line=0;
102 1 _nop_();
103 1 _nop_();
104 1 _nop_();
105 1 _nop_();
106 1 _nop_();
107 1 Clk_Line=1;
108 1 while(Clk_Line) ;
109 1 _nop_();
110 1 _nop_();
111 1 _nop_();
112 1 _nop_();
113 1 _nop_();
114 1 Data_Line=1; //数据开始了
115 1 while(!Clk_Line) ;
116 1 while(Clk_Line) ;
117 1 _nop_();
C51 COMPILER V7.06 KEYBOARD 12/01/2006 20:20:16 PAGE 3
118 1 _nop_();
119 1 _nop_();
120 1 _nop_();
121 1 _nop_();
122 1 Data_Line=1;
123 1 while(!Clk_Line) ;
124 1 while(Clk_Line) ;
125 1 _nop_();
126 1 _nop_();
127 1 _nop_();
128 1 _nop_();
129 1 _nop_();
130 1 Data_Line=1;
131 1 while(!Clk_Line) ;
132 1 while(Clk_Line) ;
133 1 _nop_();
134 1 _nop_();
135 1 _nop_();
136 1 _nop_();
137 1 _nop_();
138 1 Data_Line=1;
139 1 while(!Clk_Line) ;
140 1 while(Clk_Line) ;
141 1 _nop_();
142 1 _nop_();
143 1 _nop_();
144 1 _nop_();
145 1 _nop_();
146 1 Data_Line=1;
147 1 while(!Clk_Line) ;
148 1 while(Clk_Line) ;
149 1 _nop_();
150 1 _nop_();
151 1 _nop_();
152 1 _nop_();
153 1 _nop_();
154 1 Data_Line=1;
155 1 while(!Clk_Line) ;
156 1 while(Clk_Line) ;
157 1 _nop_();
158 1 _nop_();
159 1 _nop_();
160 1 _nop_();
161 1 _nop_();
162 1 Data_Line=1;
163 1 while(!Clk_Line) ;
164 1 while(Clk_Line) ;
165 1 _nop_();
166 1 _nop_();
167 1 _nop_();
168 1 _nop_();
169 1 _nop_();
170 1 Data_Line=1;
171 1 while(!Clk_Line) ;
172 1 while(Clk_Line) ;
173 1 parity=8;
174 1 if((parity&0x01))
175 1 Data_Line=0;
176 1 Data_Line=1;
177 1 _nop_();
178 1 _nop_();
179 1 _nop_();
C51 COMPILER V7.06 KEYBOARD 12/01/2006 20:20:16 PAGE 4
180 1 _nop_();
181 1 _nop_();
182 1 while(!Clk_Line) ;
183 1 while(Clk_Line) ;
184 1 Data_Line=1;
185 1 while(!Clk_Line);
186 1 while(Data_Line) ;
187 1 while(Clk_Line) ;
188 1 while(!Clk_Line) ;
189 1 while(!Data_Line);
190 1 }
*** WARNING C280 IN LINE 92 OF KEYBOARD.C: 'cmd': unreferenced local variable
*** WARNING C280 IN LINE 94 OF KEYBOARD.C: 'time': unreferenced local variable
191
192 void commanden(uchar cmd)
193 {
194 1 uchar parity,time;
195 1 parity=0;
196 1 Clk_Line=1;
197 1 Data_Line=1;
198 1 delay(100);
199 1 Clk_Line=0;
200 1 delay(20);
201 1 Data_Line=0;
202 1 _nop_();
203 1 _nop_();
204 1 _nop_();
205 1 _nop_();
206 1 _nop_();
207 1 Clk_Line=1;
208 1 while(Clk_Line) ;
209 1 _nop_();
210 1 _nop_();
211 1 _nop_();
212 1 _nop_();
213 1 _nop_();
214 1 Data_Line=0;
215 1 while(!Clk_Line) ;
216 1 while(Clk_Line) ;
217 1 _nop_();
218 1 _nop_();
219 1 _nop_();
220 1 _nop_();
221 1 _nop_();
222 1 Data_Line=0;
223 1 while(!Clk_Line) ;
224 1 while(Clk_Line) ;
225 1 _nop_();
226 1 _nop_();
227 1 _nop_();
228 1 _nop_();
229 1 _nop_();
230 1 Data_Line=1;
231 1 while(!Clk_Line) ;
232 1 while(Clk_Line) ;
233 1 _nop_();
234 1 _nop_();
235 1 _nop_();
236 1 _nop_();
237 1 _nop_();
238 1 Data_Line=0;
239 1 while(!Clk_Line) ;
C51 COMPILER V7.06 KEYBOARD 12/01/2006 20:20:16 PAGE 5
240 1 while(Clk_Line) ;
241 1 _nop_();
242 1 _nop_();
243 1 _nop_();
244 1 _nop_();
245 1 _nop_();
246 1 Data_Line=1;
247 1 while(!Clk_Line) ;
248 1 while(Clk_Line) ;
249 1 _nop_();
250 1 _nop_();
251 1 _nop_();
252 1 _nop_();
253 1 _nop_();
254 1 Data_Line=1;
255 1 while(!Clk_Line) ;
256 1 while(Clk_Line) ;
257 1 _nop_();
258 1 _nop_();
259 1 _nop_();
260 1 _nop_();
261 1 _nop_();
262 1 Data_Line=1;
263 1 while(!Clk_Line) ;
264 1 while(Clk_Line) ;
265 1 _nop_();
266 1 _nop_();
267 1 _nop_();
268 1 _nop_();
269 1 _nop_();
270 1 Data_Line=1;
271 1 while(!Clk_Line) ;
272 1 while(Clk_Line) ;
273 1 parity=5;
274 1 if((parity&0x01))
275 1 Data_Line=0;
276 1 Data_Line=1;
277 1 _nop_();
278 1 _nop_();
279 1 _nop_();
280 1 _nop_();
281 1 _nop_();
282 1 while(!Clk_Line) ;
283 1 while(Clk_Line) ;
284 1 Data_Line=1;
285 1 while(!Clk_Line);
286 1 while(Data_Line) ;
287 1 while(Clk_Line) ;
288 1 while(!Clk_Line) ;
289 1 while(!Data_Line);
290 1 }
*** WARNING C280 IN LINE 192 OF KEYBOARD.C: 'cmd': unreferenced local variable
*** WARNING C280 IN LINE 194 OF KEYBOARD.C: 'time': unreferenced local variable
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 536 ----
CONSTANT SIZE = 254 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 5 5
IDATA SIZE = ---- ----
C51 COMPILER V7.06 KEYBOARD 12/01/2006 20:20:16 PAGE 6
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 4 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?