« 上一篇下一篇 »

串口通信数据校验——奇偶校验

串口通信中,为了数据传输的正确性和完整性,常常需要进行数据校验,常用的校验方法如:奇偶校验、横向冗余校验、纵向冗余校验、CRC校验(循环冗余校验)等。下面我来介绍一下其中比较简单的校验方法——奇偶校验。

以双机串行通信为例:则必须有发送端与接收端,也就有分别的发送端代码与接收端代码。

本程序功能为发送端发送的数值在发送端与接收端同时进行显示,

如上图,为发送端代码,利用变量temp来读取欲显示值,接下来的几句为具体显示代码,ACC = temp;表示把temp的值给累加器ACC,这句执行完毕后PSW(程序状态字寄存器)的第0位(奇偶标志位)的值即代表累加器A中“1”的个数为奇数还是偶数。下面继续分析,TB8为发送数据的第9位,把P赋给TB8,发送出去后在接收程序里面接收到的第9位数据RB8就会为TB8的值,如下图:

RB8接收到的即为TB8的值,在接收程序里面再用ACC读取接收缓冲器里面的值,同理,这里的奇偶标志位也会对A中的“1”的个数进行表示,如果这里我们接收到的RB8的值与P相等,则表明我们接收的数据无误,即可进行相应的处理,如果有误则不进行处理。

这就是奇偶校验。