本帖最后由 ldk060 于 2011-10-20 08:49 编辑
用串口调试助手发送一帧数据给PIC单片机,单片机能否全部把数据接收到,我试了试,怎么接收不全啊?例如发送26 43 51 31 34 30 13 13 11 06 31 31 03 43 04 63 48 06 40 67 48 这一帧数据,单片机能否全部接收到?
我试了试不行,是不是因为串口调试助手字节与字节之间的发送间隔太快导致单片机接收不全(单片机反应速度慢?)
我想,只要串口接收那部分代码执行的时间只要小于串口发数据时位于位之间的时间间隔,为了保险起见,我把波特率设置低一些还是不行。还是不能一次接收完数据。代码如下:
#include <pic.h>
#include <math.h>
#include <stdio.h>
__CONFIG(FOSC_INTOSC&PWRTE_ON&MCLRE_OFF&CP_ON&CPD_ON&BOREN_OFF&IESO_OFF&FCMEN_OFF);
__CONFIG(WRT_ALL&PLLEN_OFF&BORV_25&LVP_OFF);
uchar i,Num=0,Rx[5];
void interrupt Rcv()
{
if(RCIE&&RCIF)
{
Rx[Num]=RCREG;
if(OERR){CREN=0;CREN=1;}
Num++;
if(Num==5)
{
Num=0;
Com_Flag=1;
}
}
}
main()
{
OSCCON=0x70;//IRCF0=1;
RCSTA=0XC0; /*允许串行口工作*/
TXSTA=0X44; /*选择异步高速方式传输9位数据*/
BRGH=1;
SPBRG=51; /*将传输的波特率设为约9 600位/秒25*/
TXEN=1;
CREN=1;
RCIE=1;
PEIE=1; //外围中断允许
while(1)
{
if(Com_Flag==1)
{
Com_Flag=0;
for(i=0;i<5;i++)
{
while(1){if(TXIF==1) break;} //等待写入完成
TXREG=Rx_Dat[ i ];
}
}
}
}
接收数据不正确,不知是哪的问题,请帮忙看下啊 |