//接收一个字节并发送
#include <reg52.h>
#define uchar unsigned char
sbit RXD0=P1^1;
sbit TXD0=P1^0;
char flag;
uchar T;
void WaitTF0( void )
{
while(!TF0);
TF0=0;
}
void S2INI(void)
{
TMOD |=0x02;
TH0=0xA0; //波特率9600
TL0=TH0;
TR0=1;
TF0=0;
}
void WByte(unsigned int input)
{
uchar i=8;
uchar temp;
TR0=1;
TH0=0xA0; //9600
TL0=TH0;
TXD0=0; //起始位0
WaitTF0();
while(i--)
{
TXD0=(bit)(input & 0x01);
WaitTF0();
input>>=1; //8位数据
}
TXD0=(bit)1;
WaitTF0();
TR0=0;
flag=0;
}
uchar RByte() //接收
{
uchar i=8;
uchar temp=0;
if(RXD0==0)
{
TR0=1;
TH0=0xA0; //波特率9600
TL0=TH0;
WaitTF0();
}
while(i--)
{
temp>>=1;
temp=temp&0x7f;
if(RXD==1)
temp |=0x80;
}
if(RXD0==1)
{
WaitTF0();
flag=1;
}
TR0=0;
return temp;
}
main()
{
S2INI();
T=0;
flag=0;
RXD0=1; //初始化,不许接收
while(1)
{
while(RXD0);
T=RByte();
if(flag==1)
WByte(T);
}
}