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