?? keyb.lst
字號:
C51 COMPILER V7.06 KEYB 05/11/2008 18:49:27 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE KEYB
OBJECT MODULE PLACED IN keyB.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE keyB.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /* 其中鍵盤掃描程序返回的n數值分別代表 1:P1.0
2 2:P1.1
3 3:P1.2
4 4:P1.3
5 89S51實驗板 5:P1.4 */
6
7 #include "reg51.h"
8 #include "stdio.h"
9
10 //外部變量函數
11 sbit BLACK_LIGHT=P2^4; //背光控制
12 //------------------LPH7366.C------------------
13 extern void LPH7366_write_str(unsigned char line,unsigned char row,unsigned char str); //LPH7366任意寫入字
-符函數
14 extern void data_tick(unsigned char i_data); //數據拆分函數
15 extern unsigned char ge,shi; //數據拆分
16 //-----------------time.C----------------------
17 extern struct time
18 {
19 unsigned char hour;
20 unsigned char minute;
21 unsigned char second;
22 }local_time,alarm_time,temp_time;
23 extern bit second_flag; //秒信號標志
24 //------------------溫度計.C-------------------
25 extern void temp_display(); //溫度顯示
26 //------------------DS18B20.C------------------
27 extern void temp_data_turn(float in_data); //DS18B20讀取溫度轉換
28 extern signed char temp_TL,temp_TH; //溫度上下限
29 extern bit T_sign; //溫度正負符號
30 //------------------------------------------
31 //內部變量函數
32 unsigned char keyB(); //鍵盤掃描
33 void time_switch(); //時間功能切換
34 void temp_switch(); //溫度功能切換
35 void temp_set_display(unsigned char option_i); //溫度切換顯示
36 void temp_set_option_display(signed char temp); //溫度切換顯示子函數
37 void time_set_display(unsigned char option_i); //時間切換顯示
38 void time_set_option_display(struct time i); //時間切換顯示子函數
39 void key_time_setdone(struct time *i); //時間調整
40 void key_temp_setdone(unsigned char *i); //溫度調整
41 void flash_co(unsigned char set_i); //閃爍控制函數
42
43 bit key_flag=1; //鍵盤標志位
44 bit flash=0; //閃爍總開關
45 bit flash1; //閃爍控制位
46 bit flash2; //閃爍控制位
47 bit flash3; //閃爍控制位
48 extern bit ring_flag; //鬧鈴
49 unsigned char data key;
50 unsigned char key_option_i; //具體哪位調整 共有3位可調
51 unsigned char temp_TLTH_dis; //顯示用TH_dis,TL_dis
52
53
54 /******************************鍵盤函數********************************/
C51 COMPILER V7.06 KEYB 05/11/2008 18:49:27 PAGE 2
55 /*函數原型:unsigned char keyB()
56 /*函數功能:鍵盤掃描
57 /*輸入參數:無
58 /*輸出參數:key (根據該數值進行判斷是哪個鍵被按下)
59 /*調用模塊:無
60 /*建立時間:2005/10/21
61 /*作者:丁霄
62 /**********************************************************************/
63 unsigned char keyB() //鍵盤掃描子程序
64 { unsigned char data i;
65 1 i=P1; //讀P1口
66 1 i=i|0xe0; //屏蔽高3位 為1
67 1 switch(i)
68 1 {case 0xfe: key=1;
69 2 break;
70 2 case 0xfd: key=2;
71 2 break;
72 2 case 0xfb: key=3;
73 2 break;
74 2 case 0xf7: key=4;
75 2 break;
76 2 case 0xef: key=5;
77 2 break;
78 2 case 0xff: key=6;
79 2 default: key=0;
80 2 break;
81 2 }
82 1 return(key);
83 1 }
84
85 /****************************鍵盤主函數********************************/
86 /*函數原型:void key_mian()
87 /*函數功能:最上級鍵盤操作
88 /*輸入參數:無
89 /*輸出參數:無
90 /*調用模塊:keyB(),time_set(),temp_set()
91 /*建立時間:2005/11/17
92 /*作者:丁霄
93 /**********************************************************************/
94 void key_main()
95 {
96 1 keyB();
97 1
98 1 if(key==1&&key_flag) //時間
99 1 {
100 2 key_flag=0;
101 2 time_switch(); //時間功能切換
102 2 }
103 1 if(key==2&&key_flag) //溫度
104 1 {
105 2 key_flag=0;
106 2 temp_switch(); //溫度功能切換
107 2 }
108 1
109 1 if(key==4&&key_flag) //背光控制
110 1 {
111 2 key_flag=0;
112 2 BLACK_LIGHT=~BLACK_LIGHT;
113 2 }
114 1
115 1 if(key==5&&key_flag) //鬧鈴控制
116 1 {
C51 COMPILER V7.06 KEYB 05/11/2008 18:49:27 PAGE 3
117 2 key_flag=0;
118 2 ring_flag=~ring_flag;
119 2 }
120 1
121 1 if(key==3||key==0) //鍵盤標志位復位
122 1 {
123 2 key_flag=1;
124 2 }
125 1 flash=0;
126 1 flash_co(0);
127 1 }
128
129 /***************************時間功能切換函數***************************/
130 /*函數原型:void time_switch()
131 /*函數功能:時間功能切換
132 /*輸入參數:無
133 /*輸出參數:無
134 /*調用模塊:keyB(),key_time_setdone(),LPH7366_write_str(),time_set_display()
135 /*建立時間:2005/11/17
136 /*作者:丁霄
137 /**********************************************************************/
138 void time_switch()
139 {
140 1 key_option_i=1; //鍵盤按鍵計數器
141 1 while(1)
142 1 {keyB();
143 2 //------------3號鍵---------------------
144 2 if(key==3&&key_flag) //功能切換
145 2 {
146 3 key_flag=0;
147 3 key_option_i++;
148 3 if(key_option_i==4)
149 3 key_option_i=1;
150 3 }
151 2 //-----------4號鍵-------------------
152 2 if(key==4&&key_flag) //背光控制
153 2 {
154 3 key_flag=0;
155 3 BLACK_LIGHT=~BLACK_LIGHT;
156 3 }
157 2 //-----------5號鍵-------------------
158 2 if(key==5&&key_flag) //確定
159 2 {
160 3 key_flag=0;
161 3 if(key_option_i==1)
162 3 key_time_setdone(&local_time); //時間功能的具體那項功能設置 1:local_time 2:alarm_time 3:temp_time
163 3 if(key_option_i==2)
164 3 key_time_setdone(&alarm_time);
165 3 if(key_option_i==3)
166 3 key_time_setdone(&temp_time);
167 3 LPH7366_write_str(6,9,0x00); //顯示空格
168 3 LPH7366_write_str(6,10,0x00); //顯示空格
169 3 break;
170 3 }
171 2 //---------其余鍵--------------------
172 2 if(key==1||key==2||key==0)
173 2 {
174 3 key_flag=1;
175 3 }
176 2 //-----------------------------------
177 2 time_set_display(key_option_i); //功能切換時顯示
178 2 }
C51 COMPILER V7.06 KEYB 05/11/2008 18:49:27 PAGE 4
179 1 }
180
181 /***************************溫度功能切換函數***************************/
182 /*函數原型:void temp_switch()
183 /*函數功能:溫度功能切換
184 /*輸入參數:無
185 /*輸出參數:無
186 /*調用模塊:keyB(),key_temp_setdone(),temp_set_display()
187 /*建立時間:2005/11/17
188 /*作者:丁霄
189 /**********************************************************************/
190 void temp_switch()
191 {
192 1 key_option_i=1; //鍵盤按鍵計數器
193 1 while(1)
194 1 {keyB();
195 2 //------------3號鍵---------------------
196 2 if(key==3&&key_flag) //功能切換
197 2 {
198 3 key_flag=0;
199 3 key_option_i++;
200 3 if(key_option_i==3)
201 3 key_option_i=1;
202 3 }
203 2 //-----------4號鍵-------------------
204 2 if(key==4&&key_flag) //背光控制
205 2 {
206 3 key_flag=0;
207 3 BLACK_LIGHT=~BLACK_LIGHT;
208 3 }
209 2 //-----------5號鍵-------------------
210 2 if(key==5&&key_flag) //確定
211 2 {
212 3 key_flag=0;
213 3 if(key_option_i==1)
214 3 key_temp_setdone(&temp_TH); //時間功能的具體那項功能設置 1:TH 2:TL
215 3 if(key_option_i==2)
216 3 key_temp_setdone(&temp_TL);
217 3 LPH7366_write_str(3,6,0); //顯示空格
218 3 LPH7366_write_str(3,7,0); //顯示空格
219 3 break;
220 3 }
221 2 //----------其余鍵--------------------
222 2 if(key==1||key==2||key==0)
223 2 {
224 3 key_flag=1;
225 3 }
226 2 //-----------------------------------
227 2 temp_set_display(key_option_i); //功能切換時顯示
228 2 }
229 1 }
230
231 /**************************時間切換顯示函數****************************/
232 /*函數原型:void time_set_display(unsigned char option_i)
233 /*函數功能:時間切換顯示
234 /*輸入參數:無
235 /*輸出參數:無
236 /*調用模塊:time_set_option_display(),LPH7366_write_str(),
237 /*建立時間:2005/11/18
238 /*作者:丁霄
239 /**********************************************************************/
240 void time_set_display(unsigned char option_i)
C51 COMPILER V7.06 KEYB 05/11/2008 18:49:27 PAGE 5
241 {
242 1 if(option_i==1) //local_time
243 1 {
244 2 time_set_option_display(local_time);
245 2 LPH7366_write_str(6,9,0x00); //顯示空格
246 2 LPH7366_write_str(6,10,35); //顯示C
247 2 }
248 1
249 1 if(option_i==2) //alarm_time
250 1 {
251 2 time_set_option_display(alarm_time);
252 2 LPH7366_write_str(6,9,0x00); //顯示空格
253 2 LPH7366_write_str(6,10,33); //顯示A
254 2 }
255 1
256 1 if(option_i==3) //temp_time
257 1 {
258 2 time_set_option_display(temp_time);
259 2 LPH7366_write_str(6,9,0x00); //顯示空格
260 2 LPH7366_write_str(6,10,52); //顯示T
261 2 }
262 1 }
263
264 /***************************時間切換顯示子函數************************/
265 /*函數原型:void time_set_option_display(struct time i)
266 /*函數功能:時間切換顯示子函數
267 /*輸入參數:無
268 /*輸出參數:無
269 /*調用模塊:data_tick(),LPH7366_write_str()
270 /*建立時間:2005/11/21
271 /*作者:丁霄
272 /**********************************************************************/
273 void time_set_option_display(struct time i)
274 {
275 1 data_tick(i.hour); //hour
276 1 if(flash1==1)
277 1 {
278 2 if(second_flag==1)
279 2 {
280 3 LPH7366_write_str(6,1,(shi+16));
281 3 LPH7366_write_str(6,2,(ge+16));
282 3 }
283 2 else
284 2 {
285 3 LPH7366_write_str(6,1,60); //55
286 3 LPH7366_write_str(6,2,60);
287 3 }
288 2 }
289 1 else
290 1 {
291 2 LPH7366_write_str(6,1,(shi+16));
292 2 LPH7366_write_str(6,2,(ge+16));
293 2 }
294 1
295 1 if(second_flag==1)
296 1 LPH7366_write_str(6,3,26); //:
297 1 else
298 1 LPH7366_write_str(6,3,0); //
299 1
300 1 data_tick(i.minute); //minute
301 1 if(flash2==1)
302 1 {
C51 COMPILER V7.06 KEYB 05/11/2008 18:49:27 PAGE 6
303 2 if(second_flag==1)
304 2 {
305 3 LPH7366_write_str(6,4,(shi+16));
306 3 LPH7366_write_str(6,5,(ge+16));
307 3 }
308 2 else
309 2 {
310 3 LPH7366_write_str(6,4,60); //55
311 3 LPH7366_write_str(6,5,60);
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -