2568|0

40

帖子

0

资源

一粒金砂(初级)

请教关于串口异步通讯问题 [复制链接]

通讯要求:面向字符帧长可变的异步串行数据通信方式,以DLE(10H)、STX(02H)作为帧起始字段,以DLE(10H)、ETX(03H)作为帧结束字段。为了避免在信息字段中出现DLE,影响数据的正确接收,采取如下做法:数据发送方在发送数据前检查信息字段中有没有出现DLE,如果信息字段中出现DLE字符,则在此DLE字符前再加一字节DLE。数据接收方如果连续接收到两个DLE字符,表明此DLE是数据信息,而不是控制转义字符,去掉一个DLE字符即可。 CRC校验码采用CCITT推荐的CRC校验码,生成多项式为:G(X)=X16+X12+X5+1,CRC计算初始值5555H,这个初值是指什么涵义阿?我想获取有用的信息:请教下有没有更好的编程办法,这是的我想的方法,请大家指点下

 

#include "C8051F060.h"
#define uchar unsigned char
#define uint unsigned int
uchar flag,flag1;
uint Pres1,Pres2;
uint val1,val2;
uchar idata a[2];
uchar idata input[17];
uchar idata output[17];
uint i,j;

 

void search()
{
 uint m,n;
 if(flag1)
 {
  j=2;
  input[j]=a
  m=j-1;
  n=j-2;
  input[j]=a;
  if((input[m]==0x10)&&(input[n]==0x10)&&(input[j]==0x03))
  {
   REN0=0;
  }
  
 }
}

 

void main()

{

 

}

 

void uart0() interrupt 4

 uchar temp;
 SFRPAGE = UART0_PAGE  ;
 if(RI0==1)
 {
  RI0=0;
  a=SBUF0;
  if(i==3)
  {
   i=0;
  }
  if((a[0]==0x10)&&(a[1]==0x10)&&(a[2]==0x02))
  { 
   flag1=1;
   input[0]=a[0];
   input[1]=a[1];
   input[2]=a[2];
   
  }

 }
 
}


 

[ 本帖最后由 wj1478 于 2010-7-5 16:12 编辑 ]
此帖出自单片机论坛

回复
您需要登录后才可以回帖 登录 | 注册

最新文章 更多>>
    关闭
    站长推荐上一条 1/6 下一条

    About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

    站点相关: 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

    北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

    电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved
    快速回复 返回顶部 返回列表