📄 key.lst
字号:
C51 COMPILER V6.02 KEY 09/10/2005 17:11:40 PAGE 1
C51 COMPILER V6.02, COMPILATION OF MODULE KEY
OBJECT MODULE PLACED IN D:\2005_09\Key.OBJ
COMPILER INVOKED BY: D:\C51\BIN\C51.EXE D:\2005_09\Key.c SMALL DB OE CO OT(SIZE)
stmt level source
1 /************************************************************************/
2 /* */
3 /* key scan */
4 /* */
5 /* Author: zhiqiang huo */
6 /* left key P2.7 */
7 /* mid key p2.6 */
8 /* right key P2.5 */
9 /************************************************************************/
10
11 #include "reg52.h"
12 #include "typedef.h"
13 #include "function.h"
14 #include "define.h"
15 #include "varible.h"
16
17 #define LEFTKEY 0x01 //LEFF KEY
18 #define MIDDLEKEY 0x02 //
19 #define RIGHTKEY 0x03
20 #define SETMIMA 0x04 //left and mid key
21 #define BIAODIN 0x05 //mid and right key
22 #define KEY_TM 4
23 #define NOKEY 0
24 #define KEYOK 1
25
26 sbit POP_PORT = P3^7 ;
27 //***************function declare******************
28 void Key_init(void);
29 void Key_hd(void);
30 void Key_scan(void);
31 unsigned char Key_judge(void);
32 void Con_key(void);
33 //***************8*********************************
34
35
36 /****************************/
37 /****************************/
38 void Key_init(void)
39 {
40 1 unsigned char i;
41 1 for(i=0;i<4;i++)
42 1 key_data[i] = 0 ;
43 1 key_tmr = 0;
44 1 keyvld = 0;
45 1 keyvld_old = 0 ;
46 1 key_flag_F = (bit)0;
47 1 judge_pop = 0;
48 1 empty_pop_F = 0 ;
49 1 set_dp_F = 0;
50 1 return;
51 1 }
52
53 /****************************/
54 /****************************/
55 void Key_hd(void)
C51 COMPILER V6.02 KEY 09/10/2005 17:11:40 PAGE 2
56 {
57 1 Key_scan();
58 1 if(key_tmr != 0)
59 1 key_tmr--;
60 1 else {
61 2 key_tmr = KEY_TM;
62 2 if(Key_judge() == KEYOK)
63 2 Con_key();
64 2 if(judge_pop >= 3)
65 2 empty_pop_F = EMPTY;
66 2 else if(judge_pop <= 1)
67 2 empty_pop_F = FULL ;
68 2 }
69 1 return;
70 1 }
71
72
73 /***************************************/
74 /***************************************/
75 void Key_scan(void)
76
77 {
78 1 unsigned char i;
79 1 P2=P2|0xe0;
80 1 key_data[0]=(~P2)&0xe0; // get P2.5,P2.6,P2.7
81 1 for(i=3;i>0;i--)
82 1 {
83 2 key_data[i]= key_data[i-1];
84 2 }
85 1 if(POP_PORT == EMPTY)
86 1 {
87 2 if(judge_pop <= 3)
88 2 judge_pop++;
89 2 }
90 1 else
91 1 {
92 2 if(judge_pop > 1)
93 2 judge_pop--;
94 2 }
95 1
96 1 return;
97 1
98 1 }
99
100
101 /******************************/
102 /******************************/
103 unsigned char Key_judge(void)
104 {
105 1 if((key_data[0] == key_data[1])&&(key_data[1] == key_data[2])
106 1 &&(key_data[2] == key_data[3]))
107 1
108 1 return(1);
109 1 else
110 1 return(0);
111 1
112 1 }
113
114 /*************************/
115 /*************************/
116 void Con_key(void)
117 {
C51 COMPILER V6.02 KEY 09/10/2005 17:11:40 PAGE 3
118 1 switch(key_data[1])
119 1 {
120 2 case 0x80:
121 2 keyvld = LEFTKEY;
122 2 break;
123 2 case 0x40:
124 2 keyvld = MIDDLEKEY;
125 2 break;
126 2 case 0x20:
127 2 keyvld = RIGHTKEY;
128 2 break;
129 2 case 0xc0:
130 2 keyvld = SETMIMA;
131 2 break;
132 2 case 0x60:
133 2 keyvld = BIAODIN;
134 2 break;
135 2 default :
136 2 keyvld = NOKEY;
137 2 break;
138 2 }
139 1 if(keyvld == NOKEY)
140 1 {
141 2 keyvld_old = keyvld ;
142 2 key_flag_F = 0;
143 2 multi_key_F = 0;
144 2 }
145 1
146 1 else if(keyvld != keyvld_old)
147 1 {
148 2 if(multi_key_F == 1)
149 2 ;
150 2 else
151 2 {
152 3 keyvld_old = keyvld;
153 3 key_flag_F = 1;
154 3 }
155 2 }
156 1
157 1 return;
158 1 }
159
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 241 ----
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 + -