您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 用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;//计数清零}
本文标题:用C编写的RS232串口通信程序
链接地址:https://www.777doc.com/doc-5356035 .html