#define LED P1
void IO_interrupt() interrupt 4
{
char buf;
if(RI==1)
{
buf=SBUF;
RI=0;
// if(buf==0x01)
// {
if(LED==0x02)
{
LED=0x01;
}
// }
else
{
LED=0x02;
}
// else
LED=0x00;
SBUF=buf;
}
while(!TI);
TI=0;
}
void delay3s(void);
void main()
{
int i=100;
// RI=0; //receive 接收标志位
// TI=0; //TI 发送标志位
// SM0=0;
// SM1=1;
// SM2=0;
//char buf =0x01234567;
SCON=0x50; //以上为 0101 0000 即是0x50
TMOD&=0x0f;
TMOD|=0x20;
PCON=0x80; //1000 0000 只有D7位有用 赋值为1 加倍
TL1=0xF3; //模式 2 2个8位定时器 高4位自动填装 低4位用于定时
TH1=0xF3; // 波特率 9600 12T
TR1=1; //定时器1开关
TR0=0;
//开启相应的中断
EA=1; //中断总开关
REN=1; //串口接收开关
ES=1; //串口接收中断开启
//配置定时器1 串口中断自动调用定时器1 所以占用定时器
while(1)
{
LED=0x00;
delay3s();
LED=0xff;
delay3s();
}
}
void delay3s(void) //误差 0us
{
unsigned char a,b,c;
for(c=189; c>0; c--)
for(b=230; b>0; b--)
for(a=33; a>0; a--);
}
[1] [2]