📄 key_query.lst
字号:
C51 COMPILER V7.06 KEY_QUERY 11/06/2008 01:10:15 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE KEY_QUERY
OBJECT MODULE PLACED IN key_query.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE c51\key_query.c INCDIR(.\Target\INC\) DEBUG OBJECTEXTEND PRINT(.\key_query.
-lst) OBJECT(key_query.obj)
stmt level source
1
2
3
4
5 #include "AT89X52.h"
6 #include "ES51_II.h"
7 #include "ES51_II_LIB.h"
8
9
10
11 //
12 static unsigned char ReadKey(void)
13 {
14 1 unsigned char keyval;
15 1 unsigned char tmp = 0;
16 1 KEYPORT |= 0x0f;
17 1 if( ((KEYPORT&0x0f) != 0x0f) || ( KEY_INT0 != 1 ) || ( KEY_COUNT != 1 ))
18 1 {
19 2 KEY_COUNT = 1;
20 2 KEY_INT0 = 1;
21 2 KEYPORT |= 0x0f; // 对于读端口操作,需要对端口先写1
22 2 // 与数码管片选引脚共用P0端口,需要保持数码管片选信号
23 2 keyval = KEYPORT&0x0f; // 读取键值,并屏蔽高四位,高四位用于片选数码管
24 2 tmp |= KEY_INT0;
25 2 tmp <<= 1;
26 2 tmp |= KEY_COUNT;
27 2 //tmp = ( (tmp|KEY_INT0)<<1) | KEY_COUNT; // 读取键INT0,COUNT
28 2 tmp <<= 4;
29 2 keyval |= tmp; // 合并键值
30 2 return keyval;
31 2 }
32 1 else
33 1 return 0x3f;
34 1 }
35
36 //
37 unsigned char GetKeyVal(void)
38 {
39 1 unsigned char i = 200;
40 1 unsigned char keyval;
41 1
42 1 keyval = ReadKey();
43 1 while(i--); // 延时,消抖
44 1 if( (keyval != 0x3f) && (keyval == ReadKey() ) ) // 判断是否有键按下;判断两次所读键值相等
45 1 {
46 2 while( keyval == ReadKey() ); // 等待键的释放
47 2 return keyval; // 返回键值
48 2 }
49 1 else
50 1 return 0x3f; // 无键按下,返回0xff
51 1 }
52
53 /*
54
C51 COMPILER V7.06 KEY_QUERY 11/06/2008 01:10:15 PAGE 2
55 unsigned char ReadKey(void)
56 {
57 unsigned char i = 200;
58 unsigned char keyval;
59
60 keyval = KEYPORT; // 与数码管片选引脚共用P0端口,需要保持数码管片选信号
61 KEYPORT = keyval | 0x0f; // 对于读端口操作,需要对端口先写1
62 keyval = KEYPORT&0x0f; // 读取键值,保存
63 while(i--); // 延时,消抖
64 if( (keyval != 0x0f) && (keyval == (KEYPORT&0x0f)) )// 判断是否有键按下;再次读取键值,判断是否与前次所读值
-相等
65 {
66 while( keyval == (KEYPORT&0x0f) ); // 等待键的释放
67 return keyval; // 返回键值
68 }
69 else
70 return 0xff; // 无键按下,返回0xff
71 }
72
73
74 // 获得键值 KEY1:1; KEY2:2; KEY3:3; KEY4:4;
75 unsigned char GetKeyVal(void)
76 {
77 unsigned char tmp;
78 //tmp = ReadKey();
79 switch( ReadKey() )
80 {
81 case KEY1VAL:
82 tmp = 1;
83 break;
84 case KEY2VAL:
85 tmp = 2;
86 break;
87 case KEY3VAL:
88 tmp = 3;
89 break;
90 case KEY4VAL:
91 tmp = 4;
92 break;
93 default:
94 tmp = 0;
95 break;
96 }
97 return tmp;
98 }
99 */
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 97 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
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 + -