#include <reg52.h>
#define uchar unsigned char
uchar idata r_buf[11],t_buf[32];
uchar data r_in,r_out,t_in,t_out,x,y,z;
bit r_full,t_empty,t_done;
uchar code m[]={"A012345678"};
serial() interrupt 4 using 1
{
if(TI)
{
TI=0;
if ( r_out < 10 )
{ SBUF=m[r_out];
r_out++;
}
else
r_out = 0;
}
if(RI)
{
RI=0;
if(r_in<8)
{ r_buf[r_in]=SBUF;
if (r_buf[r_in]=='9')
z++;
r_in++;
}
else
r_in=0;
}
}
void loadmsg( ) //接收
{
// RI=1;
}
void processmsg(void) //发送
{
for(x=0;x<200;x++) //34
for(y=0;y<x;y++);;
TI=1;
}
void time0() interrupt 1 //T0
{
x++;
TL0=0x00;;
}
void time02() interrupt 3 //T1
{
y++;
}
main()
{
TMOD=0x21; //定时器1,方式2,8位自装入定时
TH1=0xa0; //600波特率11.0592MHz
SCON=0x50; //允许接收
PCON=0x80;
TL0=0x00; TH0=0x00;
TR0=1; TR1=1;
ES=1;
ET1=0;
ET0=1;
EA=1;
t_empty=t_done=0;
r_full=0;
r_out=t_in=t_out=y=x=z=0;
r_in=1; //接受和发送缓冲置空
TI=1;
RI=1;
SBUF = 0;
for(;;)
{
processmsg(); //发送
loadmsg(); //接收
}
}