📄 clock_main.lst
字号:
282 4 if (flag2==4){
283 5 alarm[num][0]=alarm[num][0]+1;
284 5 dispbuf[2]=dispbuf[2]+1;
285 5 }
286 4 if (flag2==8){
287 5 alarm[num][0]=alarm[num][0]+10;
288 5 dispbuf[3]=dispbuf[3]+1;
289 5 }
290 4 if (flag2==16){
291 5 al_state=al_state|state;
292 5 dispbuf[4]= al_state&&flag2+10;
293 5 }
294 4 if (flag2==32){
295 5 num=num+1;
296 5 state=state<<1;
297 5 dispbuf[0]=alarm[num][1]%10; // 刷新数据区
298 5 dispbuf[1]=alarm[num][1]/10;
299 5 dispbuf[2]=alarm[num][0]%10;
300 5 dispbuf[3]=alarm[num][0]/10; }
301 4 //dispbuf[4]=al_state&&state+10;
302 4 dispbuf[5]=num;
303 4 if (al_state&state)
C51 COMPILER V8.02 CLOCK_MAIN 01/05/2008 15:47:41 PAGE 6
304 4 dispbuf[4]=10;
305 4 else
306 4 dispbuf[4]=11;
307 4
308 4 } //end if (key==key2) 修改闹铃时间操作(+)
309 3 if (key==KEY3)
310 3 {
311 4 if (flag2==0x01){
312 5 alarm[num][1]=alarm[num][1]-1;
313 5 dispbuf[0]=dispbuf[0]-1;
314 5 }
315 4 if (flag2==0x02){
316 5 alarm[num][1]=alarm[num][1]-10;
317 5 dispbuf[1]=dispbuf[1]-1;
318 5 }
319 4 if (flag2==0x04){
320 5 alarm[num][0]=alarm[num][0]-1;
321 5 dispbuf[2]=dispbuf[2]-1;
322 5 }
323 4 if (flag2==0x08){
324 5 alarm[num][0]=alarm[num][0]-10;
325 5 dispbuf[3]=dispbuf[3]-1;
326 5 }
327 4 if (flag2==0x10){
328 5 state=~state;
329 5 al_state=al_state&(state);
330 5 state=~state;
331 5 dispbuf[4]=al_state&&flag2+10;
332 5 }
333 4 if (flag2==32){
334 5 num=num-1;
335 5 state=state>>1;
336 5 dispbuf[0]=alarm[num][1]%10; // 刷新数据区
337 5 dispbuf[1]=alarm[num][1]/10;
338 5 dispbuf[2]=alarm[num][0]%10;
339 5 dispbuf[3]=alarm[num][0]/10; }
340 4 //dispbuf[4]=al_state&&state+10;
341 4 dispbuf[5]=num;
342 4 if (al_state&state)
343 4 dispbuf[4]=10;
344 4 else
345 4 dispbuf[4]=11;
346 4
347 4 } //end if (key==key3) 修改闹铃时间操作(-)
348 3 if (key==KEY4)
349 3 if(flag2<32)
350 3 flag2=flag2<<1; // 进行移位操作
351 3 else
352 3 flag2=0x01;
353 3 delay_ms(200) ;
354 3 } // end (key!=key1) 完成闹钟设置
355 2
356 2
357 2 key=KeyBord();
358 2 while( key==KEY1)
359 2 key=KeyBord(); // 等待按间释放
360 2 flag2=0;
361 2 TR1=0;
362 2 dispbuf[0]=second%10; // 刷新数据区
363 2 dispbuf[1]=second/10;
364 2 dispbuf[2]=minite%10;
365 2 dispbuf[3]=minite/10;
C51 COMPILER V8.02 CLOCK_MAIN 01/05/2008 15:47:41 PAGE 7
366 2 dispbuf[4]=hour%10;
367 2 dispbuf[5]=hour/10;
368 2
369 2 flag2=1; //开始时间设置
370 2 TR1=1;
371 2 flag1=0;
372 2 /*
373 2 key=KeyBord();
374 2 while( key==KEY1)
375 2 key=KeyBord(); // 等待按键释放 */
376 2 while (key!=KEY1)
377 2 {
378 3
379 3
380 3 if (key==KEY2)
381 3 {
382 4 if (flag2==1){
383 5 second=second+1;
384 5 dispbuf[0]=second%10;
385 5 }
386 4 if (flag2==2){
387 5 second=second+10;
388 5 dispbuf[1]=second/10;
389 5 }
390 4 if (flag2==4){
391 5 minite=minite+1;
392 5 dispbuf[2]=minite%10;
393 5 }
394 4 if (flag2==8){
395 5 minite=minite+10;
396 5 dispbuf[3]=minite/10;
397 5 }
398 4 if (flag2==16){
399 5 hour=hour+1;
400 5 dispbuf[4]=hour%10;
401 5 }
402 4 if (flag2==32){
403 5 hour=hour+10;
404 5 dispbuf[5]=hour/10;
405 5 }
406 4 } //end if (key==key2) 修改时间操作(+)
407 3 if (key==KEY3)
408 3 {
409 4 if (flag2==0x01){
410 5 second=second-1;
411 5 dispbuf[0]=second%10;
412 5 }
413 4 if (flag2==0x02){
414 5 second=second-10;
415 5 dispbuf[1]=second/10;
416 5 }
417 4 if (flag2==0x04){
418 5 minite=minite-1;
419 5 dispbuf[2]=minite%10;
420 5 }
421 4 if (flag2==0x08){
422 5 minite=minite-10;
423 5 dispbuf[3]=minite/10;
424 5 }
425 4 if (flag2==0x10){
426 5 hour=hour-1;
427 5 dispbuf[4]=hour%10;
C51 COMPILER V8.02 CLOCK_MAIN 01/05/2008 15:47:41 PAGE 8
428 5 }
429 4 if (flag2==0x20){
430 5 hour=hour-10;
431 5 dispbuf[5]=hour/10;
432 5 }
433 4 } //end if (key==key2) 修改时间操作(-)
434 3 if (key==KEY4)
435 3 if(flag2<32)
436 3 flag2=flag2<<1; // 进行移位操作
437 3 else
438 3 flag2=0x01;
439 3 delay_ms(300) ;
440 3 key=KeyBord();
441 3 }// end (key!=key1) 完成时间设置
442 2 /*
443 2 key=KeyBord();
444 2 while( key==KEY1) // 等待按间释放
445 2 key=KeyBord(); */
446 2 flag2=0; //关闭闪烁控制
447 2 TR1=0;
448 2 flag1=1; //正常时间显示
449 2 dispbuf[0]=second%10; // 刷新数据区
450 2 dispbuf[1]=second/10;
451 2 dispbuf[2]=minite%10;
452 2 dispbuf[3]=minite/10;
453 2 dispbuf[4]=hour%10;
454 2 dispbuf[5]=hour/10;
455 2 }// end if (key==KEY1) 主功能键设置完
456 1
457 1
458 1 key=KeyBord();
459 1 while( key==KEY1) // 等待按间释放
460 1 key=KeyBord();
461 1
462 1 //次功能键
463 1 key=KeyBord();
464 1 if (key==KEY2) //查看日期
465 1
466 1 while (key!=0x00)
467 1 {
468 2
469 2 flag1=0 ; // 暂停时间显示
470 2 dispbuf[0]=(uchar)(*p_month_day%32)%10; // 刷新数据区
471 2 dispbuf[1]=(uchar)(*p_month_day%32)/10;
472 2 dispbuf[2]=(uchar)(*p_month_day/32)%10;
473 2 dispbuf[3]=(uchar)(*p_month_day/32)/10;
474 2 dispbuf[4]=7;
475 2 dispbuf[5]=0;
476 2 key=KeyBord();
477 2 }
478 1
479 1 flag1=1; // 恢复时间显示
480 1 key=KeyBord();
481 1 if (key==KEY3) // 省电控制
482 1 {
483 2 flag1=0 ; // 暂停时间显示
484 2 delay_ms(10) ; //如果KEY2常按则进入省电模式
485 2 if (key==KEY3)
486 2 sleep=!sleep; // 进入省电模式
487 2 if(sleep==1)
488 2 flag1=0;
489 2 }
C51 COMPILER V8.02 CLOCK_MAIN 01/05/2008 15:47:41 PAGE 9
490 1
491 1 key=KeyBord(); // 查看闹钟设置
492 1 flag2=0x00 ;
493 1
494 1 if (key==KEY4)
495 1 {
496 2 uchar disp=0x01;
497 2 num=0;
498 2 flag1=0;
499 2 key=KeyBord() ;
500 2 while (key&KEY4)
501 2 {
502 3
503 3
504 3 if (key==(KEY5))
505 3 {
506 4 num=num+1;
507 4 disp=disp<<1;
508 4 }
509 3 if (key==(KEY6) )
510 3 {
511 4 num=num-1;
512 4 disp=disp>>1;
513 4 }
514 3 dispbuf[0]=alarm[num][1]%10;
515 3 dispbuf[1]=alarm[num][1]/10;
516 3 dispbuf[2]=alarm[num][0]%10;
517 3 dispbuf[3]=alarm[num][0]/10;
518 3
519 3 dispbuf[5]=num;
520 3 delay_ms(200) ;
521 3 key=KeyBord();
522 3 }
523 2 flag2=0x00 ;
524 2 }
525 1
526 1 delay_ms(200) ;
527 1 }
528 void alarm_s(void)
529 {
530 1 uchar i ,j=0x01;
531 1 speak=0;
532 1 for (i=0;i<8;i++,j=j>>1)
533 1 if (hour==alarm[i][0])
534 1 if (minite==alarm[i][1])
535 1 if (al_state&j)
536 1 sound_al();
537 1 else
538 1 { speak=0; TR1=0 ;}
539 1 }
540 void sound_al(void)
541 { speak=1;
542 1 //delay_ms(1000);
543 1 }
544
545 void ring ( ) //整点报
546 { flag0=1;
547 1 if((minite==0)&&(second>=55)) //前五声低音
548 1 { TR1=1; flag0=0x40; } // 启动定时器 发出滴滴声 // 设置定时标志
549 1 if( (minite==1)&&(second==0)) //整点高音
550 1 { TR1=1; flag0=0x80; } // 启动定时器 发出滴滴声 // 设置定时标志
551 1
C51 COMPILER V8.02 CLOCK_MAIN 01/05/2008 15:47:41 PAGE 10
552 1
553 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1729 ----
CONSTANT SIZE = 766 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 64 3
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 + -