第45节:主机的串口收发综合程序框架
时间:11-22
来源:互联网
点击:
- riveStep=1;//动态扫描数码管的步骤变量
- unsigned char ucWd1Update=1; //窗口1更新显示标志
- unsigned char ucWd2Update=0; //窗口2更新显示标志
- unsigned char ucWd3Update=0; //窗口3更新显示标志
- unsigned char ucWd4Update=0; //窗口4更新显示标志
- unsigned char ucWd=1;//本程序的核心变量,窗口显示变量。类似于一级菜单的变量。代表显示不同的窗口。
- unsigned intuiSetData1=0;//本程序中需要被设置的参数1
- unsigned intuiSetData2=0;//本程序中需要被设置的参数2
- unsigned intuiSetData3=0;//本程序中需要被设置的参数3
- unsigned intuiSetData4=0;//本程序中需要被设置的参数4
- unsigned char ucTemp1=0;//中间过渡变量
- unsigned char ucTemp2=0;//中间过渡变量
- unsigned char ucTemp3=0;//中间过渡变量
- unsigned char ucTemp4=0;//中间过渡变量
- //根据原理图得出的共阴数码管字模表
- code unsigned char dig_table[]=
- {
- 0x3f,//0 序号0
- 0x06,//1 序号1
- 0x5b,//2 序号2
- 0x4f,//3 序号3
- 0x66,//4 序号4
- 0x6d,//5 序号5
- 0x7d,//6 序号6
- 0x07,//7 序号7
- 0x7f,//8 序号8
- 0x6f,//9 序号9
- 0x00,//无 序号10
- 0x40,//- 序号11
- 0x73,//P 序号12
- };
- void main()
- {
- initial_myself();
- delay_long(100);
- initial_peripheral();
- while(1)
- {
- key_service(); //按键服务的应用程序
- usart_service();//串口接收服务程序
- communication_service(); //一发一收的通讯服务程序
- display_service(); //显示的窗口菜单服务程序
- status_service();//状态显示的应用程序
- }
- }
- void communication_service(void) //一发一收的通讯服务程序
- {
- unsigned int i;
- if(ucStatus==1)//处于正在通讯的过程中
- {
- switch(ucSendStep)
- {
- case 0: //通讯过程0发送一串数据
- switch(ucSendTotal)//根据当前已经发送到第几条数据来决定发送哪些参数
- {
- case 0: //发送参数1
- ucSendregBuf[0]=0xeb; //把准备发送的数据放入发送缓冲区
- ucSendregBuf[1]=0x00;
- ucSendregBuf[2]=0x55;
- ucSendregBuf[3]=0x01; //代表发送参数1
- ucSendregBuf[4]=0x00;
- ucSendregBuf[5]=0x02; //代表发送2个字节的有效数据
- ucSendregBuf[6]=uiSetData1>>8;//把int类型的参数分解成两个字节的数据
- ucSendregBuf[7]=uiSetData1;
- break;
- case 1://发送参数2
- ucSendregBuf[0]=0xeb; //把准备发送的数据放入发送缓冲区
- ucSendregBuf[1]=0x00;
- ucSendregBuf[2]=0x55;
- ucSendregBuf[3]=0x02; //代表发送参数2
- ucSendregBuf[4]=0x00;
- ucSendregBuf[5]=0x02; //代表发送2个字节的有效数据
- ucSendregBuf[6]=uiSetData2>>8;//把int类型的参数分解成两个字节的数据
- ucSendregBuf[7]=uiSetData2;
- break;
- case 2://发送参数3
- ucSendregBuf[0]=0xeb; //把准备发送的数据放入发送缓冲区
- ucSendregBuf[1]=0x00;
- ucSendregBuf[2]=0x55;
- ucSendregBuf[3]=0x03; //代表发送参数3
- ucSendregBuf[4]=0x00;
- ucSendregBuf[5]=0x02; //代表发送2个字节的有效数据
- ucSendregBuf[6]=uiSetData3>>8;//把int类型的参数分解成两个字节的数据
- ucSendregBuf[7]=uiSetData3;
- break;
- case 3://发送参数4
- ucSendregBuf[0]=0xeb; //把准备发送的数据放入发送缓冲区
- ucSendregBuf[1]=0x00;
- ucSendregBuf[2]=0x55;
- ucSendregBuf[3]=0x04; //代表发送参数4
- ucSendregBuf[4]=0x00;
- ucSendregBuf[5]=0x02; //代表发送2个字节的有效数据
- ucSendregBuf[6]=uiSetData4>>8;//把int类型的参数分解成两个字节的数据
- ucSendregBuf[7]=uiSetData4;
- break;
- }
- ucSendregBuf[8]=0x00;
- for(i=0;i<8;i++)//最后一个字节是校验和,是前面所有字节累加,溢出部分不用我们管,系统会有规律的自动处理
- {
- ucSendregBuf[8]=ucSendregBuf[8]+ucSendregBuf[i];
- }
- for(i=0;i<9;i++)
- {
- eusart_send(ucSendregBuf[i]);//把一串完整的数据发送给下位机
- }
- ucSendTimeOutLock=1; //原子锁加锁
- uiSendTimeOutCnt=0;//超时计时器计时清零
- ucSendTimeOutLock=0; //原子锁解锁
主机串口收发程序框 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)