问答

汇集网友智慧,解决技术难题

21ic问答首页 - STC89C52单片机串口通信问题,求解答

串口通信 单片机串口 STC89C52单片机 unsigned TI

STC89C52单片机串口通信问题,求解答

guoyy182020-09-04
使用的是STC89C52单片机,从另一个芯片上通过串口忘单片机上传数据,在串口调试助手上能看到传到单片机的数据,但是程序没有反应,求问大佬们为什么,多谢啦
#include <reg52.h>

void UsartConfiguration();
unsigned char num = 'A';


sbit LED2=P2^0;
void delay(unsigned int i)                //延时函数
{
        unsigned int k;
        for (k=0;k<i;k++) ;
}


void main()                        //主函数
{
       
        UsartConfiguration();                                //调用接受的参数
        if(num == 'F')
        {
                LED2=0;
        }
}
void UsartConfiguration()
{

        SCON=0x50;                //设置为工作方式1               

        TMOD=0x20;                //设置为工作方式2

        PCON=0x80;                //波特率加倍

        TH1=0xFD;                //计数器初值设置,波特率是9600

        TL1=0xFD;

        ES=1;                        //开中断

        EA=1;                                               

        TR1=1;                        //开计数器

}

void interrupt_uart() interrupt 4 //using1切换寄存器组到1,进入中断就要判断是发送中断TI,还是接收中断RI。
{   
    if(TI)  //判断是否为发送端TI中断,中断结束之后,只需发送端清零,表示发送完成。
   {
     TI = 0;
     REN = 1;  // ******允许接收数据。 *******
   }         
   if(RI) //判断是否为接收端RI中断,中断结束之后,只需接收端清零,表示接收完成。
   {
     RI = 0; //只要数据接收端清零,就可以取出数据。
           num = SBUF;         //SBUF取数据            
           SBUF = num;         //*******把数据num从SBUF送出去。************
           REN = 0;        //严谨的写法,发送数据的时候禁止接收数据。
   }
        //发送的时候不接收数据 ,发送完了再接收数据。            
}
回答 +关注 16
1790人浏览 4人回答问题 分享 举报
4 个回答

您需要登录后才可以回复 登录 | 注册