单片机串口通信,实现接收到数据后,灯亮。

2024-11-25 16:41:40
推荐回答(2个)
回答1:

看你这程序编的,ha


查询RI 不是等于 1,而是0


只有当数据传送过来的时候,RI才会由1变为0,所以需要查询的状态是 0,不是1


当接收完数据后,再进行对RI的清零


还是不多说了,上程序,若满意请记得采纳一下,谢谢!


这是一个由串口助手发送十六进制码来控制单片机的8个LED亮灭的简单小程序


/***************************************************************************/

#include //通用89C52头文件

/***************************************************************************/

void main(void)//主函数

{

     TMOD=0x20;     //定时器1和2工作方式2(8位定时/计数)

     TH1=0xfd;     //定时器1设置初值,波特率9600bit/s,

     TL1=0xff;

     TR1=1;       //启动定时器T1

     PCON=0x00;     //SMOD=0,不加倍

     SCON=0x50;     //串口工作方式1,允许接收

     IE=0x00; //关闭所有中断

     while(1)

     {

          if(RI==0)//如果有数据

         {

             P2=SBUF; //接收数据并输出至LED上显示

             while(!RI); //等待接收完成

             RI=0; //清空标识

         }

     }

}

/***************************************************************************/

回答2:

不知你io是怎么连的,高亮还是低亮?