#include <REG52.H>
#define uchar unsigned char
uchar a,flag,i;
uchar code table[]="I Love ";
void main()
{
TMOD=0x20;//定时器工作方式,8位数据自动重装
TH1=0xFD;//高8位,低8位装入的初值一样
TL1=0xFD;//串口通信方式为1,波特率为9600bps,装入初值;
//SMOD所在的PCON寄存器中的值默认为0,所以SMOD为0;
TR1=1;//打开定时器
REN=1;//打开串口允许接收位
SM0=0;//串口通信方式为1
SM1=1;
EA=1;//打开总中断
ES=1;//串口中断允许位
while(1)
{
if(flag==1)//中断函数开始
{
ES=0;//关闭中断允许位,防止出错
for(i=0;i<7;i++)//传送固定字符位
{
SBUF=table[i];
while(!TI);//判断有无中断申请
TI=0;//传输数据后清零
}
SBUF=a;//将期望字符送给传送SBUF缓冲寄存器
while(!TI);//传输申请中断
TI=0;//清零
ES=1;//串口中断允许位
flag=0;//标志位清零
}
}
}
void ser() interrupt 4
{
RI=0;//将要接收数据中断申请,RI清零
P1=SBUF;
a=SBUF;//SBUF中为接收的数据
flag=1;//标志位置1
}
|