关于单片机串口接收数据的问题 ,求助·~!!!!!!!

2019-07-15 20:28发布

以下是我写的程序,想用PC发HEX数据,然后用8个LED显示接收的结果。在过程中发现奇数发送可以正确显示,比如  01h 03h  05h ```偶数的话都会出错甚至发送之后还是上次的结果。。不知为何,新手啊,求指导~!
#include"reg51.h"
unsigned char Receive_data;                                                                                                                                                                                                                                                         
/*****************配置函数*******************/
void config()
{
   SCON=0X50;
   TMOD=0X20;
   PCON=0X80;
   TH1=0xf3;
   TL1=0xf3;
   EA=1;
   ES=1;
   TR1=1;
}
/*****************LED闪烁程序***********************/
void LED(unsigned char num)
{
   P1=0X00;
   P1=num;

}
/*******************主函数* ************************/
void main()
{
    config();
        Receive_data=0xff;
        while(1)
        {
            LED(Receive_data);
        }
}
/******************串口中断服务程序************************/
void Reset() interrupt 4
{
    Receive_data=SBUF;
        while(!RI);
        RI=0;
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
J_acket
1楼-- · 2019-07-15 22:35
有人知道么·!?~!? 求助~!
依然落叶飘零
2楼-- · 2019-07-15 23:32
  1. /*****************LED闪烁程序***********************/
  2. void LED(unsigned char num)
  3. {
  4.    P1=0X00;
  5.    P1=num;

  6. }
复制代码
这个是什么显示程序??以前我做课程设计的时候也遇到这种情况,很可能是你输出口的最低位被短路置高了,检查一下硬件电路。
1522495332
3楼-- · 2019-07-16 04:42
你提供的信息太少了,没晶振频率,没机器周期,代码没注释。
还有下面这个最好改一下
void Reset() interrupt 4
{
    Receive_data=SBUF;
        while(!RI);
        RI=0;
}
void Reset() interrupt 4
{
    if(RI)
    {
       Receive_data=SBUF;
        RI=0;
    }
    TI=0; //保证不是发送完成进来中断
}

一周热门 更多>