a7458969 发表于 2015-3-29 15:07:29

STC89C52RC串口的问题

本人自己画了一块STC89C52RC的控制板,在调串口的时候遇到一个问题
#include <reg51.h>

void InitUART(void)
{
    TMOD = 0x20;
    SCON = 0x50;
    TH1 = 0xFD;
    TL1 = TH1;
    PCON = 0x00;
    EA = 1;
    ES = 1;
    TR1 = 1;
}

void SendOneByte(unsigned char c)
{
    SBUF = c;
    while(!TI);
    TI = 0;
}

void UARTInterrupt(void) interrupt 4
{
    if(RI)
    {
      RI = 0;
      //add your code here!
    }
    else
      TI = 0;
}

主程序里面
while(1)
{
        SendOneByte(0x11);
}
理想情况下,PC端应该会一直接受到0x22,然而事实是接受端只收到2次,程序就莫名其妙飞了。我再测试单独翻转IO口,一切正常,有人遇到过这种情况吗

34071417 发表于 2015-3-29 15:22:23

void UARTInterrupt(void) interrupt 4
{
    if(RI)
    {
      RI = 0;
      //add your code here!
    }
    else
      TI = 0;

中的TI =0;删除

34071417 发表于 2015-3-29 15:23:25

while(!TI);
    TI = 0;
发送函数有这个了,所以中断内的那部分中断标志代码可删除

a7458969 发表于 2015-3-29 15:27:00

我试试啊

a7458969 发表于 2015-3-29 15:27:54

{:tongue:可以了,谢谢大侠
页: [1]
查看完整版本: STC89C52RC串口的问题