第89节:用单片机内部定时器做一个时钟
时间:11-22
来源:互联网
点击:
- 4Cnt1=0; //在软件滤波中,非常关键的语句!!!类似按键去抖动程序的及时清零
- uiKey4Cnt2++; //类似独立按键去抖动的软件抗干扰处理
- if(uiKey4Cnt2>const_key_time4)
- {
- uiKey4Cnt2=0;
- ucKey4Sr=1;//实时反映按键松手时的电平状态
- }
- }
- else
- {
- uiKey4Cnt2=0; //在软件滤波中,非常关键的语句!!!类似按键去抖动程序的及时清零
- uiKey4Cnt1++;
- if(uiKey4Cnt1>const_key_time4)
- {
- uiKey4Cnt1=0;
- ucKey4Sr=0;//实时反映按键按下时的电平状态
- }
- }
- }
- void key_service(void) //按键服务的应用程序
- {
- switch(ucKeySec) //按键服务状态切换
- {
- case 1:// 加按键 对应朱兆祺学习板的S1键
- switch(ucWd)//在不同的窗口下,设置不同的参数
- {
- case 1:
- switch(ucPart) //在不同的局部变量下,相当于二级菜单
- {
- case 1://年
- ucYear++;
- if(ucYear>99)
- {
- ucYear=99;
- }
- ucWd1Part1Update=1;//更新显示
- break;
- case 2: //月
- ucMonth++;
- if(ucMonth>12)
- {
- ucMonth=12;
- }
- ucWd1Part2Update=1;//更新显示
- break;
- case 3: //日
- ucDate++;
- if(ucDate>31)
- {
- ucDate=31;
- }
- ucWd1Part3Update=1;//更新显示
- break;
- }
- break;
- case 2:
- switch(ucPart) //在不同的局部变量下,相当于二级菜单
- {
- case 1://时
- ucHour++;
- if(ucHour>23)
- {
- ucHour=23;
- }
- ucWd2Part1Update=1;//更新显示
- break;
- case 2: //分
- ucMinute++;
- if(ucMinute>59)
- {
- ucMinute=59;
- }
- ucWd2Part2Update=1;//更新显示
- break;
- case 3: //秒
- ucSecond++;
- if(ucSecond>59)
- {
- ucSecond=59;
- }
- ucWd2Part3Update=1;//更新显示
- break;
- }
- break;
- }
- ucVoiceLock=1;//原子锁加锁,保护主函数与中断函数的共享变量uiVoiceCnt
- uiVoiceCnt=const_voice_short; //按键声音触发,滴一声就停。
- ucVoiceLock=0;//原子锁解锁,保护主函数与中断函数的共享变量uiVoiceCnt
- ucKeySec=0;//响应按键服务处理程序后,按键编号清零,避免一致触发
- break;
- case 2:// 减按键 对应朱兆祺学习板的S5键
- switch(ucWd)//在不同的窗口下,设置不同的参数
- {
- case 1:
- switch(ucPart) //在不同的局部变量下,相当于二级菜单
- {
- case 1://年
- ucYear--;
- if(ucYear>99)
- {
- ucYear=0;
- }
- ucWd1Part1Update=1;//更新显示
- break;
- case 2: //月
- ucMonth--;
- if(ucMonth<1)
- {
- ucMonth=1;
- }
- ucWd1Part2Update=1;//更新显示
- break;
- case 3: //日
- ucDate--;
- if(ucDate<1)
- {
- ucDate=1;
- }
- ucWd1Part3Update=1;//更新显示
- break;
- }
- break;
- case 2:
- switch(ucPart) //在不同的局部变量下,相当于二级菜单
- {
- case 1://时
- ucHour--;
- if(ucHour>23)
- {
- ucHour=0;
- }
- ucWd2Part1Update=1;//更新显示
- break;
- case 2: //分
- ucMinute--;
- if(ucMinute>59)
- {
- ucMinute=0;
- }
- ucWd2Part2Update=1;//更新显示
- break;
- case 3: //秒
- ucSecond--;
- if(ucSecond>59)
- {
- ucSecond=0;
- }
- ucWd2Part3Update=1;//更新显示
- break;
- }
- break;
- }
- ucVoiceLock=1;//原子锁加锁,保护主函数与中断函数的共享变量uiVoiceCnt
- uiVoiceCnt=const_voice_short; //按键声音触发,滴一声就停。
- ucVoiceLock=0;//原子锁解锁,保护主函数与中断函数
单片机内部定时器时 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)