#include<reg52.h>
unsigned char flag,a;
void main()
{
TMOD=0x20;//设置定时器/计数器1为工作方式2,8位自动重装定时模式
TH1=0xfd;//9600初值
TL1=0xfd;//9600重装值
TR1=1;//启动定时器
REN=1;//串口通讯接收开
SM0=0;//串口通讯设置方式1
SM1=1;
EA=1;//总中断开
ES=1;//串口中断开
while(1)
{
if(flag==1)//如果串行口中断响应即flag=1,执行下面的发送程序
{
ES=0;//关闭串行口中断
flag=0;//清串行口中断程序响应标记
//a='A';//双引号A显示向上箭头,单引号A时显示A
SBUF=a;//现在是中断方式,a内十六进制时两位1个空格,字符时无要求输入什么显示什么
while(!TI);//等待发送完标志位=1(如果TI非0,向下运行,否则等待)
TI=0;//发送完标志清零
ES=1;//开串行口中断
P1=a;
}
}
}
void ser() interrupt 4//串行口中断号,如果接收标志
{
RI=0;//接收标志位清零
a=SBUF;
flag=1;
}
|