求助:串口收发数据,只能发或收问题
时间:10-02
整理:3721RD
点击:
刚写了一段串口收发数据程序,运行效果是只能收或只能发。程序的思路是,设置2个标志符号,对应收和发,接收完毕对发的标志位置位,允许发;发完对接收标志位置位,允许收。
求助各位指点一下。代码如下:
#include<reg52.h>
#define uc unsigned char
uc tra,rec,tem; //tra-transfer flag rec-receive flag tem-data
void init();
void main()
{
init();
while(1)
{
if(rec)
{
tem=SBUF;
rec=0;
}
if(tra)
{
//SBUF=dat;
SBUF=tem;
tra=0;
}
}
}
void init()
{
SM0=0;
SM1=0;
REN=1;
PCON=0x00;
ES=1;
EA=1;
SBUF=0;
rec=1;
tra=0;
}
void serial() interrupt 4
{
if(RI)
{
RI=0;
tra=1;
}
if(TI)
{
TI=0;
rec=1;
}
}
求助各位指点一下。代码如下:
#include<reg52.h>
#define uc unsigned char
uc tra,rec,tem; //tra-transfer flag rec-receive flag tem-data
void init();
void main()
{
init();
while(1)
{
if(rec)
{
tem=SBUF;
rec=0;
}
if(tra)
{
//SBUF=dat;
SBUF=tem;
tra=0;
}
}
}
void init()
{
SM0=0;
SM1=0;
REN=1;
PCON=0x00;
ES=1;
EA=1;
SBUF=0;
rec=1;
tra=0;
}
void serial() interrupt 4
{
if(RI)
{
RI=0;
tra=1;
}
if(TI)
{
TI=0;
rec=1;
}
}