第45节:主机的串口收发综合程序框架
时间:11-22
来源:互联网
点击:
- 兆祺学习板的S5键
- switch(ucWd)//在不同的窗口下,设置不同的参数
- {
- case 1:
- uiSetData1--;
- if(uiSetData1>9999)
- {
- uiSetData1=0;//最小值是0
- }
- ucWd1Update=1;//窗口1更新显示
- break;
- case 2:
- uiSetData2--;
- if(uiSetData2>9999)
- {
- uiSetData2=0;//最小值是0
- }
- ucWd2Update=1;//窗口2更新显示
- break;
- case 3:
- uiSetData3--;
- if(uiSetData3>9999)
- {
- uiSetData3=0;//最小值是0
- }
- ucWd3Update=1;//窗口3更新显示
- break;
- case 4:
- uiSetData4--;
- if(uiSetData4>9999)
- {
- uiSetData4=0;//最小值是0
- }
- ucWd4Update=1;//窗口4更新显示
- break;
- }
- ucVoiceLock=1;//原子锁加锁,保护主函数与中断函数的共享变量uiVoiceCnt
- uiVoiceCnt=const_voice_short; //按键声音触发,滴一声就停。
- ucVoiceLock=0;//原子锁解锁,保护主函数与中断函数的共享变量uiVoiceCnt
- ucKeySec=0;//响应按键服务处理程序后,按键编号清零,避免一致触发
- break;
- case 3:// 切换窗口按键 对应朱兆祺学习板的S9键
- ucWd++;//切换窗口
- if(ucWd>4)
- {
- ucWd=1;
- }
- switch(ucWd)//在不同的窗口下,在不同的窗口下,更新显示不同的窗口
- {
- case 1:
- ucWd1Update=1;//窗口1更新显示
- break;
- case 2:
- ucWd2Update=1;//窗口2更新显示
- break;
- case 3:
- ucWd3Update=1;//窗口3更新显示
- break;
- case 4:
- ucWd4Update=1;//窗口4更新显示
- break;
- }
- ucVoiceLock=1;//原子锁加锁,保护主函数与中断函数的共享变量uiVoiceCnt
- uiVoiceCnt=const_voice_short; //按键声音触发,滴一声就停。
- ucVoiceLock=0;//原子锁解锁,保护主函数与中断函数的共享变量uiVoiceCnt
- ucKeySec=0;//响应按键服务处理程序后,按键编号清零,避免一致触发
- break;
- case 4:// 启动发送数据和复位按键 对应朱兆祺学习板的S13键
- switch(ucStatus)//在不同的状态下,进行不同的操作
- {
- case 0://处于待机状态,则启动发送数据
- ucErrorCnt=0; //累计错误总数清零
- ucSendTotal=0; //已经发送串数据总数清零
- ucSendStep=0; //发送数据的过程步骤清零,返回开始的步骤待命
- ucStatus=1; //启动发送数据,1代表正在通讯过程
- break;
- case 1://处于正在通讯的过程
- break;
- case 2: //发送数据出错,比如中间超时没有接收到数据
- ucStatus=0; //切换回待机的状态
- break;
- }
- ucVoiceLock=1;//原子锁加锁,保护主函数与中断函数的共享变量uiVoiceCnt
- uiVoiceCnt=const_voice_short; //按键声音触发,滴一声就停。
- ucVoiceLock=0;//原子锁解锁,保护主函数与中断函数的共享变量uiVoiceCnt
- ucKeySec=0;//响应按键服务处理程序后,按键编号清零,避免一致触发
- break;
- }
- }
- void display_drive(void)
- {
- //以下程序,如果加一些数组和移位的元素,还可以压缩容量。但是鸿哥追求的不是容量,而是清晰的讲解思路
- switch(ucDisplayDriveStep)
- {
- case 1://显示第1位
- ucDigShowTemp=dig_table[ucDigShow1];
- if(ucDigDot1==1)
- {
- ucDigShowTemp=ucDigShowTemp|0x80;//显示小数点
- }
- dig_hc595_drive(ucDigShowTemp,0xfe);
- break;
- case 2://显示第2位
- ucDigShowTemp=dig_table[ucDigShow2];
- if(ucDigDot2==1)
- {
- ucDigShowTemp=ucDigShowTemp|0x80;//显示小数点
- }
- dig_hc595_drive(ucDigShowTemp,0xfd);
- break;
- case 3://显示第3位
- ucDigShowTemp=dig_table[ucDigShow3];
- if(ucDigDot3==1)
- {
- ucDigShowTemp=ucDigShowTemp|0x80;//显示小数点
- }
- dig_hc595_drive(ucDigShowTemp,0xfb);
- break;
- case 4://显示第4位
- ucDigShowTemp=dig_table[ucDigShow4];
- if(ucDigDot4==1)
- {
- ucDigShowTemp=ucDigShowTemp|0x80;//显示小数点
- }
- dig_hc595_drive(ucDigShowTemp,0
主机串口收发程序框 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)