求51单片机c语言程序,使用定时器中断,当接受的下降沿时,开始定时,定时一分钟,定时结束后跳出中断

2024-12-18 11:29:05
推荐回答(1个)
回答1:

//假设晶振12MHZ,检测的是P1.1下降沿
#include "reg51.h"
unsigned int YSJS;
sbit K1 = P1^1;
void main(void)
{
TMOD |= 0X10; //定时器1工作于方式1,16位定时器
TL1 = 0x78; //设置定时初值
TH1 = 0xEC; //定时器1定时时间=5000us
ET1 = 1; //使能定时器1中断
EA =1; //开总中断
K1 = 1;
YSJS = 0;

while(1)
{
if(K1==0)TR1 = 1; //启动定时器1
if(YSJS == 12000) //已定时一分钟
{
//这里加入你自己定时一分钟后要做的处理
}
}
}

void TIMER1(void) interrupt 3 //定时器1中断函数使用默认寄存器组
{
TL1 = 0x78; //设置定时初值
TH1 = 0xEC; //定时器1定时时间=5000us

YSJS++;
if(YSJS==12000) //已定时一分钟
{
TR1 = 0;关闭定时器1
}
}