📄 key.lst
字号:
C51 COMPILER V6.23a KEY 08/17/2006 16:45:35 PAGE 1
C51 COMPILER V6.23a, COMPILATION OF MODULE KEY
OBJECT MODULE PLACED IN .\Obj\Key.obj
COMPILER INVOKED BY: C:\KEIL\C51\BIN\C51.EXE ..\..\Driver\Io\Key.c LARGE OPTIMIZE(2,SPEED) MODP2 PRINT(.\Obj\Key.lst) OB
-JECT(.\Obj\Key.obj)
stmt level source
1 /*------------------------------------------------------------------
2 * CopyRight (C) 2005,江苏盛唐电子产品有限公司
3 * All Rights Reserved.
4 *
5 * 文件名称:Key.c
6 * 文件标识:
7 * 摘 要:板载按键功能函数
8 *
9 * 当前版本:1.0
10 * 作 者:熊刚
11 * 完成日期:2005年10月7日
12 *
13 * 取代版本:
14 * 原作者 :
15 * 完成日期:
16 --------------------------------------------------------------------*/
17
18 //实现键盘按键的读取.
19
20
21 /*文件名:Key.c
22 作者: 熊刚
23 时间: 2006-08-02
24 */
25
26 #include "..\inc\includes.h"
27
28 #ifdef IBMPC_SYSTEM
#else
31 sbit KEY1Pin = P3^4;
32 sbit KEY2Pin = P3^5;
33 #endif
34
35 #define c_LowLevel 0
36 #define c_HighLevel 1
37 /**************************************************
38 功能介绍:实现检查是否有键按下.
39 入口参数: 无
40 出口参数: 1表示有键按下,0表示无键按下。
41 备注:
42 ***************************************************/
43 bool KbHit(void)
44 {
45 1 bool bK1Press;
46 1 bool bK2Press;
47 1
48 1
49 1 KEY1Pin = 1;
50 1 KEY2Pin = 1;
51 1 bK1Press = false;
52 1 bK2Press = false;
53 1
54 1 if(KEY1Pin == 0)
C51 COMPILER V6.23a KEY 08/17/2006 16:45:35 PAGE 2
55 1 {
56 2 bK1Press = true;
57 2 }
58 1 if(KEY2Pin == 0)
59 1 {
60 2 bK2Press = true;
61 2 }
62 1
63 1 return (bK1Press || bK2Press);
64 1
65 1 }
66
67 static uchar GetKeyScanCode(void)
68 {
69 1 uchar ucScanCode;
70 1
71 1 KEY1Pin = 1;
72 1 KEY2Pin = 1;
73 1
74 1 ucScanCode = 0;
75 1
76 1 if(KEY1Pin == 0)
77 1 {
78 2 ucScanCode |= K1_SCANCODE;
79 2 }
80 1
81 1 if(KEY2Pin == 0)
82 1 {
83 2 ucScanCode |= K2_SCANCODE;
84 2 }
85 1 return ucScanCode;
86 1 }
87
88 /**************************************************
89 功能介绍:读取按键扫描码.
90 入口参数: 无
91 出口参数: 键盘按键的扫描码。
92 备注:
93 ***************************************************/
94 uchar KbGet(void)
95 {
96 1 uchar ucKeyTemp;
97 1
98 1 if(KbHit()==0) //无键按下时,
99 1 {
100 2 return( c_KeyScan_ErrCode); //直接返回
101 2 }
102 1 else
103 1 {
104 2 ucKeyTemp = GetKeyScanCode();
105 2 Delay_10MS(1);
106 2 // BeepShort(); //响应按键
107 2 // delay(10); //延时10ms去抖动。
108 2 }
109 1
110 1 if (ucKeyTemp != GetKeyScanCode()) //再次检测按键情况
111 1 {
112 2 return( c_KeyScan_ErrCode); //与前次检测值不相符时,是抖动时,返回。
113 2 }
114 1
115 1 // while(KbHit()) ; //等待按键释放。
116 1
C51 COMPILER V6.23a KEY 08/17/2006 16:45:35 PAGE 3
117 1 return (ucKeyTemp); //返回键码。
118 1 }
119
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 147 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- 4
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 + -