#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++;
// } |