21ic问答首页 - pic软件计算奇偶校验,出错
pic软件计算奇偶校验,出错
fxl1232022-07-12
pic软件计算奇偶校验,发送1,2,3,4,5。显示3F,3F,03,3F,05。请大家帮忙看看uint add (uint data) //奇校验 1的个数为奇数
{
uint i = 0;
int cnt = 0;
int temp = 0;
for(i = 0;i < 8;i++)
{
temp = ((data >> i) & 1);
cnt += temp;
}
if(cnt%2 == 0)
{
return 1;
}
else
{
return 0;
}
}
void Usart_Init (void)
{
RCSTA = 0xD0; //9位接收
TXSTAbits.TX9 = 1; //9位发送
TXSTAbits.TXEN = 1; //使能发送
TXSTAbits.SYNC = 0; //异步
TXSTAbits.BRGH = 1; //高速
BAUDCONbits.BRG16 = 0; //SYNC = 0, BRGH = 1, BRG16 = 0
SP1BRGH = 0;
SP1BRGL = 0x19; //25,波特率9600
RCIE = 1;
RCIF = 0;
// TXIE = 1;
}
void Usart_SEND (uint TX)
{
TXSTAbits.TX9D = add(TX);
TXREG = TX;
while(!TXSTAbits.TRMT);
delayus(50);
}
{
uint i = 0;
int cnt = 0;
int temp = 0;
for(i = 0;i < 8;i++)
{
temp = ((data >> i) & 1);
cnt += temp;
}
if(cnt%2 == 0)
{
return 1;
}
else
{
return 0;
}
}
void Usart_Init (void)
{
RCSTA = 0xD0; //9位接收
TXSTAbits.TX9 = 1; //9位发送
TXSTAbits.TXEN = 1; //使能发送
TXSTAbits.SYNC = 0; //异步
TXSTAbits.BRGH = 1; //高速
BAUDCONbits.BRG16 = 0; //SYNC = 0, BRGH = 1, BRG16 = 0
SP1BRGH = 0;
SP1BRGL = 0x19; //25,波特率9600
RCIE = 1;
RCIF = 0;
// TXIE = 1;
}
void Usart_SEND (uint TX)
{
TXSTAbits.TX9D = add(TX);
TXREG = TX;
while(!TXSTAbits.TRMT);
delayus(50);
}
赞0
用示波器测量1,2,3... 对应的输出波形。
1,测量波特率,
2,看看波形是否符合数据。
没准是接收端问题,或者电平失配等问题。
还可以把UART 接口TXD,RXD 短路,自发自收闭环测试。
评论
2022-07-14
赞0
评论
2022-07-13
赞0
用示波器看吧。代码写的不好,但是看起来没问题。
uint odd(uint inp)
{
inp ^= inp >>4;
inp ^= inp >>2;
inp ^= inp >>1;
return inp & 1;
}
评论
2022-07-13
赞0
评论
2022-07-12
您需要登录后才可以回复 登录 | 注册