RS串行通讯用C语言怎么写

RS串行通讯用C语言怎么写,第1张

给你看两个森宽或发送函数, 十分简单

接收的巧衫道理一此伍样, 只是检测的标志位不同和SBUF赋值方向不同而已

#include <reg51.h>

#define UINT8 unsigned char

void UARTSendByte(UINT8 Byte)

{//串口发送1个字节

while(TI==1)

SBUF=Byte//向串口发送数据

while(TI==0)//等待发送完成

TI=0//清楚标志位

}

void UARTSendStr(UINT8 *String)

{//串口发送一个字符串

int i

UINT8 len = strlen(String)

for (i = 0i <leni++)

UARTSendByte(String[i])

}

rs编码中c(x)有什么特点?

RS码是一类纠错能力很强的多进制BCH码[1],其纠错能力和编码效率在线性分组码中是最高的。RS码特别适合用于多进制调制的场合穗凯芦[2],同样适用于在衰落信道中纠正突发性错码[3]。与此同时,RS码能用来构造其他码类,如级联码。由于其具有以上优良性能,目前已被广泛应用在各种通信系统和计算机存储系统中。

1 RS码的编译码原理及数学模型构建

RS码是一种特殊的多进制BCH码。设p为素数,q=pm,那么由伽孙缺罗华域GF(q)产生的码就称作q进制码。二进制BCH码的码长为n=2m-1,若要纠正t个错码,则需要2t个监督码元。同理在q进制码中,码长为猜带n=qs-1,若要纠正t个错码,则需要2st个监督码元,当s=1时的q元BCH码称为RS码,属于非二元BCH码。

1.1 RS码的编码

RS码是循环码的一种,因此其编码方式与一般循环码的编码方式一致。

一个(n,k)RS码的生成多项式g(x)为:

g(x)=(x-α)(x-α2)…(x-a2t)=(x-αi)

其中αi是伽罗华域GF(2m)={0,α0,α1,…,α2m-2}中的一个元素,t为RS码能够纠正的错码个数。

信息多项式m(x)为:

m(x)=mk-1xk-1+mk-2xk-2+…+m1x1+m0

用m(x)除以g(x),所得余式为校验多项式h(x),将h(x)置于m(x)之后,即生成了RS码。

编码后的码字多项式c(x)为:

c(x)=xn-km(x)+h(x)=xn-km(x)+[xn-km(x)]modg(x)

1.2 RS码的译码

RS码是一种非二元循环码,它不再具备特征为2的域运算等性质[4],本文RS码译码算法基于PGZ译码算法,主要分为以下4步:

1.2.1 计算伴随式sk

RS码的伴随式是接收码字r(x)除以生成式g(x)所得的余式。对于RS码共有2t个伴随式。

假设r(x)=r0+r1x+…+rnxn-1

#define SENDLEN 14

unsigned char sendbuf[SENDLEN ]

//初始化串口

SCON = 0x50//串口旁肆轿方式1,允许接收

TMOD = 0x20//定时器1定时方式2

TCON = 0x40//设定时器1开始计数

TH1 = 250//波特率9600

TL1 = 250

PCON = 0x80//波特率加倍控制,SMOD位

RI = 0//清收发标志

TI = 0

TR1 1 = 1//启动定时器

//运肆在这里要给sendbuf装雹哗入要发送的数据

for(i=0 i <S ENDLEN i++)

{

while(!TI)

SBUF = sendbuf[i]

}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12416926.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-23
下一篇2023-05-23

发表评论

登录后才能评论

评论列表(0条)

    保存