第45节:主机的串口收发综合程序框架
时间:11-22
来源:互联网
点击:
- 一个字节
- delay_short(400);//每个字节之间的延时,这里非常关键,也是最容易出错的地方。延时的大小请根据实际项目来调整
- TI = 0; //清零串口发送完成中断请求标志
- ES = 1; //允许串口中断
- }
- void display_service(void) //显示的窗口菜单服务程序
- {
- switch(ucWd)//本程序的核心变量,窗口显示变量。类似于一级菜单的变量。代表显示不同的窗口。
- {
- case 1: //显示P--1窗口的数据
- if(ucWd1Update==1)//窗口1要全部更新显示
- {
- ucWd1Update=0;//及时清零标志,避免一直进来扫描
- ucDigShow8=12;//第8位数码管显示P
- ucDigShow7=11;//第7位数码管显示-
- ucDigShow6=1; //第6位数码管显示1
- ucDigShow5=10;//第5位数码管显示无
- //先分解数据
- ucTemp4=uiSetData1/1000;
- ucTemp3=uiSetData1%1000/100;
- ucTemp2=uiSetData1%100/10;
- ucTemp1=uiSetData1%10;
- //再过渡需要显示的数据到缓冲变量里,让过渡的时间越短越好
- if(uiSetData1<1000)
- {
- ucDigShow4=10;//如果小于1000,千位显示无
- }
- else
- {
- ucDigShow4=ucTemp4;//第4位数码管要显示的内容
- }
- if(uiSetData1<100)
- {
- ucDigShow3=10;//如果小于100,百位显示无
- }
- else
- {
- ucDigShow3=ucTemp3;//第3位数码管要显示的内容
- }
- if(uiSetData1<10)
- {
- ucDigShow2=10;//如果小于10,十位显示无
- }
- else
- {
- ucDigShow2=ucTemp2;//第2位数码管要显示的内容
- }
- ucDigShow1=ucTemp1;//第1位数码管要显示的内容
- }
- break;
- case 2://显示P--2窗口的数据
- if(ucWd2Update==1)//窗口2要全部更新显示
- {
- ucWd2Update=0;//及时清零标志,避免一直进来扫描
- ucDigShow8=12;//第8位数码管显示P
- ucDigShow7=11;//第7位数码管显示-
- ucDigShow6=2;//第6位数码管显示2
- ucDigShow5=10; //第5位数码管显示无
- ucTemp4=uiSetData2/1000; //分解数据
- ucTemp3=uiSetData2%1000/100;
- ucTemp2=uiSetData2%100/10;
- ucTemp1=uiSetData2%10;
- if(uiSetData2<1000)
- {
- ucDigShow4=10;//如果小于1000,千位显示无
- }
- else
- {
- ucDigShow4=ucTemp4;//第4位数码管要显示的内容
- }
- if(uiSetData2<100)
- {
- ucDigShow3=10;//如果小于100,百位显示无
- }
- else
- {
- ucDigShow3=ucTemp3;//第3位数码管要显示的内容
- }
- if(uiSetData2<10)
- {
- ucDigShow2=10;//如果小于10,十位显示无
- }
- else
- {
- ucDigShow2=ucTemp2;//第2位数码管要显示的内容
- }
- ucDigShow1=ucTemp1;//第1位数码管要显示的内容
- }
- break;
- case 3://显示P--3窗口的数据
- if(ucWd3Update==1)//窗口3要全部更新显示
- {
- ucWd3Update=0;//及时清零标志,避免一直进来扫描
- ucDigShow8=12;//第8位数码管显示P
- ucDigShow7=11;//第7位数码管显示-
- ucDigShow6=3;//第6位数码管显示3
- ucDigShow5=10; //第5位数码管显示无
- ucTemp4=uiSetData3/1000; //分解数据
- ucTemp3=uiSetData3%1000/100;
- ucTemp2=uiSetData3%100/10;
- ucTemp1=uiSetData3%10;
- if(uiSetData3<1000)
- {
- ucDigShow4=10;//如果小于1000,千位显示无
- }
- else
- {
- ucDigShow4=ucTemp4;//第4位数码管要显示的内容
- }
- if(uiSetData3<100)
- {
- ucDigShow3=10;//如果小于100,百位显示无
- }
- else
- {
- ucDigShow3=ucTemp3;//第3位数码管要显示的内容
- }
- if(uiSetData3<10)
- {
- ucDigShow2=10;//如果小于10,十位显示无
- }
- else
- {
- ucDigShow2=ucTemp2;//第2位数码管要显示的内容
- }
- ucDigShow1=ucTemp1;//第1位数码管要显示的内容
- }
- break;
- case 4://显示P--4窗口的数据
- if(ucWd4Update==1)//窗口4要全部更新显示
- {
- ucWd4Update=0;//及时清零标志,避免一直进来扫描
- ucDigShow8=12;//第8位数码管显示P
- ucDigShow7=11;//第7位数码管显示-
- ucDigShow6=4;//第6位数码管显示4
- ucDigShow5=10; //第5位数码管显示无
- ucTemp4=uiSet
主机串口收发程序框 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)