我学单片机3个月了,也写了一个,楼主可以测试一下
#include <reg52.h>
sbit relay = P1^3; //继电器,0线圈吸合,1线圈断开
sbit key = P3^0; //按键,0为按下,1为松开
bit flag=0;
#define uchar unsigned char
#define uint unsigned int
void Init_T0(void) //50毫秒@11.0592MHz
{
TMOD = 0x01;
TL0 = 0x00; //设置定时初值
TH0 = 0x4C; //设置定时初值
TF0 = 0; //清除TF0标志
TR0 = 1; //定时器0开始计时
ET0 = 1;
EA = 1;
}
void main(void)
{
Init_T0();
relay = 1; //断开继电器
while(1)
{
//想实现其他功能,再这里添加代码
}
}
void T0_ISR() interrupt 1
{
static uint mm,nn;
TL0 = 0x00; //设置定时初值 50毫秒
TH0 = 0x4C; //设置定时初值
if(key==0) //判断按键是否被按下
nn++;
if((key==0)&&( nn>=1200)) // 按键按下并且到达1分钟
{
while(!key); nn=0; //等待按键释放
relay=0; flag=1;
}
if(flag==1)
mm++;
{
if( mm>=6000) //吸合5分钟断开
{ mm=0; relay=1; flag=0;}
}
} |