📄 key.lst
字号:
C51 COMPILER V8.02 KEY 05/21/2008 10:52:26 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE KEY
OBJECT MODULE PLACED IN key.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE key.c LARGE BROWSE DEBUG OBJECTEXTEND
line level source
1 /*****************************************************************/
2 /*函数名称: keyscan.c */
3 /*函数功能: 键盘启动 */
4 /*入口参数: P5--------------------------------------------数据传输
5 /*有无返回: 无 */
6 /*修改记录: 无修改记录 */
7 /*编写作者: t483-4-19chenyong */
8 /*编写日期: 2007-4-06 */
9 /*****************************************************************/
10
11 #include "common.h"
12 #include "key.h"
13 #include "delay.h"
14
15 unsigned char a[4]={0xef,0xdf,0xbf,0x7f}; //从P5_4到P5_7依次发送低电平,对列写键值
16 unsigned char coding(unsigned char n) //译码
17 {
18 1 switch(n)
19 1 {
20 2 case 0xfe: return 0;break; //输入为 11111110 即为行号0
21 2 case 0xfd: return 1;break; //输入为 11111101 即为行号1
22 2 case 0xfb: return 2;break; //输入为 11111011 即为行号2
23 2 case 0xf7: return 3;break; //输入为 11110111 即为行号3
24 2 }
25 1 }
26
27 unsigned char keyscan()
28 {
29 1
30 1 unsigned char b;
31 1 unsigned char c;
32 1 unsigned char i;
33 1 unsigned char keyvalue=0xff;
34 1 SFRPAGE = 0x0F;
35 1 P5=0x00;
36 1 SFRPAGE = 0x0F;
37 1 P5=0xfb;
38 1 SFRPAGE = 0x0F;
39 1 P5=0xfe;
40 1 SFRPAGE = 0x0F;
41 1 P5=0xff;
42 1
43 1 for(i=0;i<4;i++) //列扫描,从P5_4开始到P5_7;i=0对应P5_4即第0列.
44 1 {
45 2 SFRPAGE = 0x0F;
46 2 P5=a[i];
47 2 SFRPAGE = 0x0F; //写键值,低电平有效
48 2 b=P5; //读健值,低电平有效
49 2 b=b|0xf0; //取低四位(P5_0--P5_3)的低电平;屏蔽高四位(P5_4--P5_7)的低电平
50 2 if(b!=0xff)
51 2 {
52 3 delay_nms(100); //去抖动
53 3 SFRPAGE = 0x0F;
54 3 c=P5;
55 3 c=c|0xf0;
C51 COMPILER V8.02 KEY 05/21/2008 10:52:26 PAGE 2
56 3 if(b==c)
57 3 keyvalue=i*4+coding(c); //键值=列号*4+行号
58 3 }
59 2
60 2 }
61 1 return keyvalue;
62 1 }
63
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 153 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 4 3
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 + -