求51单片机c语言程序,使用定时器中断,当接受的下降沿时,开始定时,定时一分钟,定时结束后跳出中断
求51单片机c语言程序,使用定时器中断,当接受的下降沿时,开始定时,定时一分钟,定时结束后跳出中断。...
求51单片机c语言程序,使用定时器中断,当接受的下降沿时,开始定时,定时一分钟,定时结束后跳出中断。
展开
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
}
}
#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
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询