用C编写的RS232串口通信程序

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

voidmain(){delayms(100);init();//初始化系统delayms(100);init_wdt();//初始化看门狗while(1){while(!RI_0)//是否收到数据{clr_wdt();}RI_0=0;//清除接收中断标志buffer=S0BUF;if(buffer==0x5a)//检测祯头0start0=1;if(buffer==0x54)//检测祯头1start1=1;if(buffer==0x5a)//检测祯尾0end0=1;if(buffer==0xfe)//检测祯尾1end1=1;if((start0==1)&(start1==1)){buff[i]=buffer;//从祯头1开始存储数据i++;}if((end0==1)&(end1==1))//是否已经接收祯尾{count=i;//数据长度为count个i=1;if((buff[2]==0x03)&(count==107))//是否422指令{buff[0]=0x5a;//重填祯头0buff[count-4]=0;//校验和清零for(k=2;k(count-4);k++)//计算校验和{buff[count-4]+=buff[k];}for(k=0;kcount;k++)//从祯头1开始循环发送{S0BUF=buff[k];while(!TI_0);//等待发送完成TI_0=0;//清除发送中断标志}reset();}elseif((buff[2]==0x05)&(count==7))//是否AD测试指令{sendad();reset();}elseif((buff[2]==0x18)&(count==7))//是否发送时序信号指令{sendpaulse();reset();}else//如果接收错误,则恢复各标志位为初始状态以便下次接收{reset();}}}}voidreset(){start0=0;//祯头祯尾标志位清零start1=0;end0=0;end1=0;for(k=0;kcount;k++){buff[k]=0x00;//缓冲区清零}count=0;//计数清零}

1 / 2
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功