第35节:带数码管显示的象棋比赛专用计时器
时间:11-22
来源:互联网
点击:
- if(ucRowRecord==1)//第一列输出低电平
- {
- ucKeySec=5;//触发5号键 对应朱兆祺学习板的S5键
- }
- else if(ucRowRecord==2)//第二列输出低电平
- {
- ucKeySec=6;//触发6号键 对应朱兆祺学习板的S6键
- }
- else if(ucRowRecord==3)//第三列输出低电平
- {
- ucKeySec=7;//触发7号键 对应朱兆祺学习板的S7键
- }
- else //第四列输出低电平
- {
- ucKeySec=8;//触发8号键 对应朱兆祺学习板的S8键
- }
- }
- }
- else if(key_sr1==1&&key_sr2==1&&key_sr3==0&&key_sr4==1)
- {
- uiKeyTimeCnt++;//去抖动延时计数器
- if(uiKeyTimeCnt>const_key_time)
- {
- uiKeyTimeCnt=0;
- ucKeyLock=1;//自锁按键置位,避免一直触发,只有松开按键,此标志位才会被清零
- if(ucRowRecord==1)//第一列输出低电平
- {
- ucKeySec=9;//触发9号键 对应朱兆祺学习板的S9键
- }
- else if(ucRowRecord==2)//第二列输出低电平
- {
- ucKeySec=10;//触发10号键 对应朱兆祺学习板的S10键
- }
- else if(ucRowRecord==3)//第三列输出低电平
- {
- ucKeySec=11;//触发11号键 对应朱兆祺学习板的S11键
- }
- else //第四列输出低电平
- {
- ucKeySec=12;//触发12号键 对应朱兆祺学习板的S12键
- }
- }
- }
- else if(key_sr1==1&&key_sr2==1&&key_sr3==1&&key_sr4==0)
- {
- uiKeyTimeCnt++;//去抖动延时计数器
- if(uiKeyTimeCnt>const_key_time)
- {
- uiKeyTimeCnt=0;
- ucKeyLock=1;//自锁按键置位,避免一直触发,只有松开按键,此标志位才会被清零
- if(ucRowRecord==1)//第一列输出低电平
- {
- ucKeySec=13;//触发13号键 对应朱兆祺学习板的S13键
- }
- else if(ucRowRecord==2)//第二列输出低电平
- {
- ucKeySec=14;//触发14号键 对应朱兆祺学习板的S14键
- }
- else if(ucRowRecord==3)//第三列输出低电平
- {
- ucKeySec=15;//触发15号键 对应朱兆祺学习板的S15键
- }
- else //第四列输出低电平
- {
- ucKeySec=16;//触发16号键 对应朱兆祺学习板的S16键
- }
- }
- }
- }
- break;
- }
- }
- /* 注释三:
- *按键服务程序操作的精髓在于根据当前系统处于什么窗口下就执行什么操作。
- *紧紧围绕着不同的窗口ucWd来执行不同的操作。
- */
- void key_service() //第三区 放在定时中断里的按键服务应用程序
- {
- switch(ucKeySec) //按键服务状态切换
- {
- case 1:// 1号键 对应朱兆祺学习板的S1键红棋加分 按键
- switch(ucWd)//本程序最核心的变量ucWd
- {
- case 1://窗口1,代表刚上电,完成或者复位后的状态
- uiRedTotal=uiRedTotal+60;//加红棋分的时间,此处60秒代表一分
- if(uiRedTotal>5940)
- {
- uiRedTotal=5940;
- }
- uiRedTotal=uiRedTotal-(uiRedTotal%60);//去秒取整分
- ucDisplayUpdate=1;//更新显示
- uiVoiceCnt=const_voice_short; //按键声音触发,滴一声就停。
- break;
- case 2://窗口2,代表黑棋正在运行中的状态
- break;
- case 3://窗口3,代表黑棋在中途暂停的状态
- break;
- case 4://窗口4,代表红棋正在运行中的状态
- break;
- case 5://窗口5,代表红棋在中途暂停的状态
- break;
- }
- ucKeySec=0;//响应按键服务处理程序后,按键编号清零,避免一致触发
- break;
- case 2:// 2号键 对应朱兆祺学习板的S2键红棋减分 按键
- switch(ucWd)//本程序最核心的变量ucWd
- {
- case 1://窗口1,代表刚上电,完成或者复位后的状态
- if(uiRedTotal>=60)
- {
- uiRedTotal=uiRedTotal-60;//减红棋分的时间,此处60秒代表一分
- }
- uiRedTotal=uiRedTotal-(uiRedTotal%60);//去秒取整分
- ucDisplayUpdate=1;//更新显示
- uiV
数码管显示象棋比赛专用计时 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)