📄 key.lst
字号:
C51 COMPILER V8.08 KEY 11/20/2008 22:02:47 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE KEY
OBJECT MODULE PLACED IN KEY.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE KEY.C BROWSE DEBUG OBJECTEXTEND
line level source
1 #include "reg52.h"
2 #include<intrins.h>
3 #include"IOCfg.c"
4 #include"Config.h"
5 #include"KEY.h"
6
7 #define DBUS P0
8
9
10 /************************************************************************************
11
12 刷新按键574数据
13
14 ************************************************************************************/
15 void DBUS2(uchar i)
16 {
17 1 DBUS = i;
18 1 clk_574_2 = 0;
19 1 clk_574_2 = 1;
20 1 }
21
22
23 /************************************************************************************
24 *按键扫描
25 *返回键值
26 ************************************************************************************/
27 uchar key_sm()
28 {
29 1 uchar key_data;
30 1 RS = 1;
31 1 RW = 0; //--------避免液晶屏干扰数据总线
32 1 key1 = 1;
33 1 key2 = 1; //--------按键置高电平
34 1 key_data = 0xff;
35 1 DBUS2(0xfe);
36 1 if(key1 == 0){key_data = key_9;}
37 1 if(key2 == 0){key_data = key_dian;}
38 1 DBUS2(0xfd);
39 1 if(key1 == 0){key_data = key_6;}
40 1 if(key2 == 0){key_data = key_3;}
41 1 DBUS2(0xfb);
42 1 if(key1 == 0){key_data = key_5;}
43 1 if(key2 == 0){key_data = key_2;}
44 1 DBUS2(0xf7);
45 1 if(key1 == 0){key_data = key_8;}
46 1 if(key2 == 0){key_data = key_0;}
47 1 DBUS2(0xef);
48 1 if(key1 == 0){key_data = key_4;}
49 1 if(key2 == 0){key_data = key_1;}
50 1 DBUS2(0xdf);
51 1 if(key1 == 0){key_data = key_7;}
52 1 if(key2 == 0){key_data = key_esc;}
53 1 DBUS2(0xbf);
54 1 if(key1 == 0){key_data = key_you;}
55 1 if(key2 == 0){key_data = key_xia;}
C51 COMPILER V8.08 KEY 11/20/2008 22:02:47 PAGE 2
56 1 DBUS2(0x7f);
57 1 if(key1 == 0){key_data = key_zuo;}
58 1 if(key2 == 0){key_data = key_shang;}
59 1 DBUS2(0xff);
60 1 if(key1 == 0){key_data = key_enter;}
61 1
62 1 return key_data;
63 1 }
64
65 /******************************************************************
66 // 函数名:delayms
67 // 功 能:精确延时10mS
68 // 参 数:
69 // 返回值:
70 使用22.1184MHz 晶振的时候 ,循环次数是229 ;
71 ******************************************************************/
72 void delay10ms(void)
73 {
74 1 unsigned char j;
75 1 unsigned char i;
76 1 for(i = 10; i != 0; i--)
77 1 {
78 2 for(j = 0; j < 229; j++);
79 2 }
80 1 }
81 /************************************************************************************
82 *按键扫描去抖动
83 *返回键值
84 ************************************************************************************/
85 uchar key_num()
86 {
87 1 uchar key_bz;
88 1 key_bz = key_sm();
89 1 if(key_bz != 0xff)
90 1 {
91 2 delay10ms();
92 2 delay10ms();
93 2 if(key_bz == key_sm())
94 2 {
95 3 while(key_sm() != 0xff);
96 3 delay10ms();
97 3 delay10ms();
98 3 while(key_sm() != 0xff);
99 3 }
100 2 else{key_bz = 0xff;}
101 2 }
102 1 return key_bz;
103 1 }
104
105
106
107
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 209 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
C51 COMPILER V8.08 KEY 11/20/2008 22:02:47 PAGE 3
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -