📄 keboard.lst
字号:
C51 COMPILER V6.12 KEBOARD 09/11/2005 13:18:07 PAGE 1
C51 COMPILER V6.12, COMPILATION OF MODULE KEBOARD
OBJECT MODULE PLACED IN E:\C51PRJ\KEYBOARD\KEBOARD.OBJ
COMPILER INVOKED BY: d:\keil\c51\BIN\C51.EXE E:\C51PRJ\KEYBOARD\KEBOARD.C DB SB OE
stmt level source
1 /****************************************************************************/
2 /* */
3 /* Copyright (c) 2005, 老树工作室 */
4 /* All rights reserved. */
5 /* */
6 /* http://www.saintone.net Email:hxm0902@163.com */
7 /* QQ:112431149 Tel:010-62966630 */
8 /* */
9 /****************************************************************************/
10 /****************************************************************************/
11 /* 文件名:keyboard.c */
12 /* 版 本:Version 1.0 */
13 /* 描 述:按键检测代码 */
14 /* 作 者:spot */
15 /* 函 数: */
16 /* delay_key */
17 /* system_init */
18 /* */
19 /* 历史记录: */
20 /* spot 2005-06-20 Creat Inital version. (Version 1.0) */
21 /****************************************************************************/
22
23 #include <reg52.h>
24 #include <absacc.h>
25
26 typedef unsigned char u_char;
27 typedef unsigned int u_int;
28
29 /* 键码定义 */
30 #define BUTTON_1 0xEE
31 #define BUTTON_2 0xDE
32 #define BUTTON_3 0xBE
33 #define BUTTON_4 0x7E
34 #define BUTTON_5 0xED
35 #define BUTTON_6 0xDD
36 #define BUTTON_7 0xBD
37 #define BUTTON_8 0x7D
38 #define BUTTON_9 0xEB
39 #define BUTTON_10 0xDB
40 #define BUTTON_11 0xBB
41 #define BUTTON_12 0x7B
42 #define BUTTON_13 0xE7
43 #define BUTTON_14 0xD7
44 #define BUTTON_15 0xB7
45 #define BUTTON_16 0x77
46 /* 定义结束 */
47
48 void delay_key(void); /* 按键检测延时子程序 */
49 void system_init(void); /* 系统上电初始化 */
50
51 /* 按键检测延时子程序 */
52 void delay_key(void)
53 {
54 1 u_char i;
55 1 for(i=200; i>0; i--);
C51 COMPILER V6.12 KEBOARD 09/11/2005 13:18:07 PAGE 2
56 1 }
57
58 /* 反转法检测按键,行1:P2.0,列1:P2.4*/
59 u_char scan_key(void)
60 {
61 1 u_char key_code = 0xFF;
62 1 P2 = 0xF0;
63 1 if ((P2&0xF0) != 0xF0) /* 有键按下 */
64 1 {
65 2
66 2 delay_key();
67 2 key_code = P2; /* 读入列值 */
68 2
69 2 P2 = 0x0F;
70 2 key_code |= P2; /* 读入行值,与列值相或得到键码 */
71 2 }
72 1 return(key_code);
73 1 }
74
75
76 /* 系统上电初始化 */
77 void system_init(void)
78 {
79 1 EA = 0;
80 1 P0 = 0xFF;
81 1 }
82
83 void main(void)
84 {
85 1 u_char key_code = 0xFF;
86 1
87 1 system_init();
88 1
89 1 while(1)
90 1 {
91 2 key_code = scan_key();
92 2 switch(key_code)
93 2 {
94 3 case BUTTON_1:
95 3 P1 = 0x00;
96 3 key_code = 0xFF;
97 3 break;
98 3
99 3 case BUTTON_2:
100 3 P1 = 0xFF;
101 3 key_code = 0xFF;
102 3 break;
103 3
104 3 case BUTTON_3:
105 3 P1 = 0xFE;
106 3 key_code = 0xFF;
107 3 break;
108 3
109 3 case BUTTON_4:
110 3 P1 = 0xFD;
111 3 key_code = 0xFF;
112 3 break;
113 3
114 3 case BUTTON_5:
115 3 P1 = 0xFB;
116 3 key_code = 0xFF;
117 3 break;
C51 COMPILER V6.12 KEBOARD 09/11/2005 13:18:07 PAGE 3
118 3
119 3 case BUTTON_6:
120 3 P1 = 0xF7;
121 3 key_code = 0xFF;
122 3 break;
123 3
124 3 case BUTTON_7:
125 3 P1 = 0xEF;
126 3 key_code = 0xFF;
127 3 break;
128 3
129 3 case BUTTON_8:
130 3 P1 = 0xDF;
131 3 key_code = 0xFF;
132 3 break;
133 3
134 3 case BUTTON_9:
135 3 P1 = 0xBF;
136 3 key_code = 0xFF;
137 3 break;
138 3
139 3 case BUTTON_10:
140 3 P1 = 0x7F;
141 3 key_code = 0xFF;
142 3 break;
143 3
144 3 case BUTTON_11:
145 3 P1 = 0xAA;
146 3 key_code = 0xFF;
147 3 break;
148 3
149 3 case BUTTON_12:
150 3 P1 = 0x55;
151 3 key_code = 0xFF;
152 3 break;
153 3
154 3 case BUTTON_13:
155 3 P1 = 0x5A;
156 3 key_code = 0xFF;
157 3 break;
158 3
159 3 case BUTTON_14:
160 3 P1 = 0xA5;
161 3 key_code = 0xFF;
162 3 break;
163 3
164 3 case BUTTON_15:
165 3 P1 = 0xF0;
166 3 key_code = 0xFF;
167 3 break;
168 3
169 3 case BUTTON_16:
170 3
171 3 P1 = 0x0F;
172 3 key_code = 0xFF;
173 3 break;
174 3
175 3 default:
176 3 break;
177 3 }
178 2 }
179 1 }
C51 COMPILER V6.12 KEBOARD 09/11/2005 13:18:07 PAGE 4
180
181
C51 COMPILER V6.12 KEBOARD 09/11/2005 13:18:07 PAGE 5
NAME CLASS MSPACE TYPE OFFSET SIZE
==== ===== ====== ==== ====== ====
P0 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0080H 1
P1 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0090H 1
P2 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00A0H 1
P3 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00B0H 1
T0 . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B4H 1
AC . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D6H 1
T1 . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B5H 1
T2 . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0090H 1
EA . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00AFH 1
IE . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00A8H 1
EXF2 . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00CEH 1
RD . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B7H 1
ES . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00ACH 1
IP . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00B8H 1
RI . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0098H 1
INT0 . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B2H 1
CY . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D7H 1
TI . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0099H 1
INT1 . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B3H 1
u_int. . . . . . . . . . . . . . . . . TYPEDEF ----- U_INT ----- 2
PS . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00BCH 1
T2EX . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0091H 1
OV . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D2H 1
main . . . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
key_code . . . . . . . . . . . . . . * REG * DATA U_CHAR 0005H 1
C_T2 . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00C9H 1
WR . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B6H 1
RCLK . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00CDH 1
TCLK . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00CCH 1
SCON . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0098H 1
TCON . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0088H 1
delay_key. . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
i. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
IE0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0089H 1
IE1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008BH 1
system_init. . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
CP_RL2 . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00C8H 1
ET0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00A9H 1
ET1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00ABH 1
TF0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008DH 1
ET2. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00ADH 1
TF1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008FH 1
TF2. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00CFH 1
RB8. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 009AH 1
EX0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00A8H 1
IT0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0088H 1
TB8. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 009BH 1
EX1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00AAH 1
IT1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008AH 1
P. . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D0H 1
SM0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 009FH 1
SM1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 009EH 1
scan_key . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
key_code . . . . . . . . . . . . . . * REG * DATA U_CHAR 0006H 1
SM2. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 009DH 1
PT0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B9H 1
PT1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00BBH 1
C51 COMPILER V6.12 KEBOARD 09/11/2005 13:18:07 PAGE 6
NAME CLASS MSPACE TYPE OFFSET SIZE
==== ===== ====== ==== ====== ====
RS0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D3H 1
PT2. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00BDH 1
TR0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008CH 1
RS1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D4H 1
TR1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008EH 1
TR2. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00CAH 1
PX0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B8H 1
PX1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00BAH 1
EXEN2. . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00CBH 1
REN. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 009CH 1
T2CON. . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00C8H 1
RXD. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B0H 1
TXD. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B1H 1
u_char . . . . . . . . . . . . . . . . TYPEDEF ----- U_CHAR ----- 1
F0 . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D5H 1
PSW. . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00D0H 1
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 224 ----
CONSTANT SIZE = ---- ----
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 + -