📄 key_prc.lst
字号:
C51 COMPILER V7.06 KEY_PRC 06/10/2005 13:26:28 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE KEY_PRC
OBJECT MODULE PLACED IN Key_prc.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Key_prc.c BROWSE DEBUG OBJECTEXTEND CODE SYMBOLS
stmt level source
1
2 /***********************************************************/
3 /* */
4 /* CPU:AT89c55 20MHZ */
5 /* Copyright 2004.09 Comelit */
6 /* Author:LV_XIAO_LU */
7 /* */
8 /***********************************************************/
9 /* Version 1.0 */
10 /***********************************************************/
11 /* LEFT KEY LOCATE P1.7,RIGHT KEY LOCATE P1.6 */
12 /* FUNCTION : */
13 /* LEFT KEY :MOVE sign of menu */
14 /* RIGHT KEY: design */
15 /***********************************************************/
16
17 #include <reg52.h>
18 #include "string.h"
19 #include "typedef.h"
20 #include "define.h"
21 #include "variable.h"
22 #include "function.h"
23
24
25 sbit DIVA_STATUS_PORT = P3^2;
26 sbit MES_SW = P1^7;
27 sbit CALL_SW = P1^6 ;
28 sbit DISP_CTR_PORT = P3^5;
29
30 void Key_dummy(void);
31 void Key_left(void);
32 void Key_right(void);
33 void Prev_page_affirm(unsigned char mes_num);
34 void Key_hd(void);
35 void Key_scan(void);
36 bit Key_judge(void);
37 void Con_key(void);
38 void Key_prc( void );
39 unsigned char Judge_mes_num(void);
40 unsigned char R_judge_mes_num(void);
41 void In_third_menu(void);
42 void Return_second_menu(unsigned char mes_num);
43 void Get_mes_content(unsigned char scr_disp_num,unsigned char select);
44 void Del_mes_prc(void);
45 void Get_num_code(unsigned char num);
46 void Get_list_str(unsigned char num);
47
48 /***********************************************************/
49 /***********************************************************/
50 code unsigned int num_to_code[]=
51 {
52 0xa3b0,0xa3b1,0xa3b2,0xa3b3,0xa3b4,
53 0xa3b5,0xa3b6,0xa3b7,0xa3b8,0xa3b9
54 };
55 /***********************************************************/
C51 COMPILER V7.06 KEY_PRC 06/10/2005 13:26:28 PAGE 2
56 /***********************************************************/
57 void (*const code key_tbl[])(void)=
58 {
59 Key_dummy,
60 Key_left,
61 Key_right
62 };
63
64 /***********************************************************/
65 /***********************************************************/
66 void Key_dummy(void)
67 {
68 1 return;
69 1 }
70
71
72
73 /***********************************************************/
74 /***********************************************************/
75 void Key_hd(void)
76 {
77 1 Key_scan();
78 1 if(key_tmr != 0)
79 1 key_tmr--;
80 1 else
81 1 {
82 2 key_tmr = KEY_TM;
83 2 if(Key_judge() == KEYOK)
84 2 Con_key();
85 2 }
86 1 return;
87 1 }
88
89 /***********************************************************/
90 /***********************************************************/
91 void Key_scan(void)
92
93 {
94 1 unsigned char i;
95 1 P3 = P3|0x18; //p3.3=p3.4=1
96 1 // P3=P3|0x0c; //test
97 1 key_data[0]=(~P3)&0x18; // get P3.3,P3.4
98 1 // key_data[0]=(~P3)&0x0c; //test
99 1 for(i=2;i>0;i--)
100 1 {
101 2 key_data[i]= key_data[i-1];
102 2 }
103 1
104 1 return;
105 1
106 1 }
107
108
109
110 /***********************************************************/
111 /***********************************************************/
112 bit Key_judge(void)
113 {
114 1 if((key_data[0] == key_data[1])&&(key_data[1] == key_data[2]))
115 1
116 1 return(1);
117 1 else
C51 COMPILER V7.06 KEY_PRC 06/10/2005 13:26:28 PAGE 3
118 1 return(0);
119 1
120 1 }
121
122
123
124 /***********************************************************/
125 /*P3^4: 左键 P3^3:右键 */
126 /***********************************************************/
127 void Con_key(void)
128 {
129 1 switch(key_data[1])
130 1 {
131 2
132 2 case 0x10:
133 2 // case 0x04: //test
134 2 keyvld = LEFTKEY;
135 2 break;
136 2 case 0x08:
137 2 keyvld = RIGHTKEY;
138 2 break;
139 2 default :
140 2 keyvld = NOKEY;
141 2 break;
142 2 }
143 1 if(keyvld == NOKEY)
144 1 {
145 2 keyvld_old = keyvld ;
146 2 key_flag_F = 0;
147 2
148 2 }
149 1
150 1 else if(keyvld != keyvld_old)
151 1 {
152 2
153 2 keyvld_old = keyvld;
154 2 key_flag_F = 1;
155 2
156 2 }
157 1
158 1 return;
159 1 }
160
161
162
163 /***********************************************************/
164 /***********************************************************/
165 void Key_prc( void )
166 {
167 1 if((write_F == 1)||(call_disp_F == 1)) //正在写FLASH时,禁止操作
168 1 {
169 2 if(key_flag_F == 1)
170 2 key_flag_F = 0;
171 2 return;
172 2 }
173 1 else
174 1 {
175 2 if(key_flag_F == 1)
176 2 {
177 3 key_flag_F = 0;
178 3 exit_time = TM30S ;
179 3 key_tbl[keyvld]();
C51 COMPILER V7.06 KEY_PRC 06/10/2005 13:26:28 PAGE 4
180 3 disp_change_F = 1 ;
181 3 }
182 2 // else
183 2 // {
184 2 // disp_change_F = 0;
185 2 // }
186 2 if((exit_time != 0)&&(call_disp_F == 0))
187 2 exit_time--;
188 2 else if((disp_mode != DUMMY_DISP)&&(exit_time == 0)) // 关机
189 2 {
190 3 disp_mode = DUMMY_DISP;
191 3 }
192 2 return;
193 2 }
194 1 }
195
196 /***********************************************************/
197 /* 左键为信息选择 */
198 /***********************************************************/
199
200 void Key_left(void)
201 {
202 1 switch(disp_mode)
203 1 {
204 2 case DUMMY_DISP : //如果原显示模式是待机
205 2 // if(call_disp_F == 0)
206 2 // {
207 2 disp_mode = FIRST_MENU_DISP ;
208 2 select_position = MES_READ_POSITION ;
209 2 CALL_SW = SW_ON;
210 2 sw_delay = TM60MS; //这是为了等待继电器动作完成
211 2 read_mes_F = 1;
212 2 // }
213 2 break;
214 2 case FIRST_MENU_DISP:
215 2
216 2 select_position++; //指向下一功能
217 2 if(select_position > CLOSE_POSITION )
218 2 select_position = MES_READ_POSITION ; //循环
219 2 break;
220 2
221 2 case SECOND_MENU_DISP:
222 2
223 2 select_position++;
224 2 if(scr_mes_num == 5)
225 2 {
226 3 if(list_num > 5 )
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -