谁能告诉我为什么发送不出去数据 但接收到???????????
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar UART_buff;
bit rec_dat = 0,send_dat = 0;
void mian()
{
TMOD = 0x20;
TH1 = 0xf4;
TL1 = 0xf4;
TR1 = 1;
SCON = 0x50;
EA = 1;
ES = 1;
while(1)
{
if ((rec_dat == 1) && (send_dat == 1))
{
rec_dat = 0;
send_dat = 0;
SBUF = UART_buff;
}
}
}
void ser() interrupt 4
{
if(RI == 1)
{
RI = 0;
rec_dat = 1;
UART_buff = SBUF;
if( UART_buff == '1') P1=0xfe;
if( UART_buff == '2') P1=0xff;
}
else
{
TI = 0;
send_dat = 1;
}
}
不好意思 我知道哪里错了 应该开始定义 send_dat == 1就行了
第1个回答 推荐于2016-10-14
/*
**********************
if(TI)
{
TI = 0;
send_dat = 1;
}
*********************
*/
用上面的代码替换掉你的
/*
********************
else
{
TI = 0;
send_dat = 0;
}
********************
*/追问
**********************
if(TI)
{
TI = 0;
send_dat = 1;
}
*********************
*/
用上面的代码替换掉你的
/*
********************
else
{
TI = 0;
send_dat = 0;
}
********************
*/追问
试过了 不行
追答硬件检查一下。 不行就加我qq吧 ,资料里有。
send_dat = 1 ,不是send_dat == 1
第2个回答 2014-06-03
单独处理试试
while(1)
{
if (rec_dat == 1)
{
rec_dat = 0;
}
if (send_dat== 1)
{
send_dat = 0;
SBUF = UART_buff;
}
}
while(1)
{
if (rec_dat == 1)
{
rec_dat = 0;
}
if (send_dat== 1)
{
send_dat = 0;
SBUF = UART_buff;
}
}