#include <reg52.h> //调用单片机头文件
#define uchar unsigned char //无符号字符型 宏定义 变量范围0~255
#define uint unsigned int //无符号整型 宏定义 变量范围0~65535
uchar a=100,num=0;
sbit hw=P1^7; //人体红外
sbit relay=P2^1; //继电器控制灯
sbit yellow = P0^7; //黄色指示灯
sbit green = P0^4; //绿色指示灯
sbit kaiguan = P2^7; //选择开关
void delay_1ms(uint x)//延时函数
{
uint i,j;
for(i=0;i<x;i++)
for(j=0;j<120;j++);
}
void work()//工作函数
{
static uchar value,miao;
if(hw==0)//感应到人
{
delay_1ms(20);//延时20ms
if(hw==0)//确定感应到人
{
relay=0;//继电器吸合
miao = 0;
value = 0;
}
}
// if(num==10000)
// {
// num=0;
// relay=1;
// }
if(relay == 0) //继电器吸合 计时3秒
{
value ++;
if(value >= 10)
{
value = 0;
miao ++;
if(miao >= 3) //3秒的时间
{
miao = 0;
relay = 1; //关闭继电器
}
}
}
}
void main()//主函数
{
P0 = P1 = P2 = P3 = 0XFF;
// TMOD=0x00;
// TH0=(8192-4607)/32;
// TL0=(8192-4607)%32;
// ET0=1;
// EA=1;
// TR0=1;
while(1)//循环
{
work();//调用工作函数
if(kaiguan == 0) //冷风
{
yellow = 0; //黄灯亮
green = 1; //绿灯灭
}else //热风
{
yellow = 1; //黄灯灭
green = 0; //绿灯亮
}
delay_1ms(100); //100ms
}
}
// void int1() interrupt 1
// {
// TH0=(8192-4607)/32;
// TL0=(8192-4607)%32;
// num++;
// } |