使用串口助手发送1234567890,回显数据比较乱22222222610,请阁位前辈指点一下,谢谢!程序如下;
//接收采用中断实现
#include <pic.h>
unsigned char error=0x00; //错误数据帧,丢弃
bit Q=0; //一次数据帧接收完成标志位
unsigned char message[10]; //数据信息缓存区
unsigned char j=0x00; //数据信息的长度
void interrupt isr(void) //接收中断处理
{
if(RCIF&&RCIE)
{
if(FERR)//监测是否有帧错误
{
error=RCREG;
}
if(OERR)
{
CREN=0 ;
CREN=1 ; //接收模块被复位重置,OERR清零
}
message[j]=RCREG; //保存每一次接收到的数据
j++;
if(j>1)
{
Q=1; //10个数据字节接收完成标志
j=0;
}
}
}
void usart_init() //串口初始化
{
INTCON=0 ; // 关闭所有的中断
TRISC6=1 ;
TRISC7=1 ;
SPBRG=25;//波特率9600,6M时钟
BRGH=1; //高速波特率
SYNC=0;
SPEN=1; //异步串口工作方式
TXEN=1; //USART工作于发送器方式
TXIE=0; //发送不需要中断处理
RCIE=1; //接收需要中断处理
CREN=1; //激活接收器
PEIE = 1;
GIE = 1;
}
void send_char(unsigned char byte) //发送一个字节的数据
{
TXREG = byte;
while(!TXIF);
}
void main() //将上位机发送的数据通过串口显示
{
usart_init();
while(1)
{
if(Q==1)
{send_char(j);
Q=0;
for(j=0;j<10;j++)
send_char(message[j]);
}
}
}
|