请问这段代码哪里有问题?怎么改?
/*中断实现串口通信 */
#include<reg52.h>
unsigned char flag;
void main()
{
void init();
init();
while(1)
{
while(!flag)
;
ES = 0;
P1 = SBUF;
flag = 0;
SBUF = P1;
while(!TI) //TI发送中断标志
;
TI = 0;
ES = 1;
}
}
void init()
{
TMOD = 0x20; //定时器1工作方式2自动重装8位计时器
TH1 = 0xfd; //波特率9600
TH0 = 0xfd;
SM0 = 0; //串行口工作方式1
SM1 = 1;
EA = 1;
ET1 = 1;
TR1 = 1;
ES = 1;
REN = 1; //串行数据允许接收位
}
void serial() interrupt 4
{
flag = 1;
RI = 0; //接收完数据后硬件将RI置1,必须软件归0
}
我的目的是发一个数据给单片机。然后把数据赋给P1口。。再把该数据传回来。
[code=C/C++]
void init()
{
TMOD = 0x20; //定时器1工作方式2自动重装8位计时器
TH1 = 0xfd; //波特率9600
TH0 = 0xfd;
SM0 = 0; //串行口工作方式1
SM1 = 1;
EA = 1;
ET1 = 1; //去掉这个语句就程序就正确了
TR1 = 1;
ES = 1;
REN = 1; //串行数据允许接收位
}
//ET1 = 1; //去掉这个语句就程序就正确了
为什么??
[/code]