📄 key.lst
字号:
C51 COMPILER V7.50 KEY 09/29/2007 20:19:21 PAGE 1
C51 COMPILER V7.50, 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 /************************************************************************************/
2 /* 程序名:44键盘代码 */
3 /* */
4 /* 晶振:12.0 M CPU型号:AT89S52 */
5 /* */
6 /* */
7 /* 功能描述: 44键盘代码,需将J10,J20相应的键用杜邦线连接起来 */
8 /* */
9 /* MENU_yes <- -> NO_back */
10 /* 1 2 3 + */
11 /* 4 5 6 - */
12 /* 7 8 9 0 */
13 /* */
14 /* QQ:276193028 */
15 /* E-mail:shenchangwei945@163.com */
16 /* */
17 /* */
18 /* 现代虚拟仪器仪表研究所 */
19 /* 2007-09-15 */
20 /************************************************************************************/
21
22 #include<reg51.h>
23 #define uchar unsigned char
24
25 #define countend 40
26
27 #define countsub 5
28 /*
29 #define Key_con P3
30 #define key_yes 0x18 //MENU_yes
31 #define key_L 0x14 //<-
32 #define key_R 0x12 //->
33 #define key_no 0x11 //NO_back
34
35 #define key_1 0x28 //1
36 #define key_2 0x24 //2
37 #define key_3 0x22 //3
38 #define key_+ 0x21 //+
39
40 #define key_4 0x48 //4
41 #define key_5 0x44 //5
42 #define key_6 0x42 //6
43 #define key_- 0x41 //-
44
45 #define key_7 0x88 //7
46 #define key_8 0x84 //8
47 #define key_9 0x82 //9
48 #define key_0 0x81 //0
49 */
50 #define L 10
51 bit keyflag = 0;
52
53 extern void Delay_1ms(unsigned char t);
54 extern Key_con;
55 unsigned char kbscan();
C51 COMPILER V7.50 KEY 09/29/2007 20:19:21 PAGE 2
56
57 uchar keyscan(void);
58
59 /**************此函数具有长按加速功能******************/
60
61 unsigned char keyscan(void)
62 {
63 1 unsigned char i,code_l,code_h[4] = {0xfe,0xfd,0xfb,0xf7};
64 1 static unsigned char keycounter = 0;
65 1 Key_con = 0xF0;
66 1 if((Key_con & 0xF0)!= 0xF0)
67 1 {
68 2 Delay_1ms(20);
69 2 if((Key_con & 0xf0)!= 0xF0)
70 2 {
71 3 for(i = 0; i<4; i++)
72 3 {
73 4 Key_con = code_h[i];
74 4 if((Key_con & 0xF0) != 0XF0)
75 4 {
76 5 code_l = (Key_con & 0xF0) | 0x0F;
77 5 if(keyflag)//不是第一次按下则执行以下程序
78 5 {
79 6 keycounter++;//计数器加1
80 6 if(keycounter == countend)
81 6 {
82 7 keycounter -= countsub;//到一百了再减去
83 7 return ((~code_h[i])+(~code_l));
84 7 }
85 6 else
86 6 {return 0;} //没有到100则返回0
87 6 }
88 5 else //第一次按下则执行以下程序
89 5 {
90 6 keyflag = 1; //置标志位
91 6 return ((~code_h[i])+(~code_l));
92 6 }
93 5 }
94 4 }
95 3 }
96 2 }
97 1 else
98 1 {
99 2 keyflag = 0;keycounter = 0;return (0);
100 2 }
101 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 118 ----
CONSTANT SIZE = 4 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 1 4
IDATA SIZE = ---- ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -