#include<reg51.h>
#include<stdio.h>
#define uchar unsigned char
#define uint unsigned int
uchar flag,flag0,a;
sbit beep=P3^7;
void warning1();
void warning2();
void warning3();
void init()
{
TMOD=0x20;//设置定时器1为工作方式2
TH1=0xfd;//装初值,设置波特率为9600
TL1=0xfd;
TR1=1;//启动T1定时器
REN=1;//允许串口接收
SM0=0;//设置串口为工作方式1
SM1=1;
EA=1;//开总中断
ES=1;//开串口中断
}
void delay(uint z)//延时函数
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void main()
{
init();//初始化
while(1)
{
if(flag==1)
{
flag=0;
ES=0;
SBUF=a;
switch(flag0)//根据flag0的值进入不同的报警函数
{
case 0: warning1();
break;
case 1: warning2();
break;
case 2: warning3();
break;
case 3: printf("Error!\n");
break;
}
while(!TI);
TI=0;
ES=1;
}
}
}
void ser() interrupt 4
{
RI=0;
//P1=SBUF;
a=SBUF;
flag=1;
if(a==0)//根据上位机发送的不同指令,将flag0设置为不同的
flag0=0;
else if(a==1)
flag0=1;
else if(a==2)
flag0=2;
else
flag0=3;
}
void warning1()
{
while(1)
{
P1=0x01;
beep=1;
delay(500);
P1=0;
beep=0;
delay(500);
}
}
void warning2()
{
while(1)
{
P1=0x55;
beep=1;
delay(500);
P1=~P1;
beep=0;
delay(500);
}
}
void warning3()
{
while(1)
{
P1=0x0f;
beep=1;
delay(500);
P1=~P1;
beep=0;
delay(500);
}
}
#include<stdio.h>
#define uchar unsigned char
#define uint unsigned int
uchar flag,flag0,a;
sbit beep=P3^7;
void warning1();
void warning2();
void warning3();
void init()
{
TMOD=0x20;//设置定时器1为工作方式2
TH1=0xfd;//装初值,设置波特率为9600
TL1=0xfd;
TR1=1;//启动T1定时器
REN=1;//允许串口接收
SM0=0;//设置串口为工作方式1
SM1=1;
EA=1;//开总中断
ES=1;//开串口中断
}
void delay(uint z)//延时函数
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void main()
{
init();//初始化
while(1)
{
if(flag==1)
{
flag=0;
ES=0;
SBUF=a;
switch(flag0)//根据flag0的值进入不同的报警函数
{
case 0: warning1();
break;
case 1: warning2();
break;
case 2: warning3();
break;
case 3: printf("Error!\n");
break;
}
while(!TI);
TI=0;
ES=1;
}
}
}
void ser() interrupt 4
{
RI=0;
//P1=SBUF;
a=SBUF;
flag=1;
if(a==0)//根据上位机发送的不同指令,将flag0设置为不同的
flag0=0;
else if(a==1)
flag0=1;
else if(a==2)
flag0=2;
else
flag0=3;
}
void warning1()
{
while(1)
{
P1=0x01;
beep=1;
delay(500);
P1=0;
beep=0;
delay(500);
}
}
void warning2()
{
while(1)
{
P1=0x55;
beep=1;
delay(500);
P1=~P1;
beep=0;
delay(500);
}
}
void warning3()
{
while(1)
{
P1=0x0f;
beep=1;
delay(500);
P1=~P1;
beep=0;
delay(500);
}
}