📄 key.lst
字号:
C51 COMPILER V8.05a KEY 12/25/2007 01:05:22 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE KEY
OBJECT MODULE PLACED IN .\key.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ..\51demo\key.c DEBUG OBJECTEXTEND PRINT(.\key.lst) OBJECT(.\key.obj)
line level source
1 /****************************************************************************
2 * 公司名称:SITRONIX *
3 * 模块名称:KEY.C *
4 * 模块功能:扫描并处理按键 *
5 * 创建人员:Jim Yuan *
6 * 创建日期:2007-6-8 *
7 * 修改日期:2007-6-26 *
8 ****************************************************************************/
9
10 #include "key.h"
11
12
13 uint8 keybuf[KEYBUF_SIZE]; //按键BUFF
14 uint8 key_in=0; //按键输入数据位置
15 uint8 key_out=0; //按键输出数据位置
16
17 extern idata volatile uint8 bl_ctl; //backlight control
18 extern idata volatile uint8 rom_bank; //A16_A17_A18
19 extern idata volatile uint8 rom_cs; //00:bank0_01:bank1_10:bank2_11:bank3
20 extern idata volatile uint8 key_scanx; //ken scan address
21
22 idata volatile uint8 keypress_count[KEYID_MAX + 1];
23 idata volatile uint8 key_value;//取得的键盘值
24 idata volatile uint8 key_count;
25
26 sbit KEYSCAN_PIN=P3^4;
27
28 /******************************************************************************
29 *函数名称:key_init *
30 *功能描述:按键初始化 *
31 *输 入:无 *
32 *返 回:无 *
33 *创建 人:袁杰 *
34 *创建日期:2007/4/22 *
35 *修改日期: *
36 *修 改 者: *
37 *版 本:0 *
38 ******************************************************************************/
39 void key_init(void)
40 {
41 1 uint8 i;
42 1 key_in = 0;
43 1 key_out = 0;
44 1 key_scanx = 0;
45 1 key_value = KEY_NULL;
46 1 for(i = KEYID_MIN;i <= KEYID_MAX;i++) //按键代码
47 1 {keypress_count[i] = CLR;} //按键纪录次数清零
48 1 }
49
50 /******************************************************************************
51 *函数名称:keybuflen *
52 *功能描述:按键可用缓冲的大小 *
53 *输 入:无 *
54 *返 回:按键缓冲大小 *
55 *创建 人:袁杰 *
C51 COMPILER V8.05a KEY 12/25/2007 01:05:22 PAGE 2
56 *创建日期:2006/9/9 *
57 *修改日期: *
58 *修 改 者: *
59 *版 本:0 *
60 ******************************************************************************/
61 uint8 keybuflen (void)
62 {
63 1 return (key_in - key_out);
64 1 }
65
66 /******************************************************************************
67 *函数名称:key_input *
68 *功能描述:按键数据输入 *
69 *输 入:按键数据 *
70 *返 回:无 *
71 *创建 人:袁杰 *
72 *创建日期:2006/9/9 *
73 *修改日期: *
74 *修 改 者: *
75 *版 本:0 *
76 ******************************************************************************/
77 void key_input(uint8 value)
78 {
79 1 if(((key_in - key_out)&~(KEYBUF_SIZE - 1)) == 0)
80 1 {
81 2 keybuf[key_in&(KEYBUF_SIZE - 1)] = value;
82 2 key_in++;
83 2 }
84 1 }
85
86 /******************************************************************************
87 *函数名称:key_output *
88 *功能描述:按键数据输出 *
89 *输 入:按键数据 *
90 *返 回:无 *
91 *创建 人:袁杰 *
92 *创建日期:2006/9/9 *
93 *修改日期: *
94 *修 改 者: *
95 *版 本:0 *
96 ******************************************************************************/
97 uint8 key_output(void)
98 {
99 1 if(keybuflen() == 0){return KEY_NULL;}
100 1 return (keybuf[(key_out++)&(KEYBUF_SIZE - 1)]);
101 1 }
102
103
104 /******************************************************************************
105 *函数名称:key_scan *
106 *功能描述:按键扫描,把扫描到的键值放入BUF *
107 *输 入:无 *
108 *返 回:无 *
109 *创建 人:袁杰 *
110 *创建日期:2007/4/22 *
111 *修改日期: *
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -