现在需要使用串口2,工作方式选择方式3
我现在的配置如下:
S2CON = 0xd0; //1101,0000 11位可变波特率,奇偶校验位
BRT = RELOAD_COUNT;
AUXR = 0x10;
IE2 = 1; //允许串口2中断
EA = 1; //开总中断
因为S2CON不支持位寻址,所以我做奇偶校验使用如下方式:
奇偶校验(发送):
unsigned char parity = 0x00;
ACC = val;
parity = PSW&0x01;
parity <<= 3;
S2CON |= parity; //设置S2TB8
奇偶校验(接收):
ACC = S2BUF;
CRC = PSW&0x01;
CRC = CRC<<2;
if (CRC == (S2CON&0x04))
在测试过程中数据出错:
测试流程:向串口2发送数据,然后串口2把接收的数据返回PC
PC机to单片机:30 31 30 31 30 30 30 30 37 46 46 43 0D
单片机toPC机:3F 30 31 3F 30 31 3F 30 3F 30 30 3F 3F 30 37 46 46 43 0D
请教各位大虾,我的错误在什么地方,谢谢各位大虾
S2CON |= parity; //设置S2TB8
需要考虑0和1两种情况。不同情况处理方式不同。