本帖最后由 soar5233 于 2014-2-16 23:19 编辑
帮别人写的一个小程序,他用的AT89C51IC2的芯片.我写程序时候用的STC的开发板.在处理串口接收中断时候出现问题.程序用STC开发板完成运行,但用AT89C51IC2时候串口接收出现问题,只能接受到数组的第二位,后面的接收不到(我用标志位查出来的),两个平台都用的11.0592,9600pbs.
AT89C51IC2在把程序改成1200pbs后可以用.
是不是AT的片子处理速度太慢?串口速率过快,导致无**确接收?请高手帮忙看看应该如何改!!!万分感谢!!
uint8 flag = 0;
uint8 flag1 = 0;
uint8 BUFFER[8];
uint8 Uart_Len;
void uart_init() interrupt 4
{
flag = 0;
Uart_Len = 0;
while(flag<10&&Uart_Len<8)
{ if(RI == 1)
{ RI = 0;
BUFFER[Uart_Len++] = SBUF;
flag = 0; flag1 = 1; }
else { TI=0;flag++;} }}
main()
{....while(1)
{if(flag1 ==1)
{ flag1 = 0;
if(BUFFER[0]==0x0a)
{ if(BUFFER[1] == 0x01)
{ if(BUFFER[2] == 0x02)
{这里是要做处理的,我给这里放过标志位,但是程序根本到不了这里} (用STC的单片机就不会出现这个问题,想问高手,是时序出的问题吗?谢谢) } }
else if(....).......}}} |