📄 keyboard.lst
字号:
C51 COMPILER V8.05a KEYBOARD 10/28/2008 10:30:03 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE KEYBOARD
OBJECT MODULE PLACED IN keyboard.OBJ
COMPILER INVOKED BY: F:\Keil C51 V8\C51\BIN\C51.EXE keyboard.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <reg51.h>
2
3 #define CHECK_KEY_DOWN 0
4 #define CHECK_KEY_UP 1
5 #define KEY_UP 0
6 #define KEY_DOWN 1
7
8 sbit _p33 = P3^3;
9 sbit _p34 = P3^4;
10 sbit _p35 = P3^5;
11 sbit _p36 = P3^6;
12
13 char _key_status = CHECK_KEY_DOWN;
14 char _key_idx = 0;
15 char _key_led = 0;
16
17 void _delay_1ns() {
18 1 }
19
20 void _p34_plus() {
21 1 _p34 = 0;
22 1 _delay_1ns();
23 1 _p34 = 1;
24 1 _delay_1ns();
25 1 _p34 = 0;
26 1 }
27
28 void _p35_plus() {
29 1 _p35 = 0;
30 1 _delay_1ns();
31 1 _p35 = 1;
32 1 _delay_1ns();
33 1 _p35 = 0;
34 1 }
35
36 void serial_output(unsigned char out) {
37 1 char i = 0;
38 1 for (i = 7; i >= 0 ; i--) {
39 2 _p33 = (out >> i)& 0x01;
40 2 _p34_plus();
41 2 }
42 1 _p35_plus();
43 1 }
44
45 char _check_key(unsigned char _key_idx) {
46 1 serial_output(_key_led | (~(0x01<<_key_idx)) & 0x0f );
47 1 if (_p36 == 0) {
48 2 return KEY_DOWN;
49 2 } else {
50 2 return KEY_UP;
51 2 }
52 1 }
53
54 char get_key(void) {
55 1 char result = -1;
C51 COMPILER V8.05a KEYBOARD 10/28/2008 10:30:03 PAGE 2
56 1 if (_key_status == CHECK_KEY_DOWN) {
57 2 if (_check_key(_key_idx) == KEY_DOWN) {
58 3 _key_status = CHECK_KEY_UP;
59 3 } else {
60 3 _key_status = CHECK_KEY_DOWN;
61 3 if (++_key_idx == 4) {
62 4 _key_idx = 0;
63 4 }
64 3 }
65 2 } else if (_key_status == CHECK_KEY_UP) {
66 2 if (_check_key(_key_idx) == KEY_UP) {
67 3 result = _key_idx;
68 3 _key_status = CHECK_KEY_DOWN;
69 3 if (++_key_idx == 4) {
70 4 _key_idx = 0;
71 4 }
72 3 } else {
73 3 _key_status = CHECK_KEY_UP;
74 3 }
75 2 }
76 1 return result;
77 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 152 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 3 ----
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 + -