📄 keyboard.lst
字号:
C51 COMPILER V7.02a KEYBOARD 09/12/2008 14:50:31 PAGE 1
C51 COMPILER V7.02a, 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 <at89x51.h>
2
3 #define ENTER (!(P2_4))
4 #define FUNCTION_KEY (!(P2_5))
5 #define UP_KEY (!(P2_6))
6 #define DOWN_KEY (!(P2_7))
7
8 #define KEY_INPUT P2
9 #define KEY_PIN 0xF0
10
11 #define KEY_NOTHING 0
12 #define KEY_FUNCTION 1
13 #define KEY_UP 2
14 #define KEY_DOWN 3
15 #define KEY_ENTER 4
16
17 unsigned char key,key_old,key_new,key_pressed_time;
18
19 void scan_keyboard(void) //键盘扫描
20 {
21 1 if(key)return;
22 1 if((KEY_INPUT & KEY_PIN)==KEY_PIN) //按键释放
23 1 {
24 2 if(!key_old) //如果上次无按键按下
25 2 {
26 3 return; //返回
27 3 }
28 2 else //如果上次有按键按下
29 2 {
30 3 if(key_pressed_time>100) //按键时间超过一秒,长按键码
31 3 {
32 4 // key=key_old+0x80; //长按键码等于普通按键码加0x80
33 4 }
34 3 else if(key_pressed_time>1)
35 3 {
36 4 key=key_old; //按键值
37 4 }
38 3 key_old=0;
39 3 }
40 2 return;
41 2 }
42 1 else //按键按下
43 1 {
44 2 key_new=0;
45 2 if(FUNCTION_KEY)key_new=KEY_FUNCTION; //MENU键按下
46 2
47 2 if(ENTER)key_new=KEY_ENTER;
48 2 if(DOWN_KEY)key_new=KEY_DOWN; //DOWN键按下
49 2 if(UP_KEY)key_new=KEY_UP; //UP键按下
50 2 if(key_new==key_old) //如果按键按下长于10ms
51 2 {
52 3 if(key_pressed_time>80) //如果按键按下超过1s
53 3 {
54 4 key_pressed_time-=5; //则自动按键。相当于每隔50ms按一次
55 4 key=key_new;
C51 COMPILER V7.02a KEYBOARD 09/12/2008 14:50:31 PAGE 2
56 4 return;
57 4 }
58 3 else
59 3 {
60 4 key_pressed_time++; //按键按下计时加一
61 4 }
62 3 }
63 2 else
64 2 {
65 3 key_pressed_time=0; //如果本次按下跟上次按下不一样,则按键按下时间清零
66 3 }
67 2 key_old=key_new; //保存本次按键值
68 2 }
69 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 97 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 4 ----
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 + -