📄 keboard.lst
字号:
C51 COMPILER V7.09 KEBOARD 10/09/2005 20:45:33 PAGE 1
C51 COMPILER V7.09, COMPILATION OF MODULE KEBOARD
OBJECT MODULE PLACED IN E:\C51PRJ\APPNEW\KEBOARD.OBJ
COMPILER INVOKED BY: d:\keil\c51\BIN\C51.EXE E:\C51PRJ\APPNEW\KEBOARD.C DB SB OE
line 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 #include "../includes/types.h"
26 #include "keyboard.h"
27
28 sbit WDI = P0^5; /* 喂狗信号 */
29
30 /* 按键检测延时子程序 */
31 void delay_key(void)
32 {
33 1 u_int i;
34 1 for(i=1000; i>0; i--);
35 1 }
36
37 /* 反转法检测按键,行1:P2.0,列1:P2.4*/
38 u_char scan_key(void)
39 {
40 1 u_char key_code = 0xFF;
41 1 u_int i = 0;
42 1 P2 = 0xF0;
43 1 if ((P2&0xF0) != 0xF0) /* 有键按下 */
44 1 {
45 2 delay_key();
46 2 if ((P2&0xF0) != 0xF0) /* 有键按下 */
47 2 {
48 3 key_code = P2; /* 读入列值 */
49 3 P2 = 0x0F;
50 3 key_code |= P2; /* 读入行值,与列值相或得到键码 */
51 3
52 3
53 3 while ( ((P2&0x0F) != 0x0F) && (i<20000) ) /* 等待按键抬起 */
54 3 {
55 4 i++;
C51 COMPILER V7.09 KEBOARD 10/09/2005 20:45:33 PAGE 2
56 4 WDI = ~WDI;
57 4 }
58 3 }
59 2 }
60 1 return(key_code);
61 1 }
62
63
C51 COMPILER V7.09 KEBOARD 10/09/2005 20:45:33 PAGE 3
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
u_long . . . . . . . . . . . . . . . . TYPEDEF ----- U_LONG ----- 4
u_short. . . . . . . . . . . . . . . . TYPEDEF ----- U_INT ----- 2
IE . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00A8H 1
IP . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00B8H 1
u_int. . . . . . . . . . . . . . . . . TYPEDEF ----- U_INT ----- 2
SCON . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0098H 1
TCON . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0088H 1
delay_key. . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
i. . . . . . . . . . . . . . . . . . * REG * DATA U_INT 0006H 2
scan_key . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
key_code . . . . . . . . . . . . . . * REG * DATA U_CHAR 0005H 1
i. . . . . . . . . . . . . . . . . . * REG * DATA U_INT 0002H 2
WDI. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0085H 1
T2CON. . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00C8H 1
u_char . . . . . . . . . . . . . . . . TYPEDEF ----- U_CHAR ----- 1
PSW. . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00D0H 1
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 79 ----
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 + -