📄 keyboard.lst
字号:
C51 COMPILER V7.00 KEYBOARD 12/15/2004 13:45:58 PAGE 1
C51 COMPILER V7.00, 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 "keyboard.h"
2
3 void kbbufadd(unsigned char dat)
4 {
5 1 unsigned char i;
6 1
7 1 for (i=0;i<BUFLEN;i++)
8 1 {
9 2 if (kbbuf[i]==dat)
10 2 {
11 3 return;
12 3 }
13 2 }
14 1 for (i=0;i<BUFLEN;i++)
15 1 {
16 2 if (kbbuf[i]==0)
17 2 {
18 3 kbbuf[i] = dat;
19 3 break;
20 3 }
21 2 }
22 1 }
23
24 void kbbufdel(unsigned char dat)
25 {
26 1 unsigned char i, c, c0 = 0, t;
27 1 bit f = 0;
28 1
29 1 for (i=0;i<BUFLEN;i++)
30 1 {
31 2 if (kbbuf[i] == dat)
32 2 {
33 3 t = i;
34 3 kbbuf[i] = 0;
35 3 f = 1;
36 3 }
37 2 }
38 1 if (f == 0)
39 1 {
40 2 for (i=0;i<BUFLEN;i++)
41 2 {
42 3 kbbuf[i] = 0;
43 3 }
44 2 }
45 1 }
*** WARNING C280 IN LINE 26 OF KEYBOARD.C: 'c': unreferenced local variable
46
47 void kbReply(void)
48 {
49 1 unsigned char i, j, t, mod;
50 1
51 1 j = 2; mod = 0;
52 1 for (i=0;i<6;i++)
53 1 {
54 2 ReplyBuffer[i+2] = 0;
C51 COMPILER V7.00 KEYBOARD 12/15/2004 13:45:58 PAGE 2
55 2 t = kbdecode(kbbuf[i]);
56 2 if (t != 0)
57 2 {
58 3 s0 = 0;
59 3 switch (t) {
60 4 case 0xe0:
61 4 s0b0 = 1;
62 4 break;
63 4 case 0xe1:
64 4 s0b1 = 1;
65 4 break;
66 4 case 0xe2:
67 4 s0b2 = 1;
68 4 break;
69 4 case 0xe3:
70 4 s0b3 = 1;
71 4 break;
72 4 case 0xe4:
73 4 s0b4 = 1;
74 4 break;
75 4 case 0xe5:
76 4 s0b5 = 1;
77 4 break;
78 4 case 0xe6:
79 4 s0b6 = 1;
80 4 break;
81 4 case 0xe7:
82 4 s0b7 = 1;
83 4 break;
84 4 default:
85 4 ;
86 4 }
87 3 if (s0 == 0) ReplyBuffer[j++] = t;
88 3 mod |= s0;
89 3 }
90 2 }
91 1
92 1 ReplyCount = 8;
93 1 ReplyBuffer[0] = mod;
94 1 ReplyBuffer[1] = 0;
95 1 }
96
97 void kbScan(void)
98 {
99 1 bit p;
100 1 p = ps2read();
101 1 while (ps2test(p) == 0)
102 1 {
103 2 ps2write(0xfe);
104 2 p = ps2read();
105 2 }
106 1 Output(PS2_BYTE);
107 1
108 1 if (PS2_Ready == 1)
109 1 {
110 2 if (PS2_BYTE != 0xf0)
111 2 {
112 3 kbbufadd(PS2_BYTE);
113 3 }
114 2 else
115 2 {
116 3 do {
C51 COMPILER V7.00 KEYBOARD 12/15/2004 13:45:58 PAGE 3
117 4 p = ps2read();
118 4 while (ps2test(p) == 0)
119 4 {
120 5 ps2write(0xfe);
121 5 p = ps2read();
122 5 }
123 4 Output(PS2_BYTE);
124 4 } while (PS2_Ready == 0);
125 3
126 3 kbbufdel(PS2_BYTE);
127 3 }
128 2 kbReply(); //write keyboard buffer to reply buffer
129 2 // IsListening = 0;
130 2 d12comm(0x03);
131 2 SendReplyBuffer();
132 2 }
133 1 }
134
135 unsigned char kbdecode(unsigned char dat)
136 {
137 1 unsigned char usage;
138 1
139 1 switch (dat) {
140 2 case 0x1c:
141 2 usage = 0x04;
142 2 break;
143 2 case 0x32:
144 2 usage = 0x05;
145 2 break;
146 2 case 0x21:
147 2 usage = 0x06;
148 2 break;
149 2 case 0x23:
150 2 usage = 0x07;
151 2 break;
152 2 case 0x24:
153 2 usage = 0x08;
154 2 break;
155 2 case 0x2b:
156 2 usage = 0x09;
157 2 break;
158 2 case 0x34:
159 2 usage = 0x0a;
160 2 break;
161 2 case 0x33:
162 2 usage = 0x0b;
163 2 break;
164 2 case 0x43:
165 2 usage = 0x0c;
166 2 break;
167 2 case 0x3b:
168 2 usage = 0x0d;
169 2 break;
170 2 case 0x42:
171 2 usage = 0x0e;
172 2 break;
173 2 case 0x4b:
174 2 usage = 0x0f;
175 2 break;
176 2 case 0x3a:
177 2 usage = 0x10;
178 2 break;
C51 COMPILER V7.00 KEYBOARD 12/15/2004 13:45:58 PAGE 4
179 2 case 0x31:
180 2 usage = 0x11;
181 2 break;
182 2 case 0x44:
183 2 usage = 0x12;
184 2 break;
185 2 case 0x4d:
186 2 usage = 0x13;
187 2 break;
188 2 case 0x15:
189 2 usage = 0x14;
190 2 break;
191 2 case 0x2d:
192 2 usage = 0x15;
193 2 break;
194 2 case 0x1b:
195 2 usage = 0x16;
196 2 break;
197 2 case 0x2c:
198 2 usage = 0x17;
199 2 break;
200 2 case 0x3c:
201 2 usage = 0x18;
202 2 break;
203 2 case 0x2a:
204 2 usage = 0x19;
205 2 break;
206 2 case 0x1d:
207 2 usage = 0x1a;
208 2 break;
209 2 case 0x22:
210 2 usage = 0x1b;
211 2 break;
212 2 case 0x35:
213 2 usage = 0x1c;
214 2 break;
215 2 case 0x1a:
216 2 usage = 0x1d;
217 2 break;
218 2 case 0x16:
219 2 usage = 0x1e;
220 2 break;
221 2 case 0x1e:
222 2 usage = 0x1f;
223 2 break;
224 2 case 0x26:
225 2 usage = 0x20;
226 2 break;
227 2 case 0x25:
228 2 usage = 0x21;
229 2 break;
230 2 case 0x2e:
231 2 usage = 0x22;
232 2 break;
233 2 case 0x36:
234 2 usage = 0x23;
235 2 break;
236 2 case 0x3d:
237 2 usage = 0x24;
238 2 break;
239 2 case 0x3e:
240 2 usage = 0x25;
C51 COMPILER V7.00 KEYBOARD 12/15/2004 13:45:58 PAGE 5
241 2 break;
242 2 case 0x46:
243 2 usage = 0x26;
244 2 break;
245 2 case 0x45:
246 2 usage = 0x27;
247 2 break;
248 2 case 0x5a:
249 2 usage = 0x28;
250 2 break;
251 2 case 0x76:
252 2 usage = 0x29;
253 2 break;
254 2 case 0x66:
255 2 usage = 0x2a;
256 2 break;
257 2 case 0x0d:
258 2 usage = 0x2b;
259 2 break;
260 2 case 0x29:
261 2 usage = 0x2c;
262 2 break;
263 2 case 0x4e:
264 2 usage = 0x2d;
265 2 break;
266 2 case 0x55:
267 2 usage = 0x2e;
268 2 break;
269 2 case 0x54:
270 2 usage = 0x2f;
271 2 break;
272 2 case 0x5b:
273 2 usage = 0x30;
274 2 break;
275 2 case 0x5d:
276 2 usage = 0x31;
277 2 break;
278 2 case 0x4c:
279 2 usage = 0x33;
280 2 break;
281 2 case 0x52:
282 2 usage = 0x34;
283 2 break;
284 2 case 0x41:
285 2 usage = 0x36;
286 2 break;
287 2 case 0x49:
288 2 usage = 0x37;
289 2 break;
290 2 case 0x4a:
291 2 usage = 0x38;
292 2 break;
293 2 case 0x58:
294 2 usage = 0x39;
295 2 break;
296 2 case 0x05:
297 2 usage = 0x3a;
298 2 break;
299 2 case 0x06:
300 2 usage = 0x3b;
301 2 break;
302 2 case 0x04:
C51 COMPILER V7.00 KEYBOARD 12/15/2004 13:45:58 PAGE 6
303 2 usage = 0x3c;
304 2 break;
305 2 case 0x0c:
306 2 usage = 0x3d;
307 2 break;
308 2 case 0x03:
309 2 usage = 0x3e;
310 2 break;
311 2 case 0x0b:
312 2 usage = 0x3f;
313 2 break;
314 2 case 0x83:
315 2 usage = 0x40;
316 2 break;
317 2 case 0x0a:
318 2 usage = 0x41;
319 2 break;
320 2 case 0x01:
321 2 usage = 0x42;
322 2 break;
323 2 case 0x09:
324 2 usage = 0x43;
325 2 break;
326 2 case 0x78:
327 2 usage = 0x44;
328 2 break;
329 2 case 0x07:
330 2 usage = 0x45;
331 2 break;
332 2 // case 0x57: //PrintScreen
333 2 // usage = 0x46;
334 2 // break;
335 2 case 0x7e:
336 2 usage = 0x47;
337 2 break;
338 2 // case 0x62: //Break
339 2 // usage = 0x48;
340 2 // break;
341 2 case 0x70:
342 2 usage = 0x49;
343 2 break;
344 2 case 0x6c:
345 2 usage = 0x4a;
346 2 break;
347 2 case 0x7d:
348 2 usage = 0x4b;
349 2 break;
350 2 case 0x71:
351 2 usage = 0x4c;
352 2 break;
353 2 case 0x69:
354 2 usage = 0x4d;
355 2 break;
356 2 case 0x7a:
357 2 usage = 0x4e;
358 2 break;
359 2 case 0x74:
360 2 usage = 0x4f;
361 2 break;
362 2 case 0x6b:
363 2 usage = 0x50;
364 2 break;
C51 COMPILER V7.00 KEYBOARD 12/15/2004 13:45:58 PAGE 7
365 2 case 0x72:
366 2 usage = 0x51;
367 2 break;
368 2 case 0x75:
369 2 usage = 0x52;
370 2 break;
371 2 case 0x77:
372 2 usage = 0x53;
373 2 break;
374 2 // case 0x4a:
375 2 // usage = 0x54;
376 2 // break;
377 2 case 0x7c:
378 2 usage = 0x55;
379 2 break;
380 2 case 0x7b:
381 2 usage = 0x56;
382 2 break;
383 2 case 0x79:
384 2 usage = 0x57;
385 2 break;
386 2 // case 0x5a: //Keypad ENTER
387 2 // usage = 0x58;
388 2 // break;
389 2 // case 0x69: //Keypad 1
390 2 // usage = 0x59;
391 2 // break;
392 2 // case 0x72: //Keypad 2
393 2 // usage = 0x5a;
394 2 // break;
395 2 // case 0x7a: //Keypad 3
396 2 // usage = 0x5b;
397 2 // break;
398 2 // case 0x6b:
399 2 // usage = 0x5c;
400 2 // break;
401 2 // case 0x73:
402 2 // usage = 0x5d;
403 2 // break;
404 2 // case 0x74:
405 2 // usage = 0x5e;
406 2 // break;
407 2 // case 0x6c:
408 2 // usage = 0x5f;
409 2 // break;
410 2 // case 0x75:
411 2 // usage = 0x60;
412 2 // break;
413 2 // case 0x7d:
414 2 // usage = 0x61;
415 2 // break;
416 2 // case 0x70:
417 2 // usage = 0x62;
418 2 // break;
419 2 // case 0x71:
420 2 // usage = 0x63;
421 2 // break;
422 2 case 0x2f:
423 2 usage = 0x76;
424 2 break;
425 2 case 0x14:
426 2 usage = 0xe0;
C51 COMPILER V7.00 KEYBOARD 12/15/2004 13:45:58 PAGE 8
427 2 break;
428 2 case 0x12:
429 2 usage = 0xe1;
430 2 break;
431 2 case 0x11:
432 2 usage = 0xe2;
433 2 break;
434 2 case 0x1f:
435 2 usage = 0xe3;
436 2 break;
437 2 // case 0x14: //Right Ctrl
438 2 // usage = 0xe4;
439 2 // break;
440 2 case 0x59:
441 2 usage = 0xe5;
442 2 break;
443 2 // case 0x11: //Right ALT
444 2 // usage = 0xe6;
445 2 // break;
446 2 case 0x27:
447 2 usage = 0xe7;
448 2 break;
449 2 default:
450 2 usage = 0;
451 2 }
452 1 return usage;
453 1 }
454
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1067 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 6 7
IDATA SIZE = ---- ----
BIT SIZE = ---- 2
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 1 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -