单片机定时器精准定时_为何51单片机的定时器计时不准确

发布时间:2024-06-06 17:01

//假设晶振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

}

}

取消

评论

ItVuer - 免责声明 - 关于我们 - 联系我们

本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

桂ICP备16001015号