打印

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

[复制链接]
1824|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
guoyy18|  楼主 | 2020-9-4 22:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
使用的是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;        //严谨的写法,发送数据的时候禁止接收数据。
   }
        //发送的时候不接收数据 ,发送完了再接收数据。            
}

使用特权

评论回复

相关帖子

沙发
cainiao518| | 2020-9-5 10:42 | 只看该作者
程序结构不对

使用特权

评论回复
板凳
cainiao518| | 2020-9-5 10:43 | 只看该作者
一般结构这样的:

main()
{
   UsartConfiguration();
   while(1)
{
    if(num == 'F')
        {
                LED2=0;
        }
}
}

使用特权

评论回复
地板
yx445566| | 2020-9-5 15:35 | 只看该作者
你主程序都跑飞了

使用特权

评论回复
5
资深技术| | 2020-9-5 20:14 | 只看该作者
官网有例程,试过,好用

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

1

帖子

0

粉丝