微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 关于单片机串口接收数据的问题 ,求助·~!

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

时间:10-02 整理:3721RD 点击:
以下是我写的程序,想用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;
}

有人知道么·!?~!? 求助~!

  1. /*****************LED闪烁程序***********************/
  2. void LED(unsigned char num)
  3. {
  4.    P1=0X00;
  5.    P1=num;

  6. }

复制代码


这个是什么显示程序?以前我做课程设计的时候也遇到这种情况,很可能是你输出口的最低位被短路置高了,检查一下硬件电路。

你提供的信息太少了,没晶振频率,没机器周期,代码没注释。
还有下面这个最好改一下
void Reset() interrupt 4
{
    Receive_data=SBUF;
        while(!RI);
        RI=0;
}
void Reset() interrupt 4
{
    if(RI)
    {
       Receive_data=SBUF;
        RI=0;
    }
    TI=0; //保证不是发送完成进来中断
}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top