#define uchar unsigned char //用uchar代替unsigned char
#define uint unsigned int //用uint代替unsigned int
unsigned char flag,a,i; //定義變量flag,a,i
uchar code table[]="I receive,thanks"; //定義壹個字符串數組
void init()
{
} //設置工作方式,這個懂。
void main()
{
init(); //系統初始化,妳懂的
while(1) //主循環部分,壹直運行
{
if(flag==1) //等待flag標誌位置位,當接收到數據的時候在串口接收中斷中置位
{
ES=0; //禁止串口中斷,但是註意發送中斷標誌位的置位仍然正常
for(i=0;i<18;i++) //for循環為了壹個個把之前定義的字符串
{
SBUF=table[i]; //向串口收發緩沖器中寫入回應的內容“I receive,thanks”
while(!TI); //等待發送完成,發送中斷標誌被置壹,否則while循環壹直進行
TI=0; //清除發送中斷標誌位
}
SBUF=a; //繼續通過串口向串口收發緩沖器發送a,回顯收到的數據
while(!TI); //等待發送完成
TI=0; //清除發送中斷標誌位
ES=1; //重新使能串口中斷
flag=0; //清除flag,為了等待下壹次接收
}
}
}
void serial() interrupt 4 //串口中斷服務程序,優先級為4
{
RI=0; //當接收完成之後RI被置壹,發生串口中斷,清標誌位
a=SBUF; //讀取收到的字符,並賦給變量a
flag=1; //置接收完成標誌flag為壹,便於主程序中發送響應
}