现象:从电脑发送一个数据,单片机就不停的发送数据到电脑上...
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
/*
延时X 毫秒函数
*/
void delay_nms(uint x)
{
uchar i;
uint j;
for(j=0;j<x;j++)
{
for(i=200;i>0;i--);
}
}
void send_byte_to_pc(uchar dat)
{
//ES=0;
SBUF=dat;
while(!TI);
TI=0;
//ES=1;
}
void init_uart(void)
{
// EA=1;
TMOD=0X20;
TH1=252;TL1=252;//9600//波特率和晶振有关
TR1=1;
ET1=0;
SCON=0X50;
//ES=1;
}
/*******************************************************************/
uchar rece_data_chuli(void)//接收数据处理
{
uchar i=0;
while(!RI);
RI=0;
i=SBUF;
TI=0;
SBUF=i;
while(!TI);
TI=0;
delay_nms(1);
return 0;
}
//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
void main(void)
{
init_uart(); //UART 初始化
delay_nms(500);
while(1)
{
rece_data_chuli();
delay_nus(2);
}
}
/*******************************************************************/
void int_uart(void) interrupt 4
{
uchar sbuf_value;
ES=0;
if(RI)
{
RI=0;
sbuf_value=SBUF;
rece_data_buff[in_data_cnt]=sbuf_value;//保存一字节数据
in_data_cnt++;//接收数据个数计数
if(in_data_cnt==1)//共接收一个数据
{
in_data_cnt=0;
flag_receive=1;
}
}
ES=1;
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
不知道你想问什么,串口不工作???
不工作怎么能收发???
至于收或发,完全看你程序控制。
这个程序估计不是你写的?要么就是对串口不太了解。
严重错误,程序中有中断接收,同时也有查询等待接收???很混乱的程序。
一般来说,接收时用中断。
本来想从电脑接收一个字节,然后再由单片机发送到电脑的
500大于255有什么关系?延时是没问题的
unsigned char 型的变量是0~255,你给这个变量赋值500?能实现吗?
再说,延时根本没必要,你是想?从电脑收一个字节数据,然后再把这个数据发到电脑吗?
可以试试:
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar sbuf_value;
bit flag_receive;
void send_byte_to_pc(uchar dat)
{
SBUF=dat;
while(!TI);
TI=0;
}
void init_uart(void)
{
EA=1;
TMOD=0X20;
TH1=252;TL1=252;//9600//波特率和晶振有关
TR1=1;
SCON=0X50;
ES=1;
}
void main(void)
{
init_uart(); //UART 初始化
while(1)
{
if(flag_receive ==1)
{
send_byte_to_pc(sbuf_value);
flag_receive=0;
}
}
}
void int_uart(void) interrupt 4
{
if(RI)
{
sbuf_value=SBUF;
flag_receive=1;
RI=0;
}
}
很奇怪,你这个程序下载后,只要从电脑发送一个数据到51单片机,51单片机就不停的发送数据到电脑上...
一周热门 更多>