📄 clock627.lst
字号:
196 2
197 2 Select_led3();
198 2 Send74ls164(Sag_led234[DispBuf[6]]);
199 2 Delay(2500);
200 2 break;
201 2
202 2 case 0x9: //显示 时
203 2 Select_led2();
204 2 Send74ls164(Sag_led234[DispBuf[3]]);
205 2 Delay(2500);
206 2
207 2 Select_led1();
208 2 Send74ls164(Sag_led1[DispBuf[4]]);
209 2 Delay(2500);
210 2 break;
211 2
212 2 case 12: //0x0C: //显示 分
213 2 Select_led4();
214 2 Send74ls164(Sag_led234[DispBuf[1]]);
215 2 Delay(2500);
216 2
217 2 Select_led3();
218 2 Send74ls164(Sag_led234[DispBuf[2]]);
219 2 Delay(2500);
220 2 break;
221 2
222 2 default:
223 2 break;
224 2
225 2 }
226 1 }
227
228 void KeyScan()
229 {
230 1 if(key1flag==0)
231 1 {
232 2 if(key2flag==0)
233 2 {
234 3 if(key1==0)
235 3 { //key1子程序
236 4 if(DispFlag==1)
237 4 {
238 5 // 无动作
239 5 }
240 4 else if(DispFlag==2)
241 4 {
C51 COMPILER V8.02 CLOCK627 07/11/2008 17:01:11 PAGE 5
242 5 SecondBuf=0;//秒缓冲区清0
243 5 }
244 4 else
245 4 {
246 5 DispFlag+=3;
247 5 key1flag=1;
248 5 }
249 4 if(DispFlag>12)//0x0C)
250 4 {
251 5 DispFlag=0;
252 5 }
253 4 }
254 3 else if(key2==0)
255 3 {
256 4 //key2子程序
257 4 switch(DispFlag)
258 4 {
259 5 case 0: //显示"月,日"
260 5
261 5 DispFlag+=1;
262 5 key2flag=1;
263 5 break;
264 5
265 5 case 1: //显示"秒"
266 5 DispFlag+=1;
267 5 key2flag=1;
268 5 break;
269 5
270 5 case 2: //返回显示"时,分"
271 5 DispFlag=0;
272 5 key2flag=1;
273 5 break;
274 5
275 5 case 3: //"月"+1
276 5 MonthBuf+=1;
277 5 if(MonthBuf>59)
278 5 {
279 6 MonthBuf=0;
280 6 }
281 5 break;
282 5
283 5 case 6: //"日"+1
284 5 DayBuf+=1;
285 5 // if(MonthBuf%2==0)
286 5 // {
287 5 // if(DayBuf>30)
288 5 // {
289 5 // DayBuf=0;
290 5 // }
291 5 // }
292 5 // else
293 5 //{
294 5 if(DayBuf>31)
295 5 {
296 6 DayBuf=0;
297 6 }
298 5 // }
299 5 break;
300 5
301 5 case 9: //"时"+1
302 5 HourBuf+=1;
303 5 if(HourBuf>23)
C51 COMPILER V8.02 CLOCK627 07/11/2008 17:01:11 PAGE 6
304 5 {
305 6 HourBuf=0;
306 6 }
307 5 break;
308 5
309 5 case 12://"分"+1
310 5 MinuteBuf+=1;
311 5 if(MinuteBuf>59)
312 5 {
313 6 MinuteBuf=0;
314 6 }
315 5 break;
316 5
317 5 default:
318 5 break;
319 5 }
320 4
321 4 //返回
322 4 }
323 3 }
324 2 else if(key2==1)
325 2 {
326 3 key2flag=0;
327 3 }
328 2 }
329 1 else if(key1==1)
330 1 {
331 2 key1flag=0;
332 2 }
333 1 }
334 /************************************************************/
335 //定时器0中断
336 /************************************************************/
337 void timer() interrupt 1 using 2
338 {
339 1 MSCNT++;
340 1 KeyScan();//键扫描
341 1 TH0=0x0;
342 1 TL0=0x0;
343 1 if(MSCNT>7)
344 1 {
345 2 MSCNT=0;
346 2 SecondBuf+=1;
347 2 if(SecondBuf>59)
348 2 {
349 3 SecondBuf=0;
350 3 MinuteBuf+=1;
351 3 if(MinuteBuf>59)
352 3 {
353 4 MinuteBuf=0;
354 4 HourBuf+=1;
355 4 if(HourBuf>23)
356 4 {
357 5 HourBuf=0;
358 5 }
359 4 }
360 3 }
361 2
362 2 }
363 1 }
364 void main(void)
365 {
C51 COMPILER V8.02 CLOCK627 07/11/2008 17:01:11 PAGE 7
366 1 ClearDispBuf();//初始时清显示缓冲区
367 1 TMOD=0x01;
368 1 TH0=0x0;
369 1 TL0=0x0;
370 1 EA=1;
371 1 ET0=1;
372 1 TR0=1;
373 1 MSCNT=0;
374 1
375 1 ls164_ab=0;
376 1 ls164_clk=0;
377 1
378 1 DispFlag=0;
379 1 loop:
380 1 Disp();
381 1 goto loop;
382 1
383 1 }
384
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 662 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 44 ----
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 + -