#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
}
|