微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 第35节:带数码管显示的象棋比赛专用计时器

第35节:带数码管显示的象棋比赛专用计时器

时间:11-22 来源:互联网 点击:

  1. ,避免一致触发
  2. break;
  3. case 7:// 7号键 对应朱兆祺学习板的S7键在第一个窗口下,把计时器的值恢复为开机时的默认值20分钟
  4. switch(ucWd)//本程序最核心的变量ucWd
  5. {
  6. case 1://窗口1,代表刚上电,完成或者复位后的状态
  7. uiRedTotal=1200; //红棋的总时间
  8. uiBlackTotal=1200;//黑棋的总时间
  9. ucDisplayUpdate=1;//更新显示
  10. uiVoiceCnt=const_voice_short; //按键声音触发,滴一声就停。
  11. break;
  12. case 2://窗口2,代表黑棋正在运行中的状态
  13. break;
  14. case 3://窗口3,代表黑棋在中途暂停的状态
  15. break;
  16. case 4://窗口4,代表红棋正在运行中的状态
  17. break;
  18. case 5://窗口5,代表红棋在中途暂停的状态
  19. break;
  20. }
  21. ucKeySec=0;//响应按键服务处理程序后,按键编号清零,避免一致触发
  22. break;
  23. case 8:// 8号键 对应朱兆祺学习板的S8键
  24. ucKeySec=0;//响应按键服务处理程序后,按键编号清零,避免一致触发
  25. break;
  26. case 9:// 9号键 对应朱兆祺学习板的S9键
  27. ucKeySec=0;//响应按键服务处理程序后,按键编号清零,避免一致触发
  28. break;
  29. case 10:// 10号键 对应朱兆祺学习板的S10键
  30. ucKeySec=0;//响应按键服务处理程序后,按键编号清零,避免一致触发
  31. break;
  32. case 11:// 11号键 对应朱兆祺学习板的S11键
  33. ucKeySec=0;//响应按键服务处理程序后,按键编号清零,避免一致触发
  34. break;
  35. case 12:// 12号键 对应朱兆祺学习板的S12键
  36. ucKeySec=0;//响应按键服务处理程序后,按键编号清零,避免一致触发
  37. break;
  38. case 13:// 13号键 对应朱兆祺学习板的S13键红棋按下
  39. switch(ucWd)//本程序最核心的变量ucWd
  40. {
  41. case 1://窗口1,代表刚上电,完成或者复位后的状态
  42. ucRedFlag=0; //红棋暂停计时
  43. ucBlackFlag=1;//黑棋继续计时
  44. ucWd=2; //切换到黑棋正在运行中的状态
  45. ucDisplayUpdate=1;//更新显示
  46. break;
  47. case 2://窗口2,代表黑棋正在运行中的状态
  48. break;
  49. case 3://窗口3,代表黑棋在中途暂停的状态
  50. break;
  51. case 4://窗口4,代表红棋正在运行中的状态
  52. ucRedFlag=0; //红棋暂停计时
  53. ucBlackFlag=1;//黑棋继续计时
  54. ucWd=2; //切换到黑棋正在运行中的状态
  55. ucDisplayUpdate=1;//更新显示
  56. break;
  57. case 5://窗口5,代表红棋在中途暂停的状态
  58. break;
  59. }
  60. ucKeySec=0;//响应按键服务处理程序后,按键编号清零,避免一致触发
  61. break;
  62. case 14:// 14号键 对应朱兆祺学习板的S14键
  63. ucKeySec=0;//响应按键服务处理程序后,按键编号清零,避免一致触发
  64. break;
  65. case 15:// 15号键 对应朱兆祺学习板的S15键
  66. ucKeySec=0;//响应按键服务处理程序后,按键编号清零,避免一致触发
  67. break;
  68. case 16:// 16号键 对应朱兆祺学习板的S16键 黑棋按下
  69. switch(ucWd)//本程序最核心的变量ucWd
  70. {
  71. case 1://窗口1,代表刚上电,完成或者复位后的状态
  72. ucRedFlag=1; //红棋继续计时
  73. ucBlackFlag=0;//黑棋暂停计时
  74. ucWd=4; //切换到红棋正在运行中的状态
  75. ucDisplayUpdate=1;//更新显示
  76. break;
  77. case 2://窗口2,代表黑棋正在运行中的状态
  78. ucRedFlag=1; //红棋继续计时
  79. ucBlackFlag=0;//黑棋暂停计时
  80. ucWd=4; //切换到红棋正在运行中的状态
  81. ucDisplayUpdate=1;//更新显示
  82. break;
  83. case 3://窗口3,代表黑棋在中途暂停的状态
  84. break;
  85. case 4://窗口4,代表红棋正在运行中的状态
  86. break;
  87. case 5://窗口5,代表红棋在中途暂停的状态
  88. break;
  89. }
  90. ucKeySec=0;//响应按键服务处理程序后,按键编号清零,避免一致触发
  91. break;
  92. }
  93. }
  94. void T0_time() interrupt 1
  95. {
  96. TF0=0;//清除中断标志
  97. TR0=0; //关中断
  98. key_scan(); //放在定时中断里的按键扫描函数
  99. time_service();//放在定时中断里的时间应用程序
  100. if(uiVoiceCnt!=0)
  101. {
  102. uiVoiceCnt--; //每次进入定时中断都自减1,直到等于零为止。才停止鸣叫
  103. beep_dr=0;//蜂鸣器是PNP三极管控制,低电平就开始鸣叫。
  104. }
  105. else
  106. {
  107. ; //此处多

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top