51单片机实现串口偶校验

本文介绍了STC单片机如何利用PSW寄存器的奇偶标志位P进行串口通信的偶校验。通过设置SCON寄存器进入9位模式并开启偶校验,配合接收中断和数据处理,确保了数据传输的可靠性。在发送数据时,通过计算数据位加校验位的1的个数确保为偶数,从而实现偶校验功能。
摘要由CSDN通过智能技术生成
1. STC单片机串口

在这里插入图片描述
在这里插入图片描述

2. PSW是一个8位寄存器。PSW的全称是Program Status Word,即程序状态字。

在这里插入图片描述
奇偶标志位P
每执行一条汇编指令,单片机都能根据A中1的个数的奇偶自动令P置位或清零,奇为1,偶为0。P可以填入TB8,作为偶校验。
此标志位对串行通信的数据传输非常有用,通过就校验可以检验传输的可靠性。

3. 奇偶校验

奇校验(odd parity):让传输的数据(包含校验位)中1的个数为奇数。

在这里插入图片描述

偶校验(even parity):让传输的数据(包含校验位)中1的个数为偶数。
在这里插入图片描述

4. STC单片机串口实现偶校验
//uart.c
unsigned char var0,var;		//var0一定要是全局变量

void Uart_isr( void ) interrupt 4
{
	uint8_t tmpBuf;

	RI = 0;
	tmpBuf= SBUF;

    var = tmpBuf; 
    var0= 0;
    var += var0;
	if(RB8 == P)        //偶校验OK
	{
		//数据接收处理
	}
}


void Uart1Init(void)
{
	//SCON = 0x40; //0100,0000 8 位可变波特率,无校验位, 串口1模式1
	SCON = 0xC0; //1100,0000 9 位可变波特率,偶校验位, 串口1模式3
	//其他串口初始化代码

}
void UartSend(uint8_t var)
{
	var0 = 0;
	var += var0;
	TB8 = P;
	SBUF = var;
	//其他串口发送代码
}
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值