📄 keypad.lst
字号:
C51 COMPILER V8.02 KEYPAD 09/12/2007 22:06:42 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE KEYPAD
OBJECT MODULE PLACED IN keypad.OBJ
COMPILER INVOKED BY: D:\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 keyscan();
37 /*char keypad_scan()
38 {
39 char key,i;
40 P1=0xF0;
41 while (P1!=0xF0);
42 do{
43 for(i=0;i<=3;i++)
44 {
45 P1=ksp[i];
46 if(P1!=ksp[i])
47 {
48 delay();
49 key=P1;
50 if(key!=ksp[i])
51 {
52 return(key);
53 }
54 }
55 }
C51 COMPILER V8.02 KEYPAD 09/12/2007 22:06:42 PAGE 2
56 } while(1);
57 }
58 // 检查是否有按键按下
59 char gotkey()
60 {
61 char temp,i;
62 temp=keyscan();
63 for (i=0;i<=15;i++) {
64 if(temp==key_code[i]) return(i);
65 }
66 return(16);
67 }
68 */
69
70 char keyscan()
71 {
72 1 char keytemp;
73 1 P1=0xf0;
74 1 keytemp=P1&0x0f;
75 1 if(keytemp!=0)
76 1 {
77 2 delay();
78 2 if(keytemp!=0)
79 2 {
80 3 P1|=0x80;
81 3 keytemp=P1&0x0f;
82 3 switch(keytemp)
83 3 {
84 4 case 0x01: return(0); break;
85 4 case 0x02: return(1); break;
86 4 case 0x04: return(2); break;
87 4 case 0x08: return(3); break;
88 4 default : break;
89 4 }
90 3 P1|=0x40;
91 3 keytemp=P1&0x0f;
92 3 switch(keytemp)
93 3 {
94 4 case 0x01: return(4); break;
95 4 case 0x02: return(5); break;
96 4 case 0x04: return(6); break;
97 4 case 0x08: return(7); break;
98 4 default : break;
99 4 }
100 3 P1|=0x20;
101 3 keytemp=P1&0x0f;
102 3 switch(keytemp)
103 3 {
104 4 case 0x01: return(8); break;
105 4 case 0x02: return(9); break;
106 4 case 0x04: return(10); break;
107 4 case 0x08: return(11); break;
108 4 default : break;
109 4 }
110 3 P1|=0x10;
111 3 keytemp=P1&0x0f;
112 3 switch(keytemp)
113 3 {
114 4 case 0x01: return(12); break;
115 4 case 0x02: return(13); break;
116 4 case 0x04: return(14); break;
117 4 case 0x08: return(15); break;
C51 COMPILER V8.02 KEYPAD 09/12/2007 22:06:42 PAGE 3
118 4 default : break;
119 4 }
120 3 return (0xff);
121 3 }
122 2 else return (0xff);
123 2 }
124 1 else return (0xff);
125 1 }
126
127
128
129
130
131
132
133
134
135
136
137
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 184 ----
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 + -