关于单片机串口接收数据的问题 ,求助·~!
时间: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;
}
这个是什么显示程序?以前我做课程设计的时候也遇到这种情况,很可能是你输出口的最低位被短路置高了,检查一下硬件电路。
#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;
}
有人知道么·!?~!? 求助~!
- /*****************LED闪烁程序***********************/
- void LED(unsigned char num)
- {
- P1=0X00;
- P1=num;
- }
这个是什么显示程序?以前我做课程设计的时候也遇到这种情况,很可能是你输出口的最低位被短路置高了,检查一下硬件电路。
你提供的信息太少了,没晶振频率,没机器周期,代码没注释。
还有下面这个最好改一下
void Reset() interrupt 4
{
Receive_data=SBUF;
while(!RI);
RI=0;
}
void Reset() interrupt 4
{
if(RI)
{
Receive_data=SBUF;
RI=0;
}
TI=0; //保证不是发送完成进来中断
}