📄 keypad.lst
字号:
C51 COMPILER V8.06 KEYPAD 07/18/2007 17:16:42 PAGE 1
C51 COMPILER V8.06, COMPILATION OF MODULE KEYPAD
OBJECT MODULE PLACED IN keypad.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE keypad.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*
2 标题:小键盘的输入函数
3 版本:1.0
4 Target:89S51
5 函数描述: char gotkey(void)
6 从4ⅹ4小键盘输入数据,返回0 15
7 小键盘的连接方式:
8
9
10 1 P20 -----0----1----2----3
11 | | | |
12 2 P21 -----4----5----6----7
13 | | | |
14 3 P22 -----8----9----10---11
15 | | | |
16 4 P23 -----12---13---14---15
17 | | | |
18 5 P24 ---- | | | |
19 | | | |
20 6 P25 ---------- | |
21 | |
22 7 P26 --------------- |
23 |
24 8 P27 --------------------
25 */
26 #include <REGX51.H>
27 code char key_code[]={0x7E,0XBE,0XBD,0XBB,0XDE,0XDD,0XDB,0XEE,
28 0XED,0XEB,0X7D,0X7B,0XE7,0XD7,0XB7,0X77};
29 code ksp[4]={0x7F,0xBF,0xDF,0xEF};
30 void delay (void) { /* 时间延迟函数 */
31 1 unsigned char i,j;
32 1 for (i=0;i<5;i++)
33 1 for(j=0;j<255;j++)
34 1 ;
35 1 }
36 char keypad_scan()
37 {
38 1 char key,i;
39 1 P2=0xF0;
40 1 while (P2!=0xF0);
41 1 do{
42 2 for(i=0;i<=3;i++)
43 2 {
44 3 P2=ksp[i];
45 3 if(P2!=ksp[i])
46 3 {
47 4 delay();
48 4 key=P2;
49 4 if(key!=ksp[i])
50 4 {
51 5 return(key);
52 5 }
53 4 }
54 3 }
55 2 } while(1);
C51 COMPILER V8.06 KEYPAD 07/18/2007 17:16:42 PAGE 2
56 1 }
57 // 检查是否有按键按下
58 char gotkey()
59 {
60 1 char temp,i;
61 1 temp=keypad_scan();
62 1 for (i=0;i<=15;i++) {
63 2 if(temp==key_code[i]) return(i);
64 2 }
65 1 return(16);
66 1 }
67
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 154 ----
CONSTANT SIZE = 24 ----
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 + -