51单片机中执行完定时器中断函数,TF0是硬件自动清0吗?

51单片机中执行完定时器中断函数,TF0是硬件自动清0吗?,第1张

TF0是51单片机定时器T0的溢出中断标志位。当T0被允许计数后,T0从初值开始按机器周期或者外部引脚输入的脉冲进行加1计数。当计数到T0最高位产生溢出时,置“1”TF0,并向CPU请求中断。当CPU响应该中断时,将由硬件自动清“0”TF0。当然,你也可以用“位 *** 作指令”对TF0进行置“1”或清“0” *** 作。

方法有很多的,给你一个,你可以调试一下,你可以通过不同的晶振去计算定时器初值,如果你懂定时器这部分很好调通的

#include <reg52h>

sbit p1_0=P1^0;

int i; //全局变量

void timing(void) //晶振为36864M

{

TMOD|=0x01; //定时器T0,工作方式1

TH0=0xC3;

TL0=0xC7; //这两个寄存器存的是计数器的计数开始的值,这两个值累加至溢出后正好是50ms

ET0=1; //使T0中断可以溢出

EA=1; //开启总中断

TF0=0; //溢出位清零

TR0=1; //开启T0

}

/定时中断函数/

void time0_int () interrupt 1 //定时中断函数

{

TH0=0xC3;

TL0=0xC7;

i++;

}

main()

{

i=0;

timing();

while(;)

{

if(i==20)

{

p1_0=~p1_0; //p10口状态翻转

i=0;

}

}

51单片机的几种精确延时实现延时通常有两种方法:一种是硬件延时,要用到定时器/计数器,这种方法可以提高CPU的工作效率,也能做到精确延时;另一种是软件延时,这种方法主要采用循环体进行。 1 使用定时器/计数器实现精确延时 单片机系统一般常选用11059 2 MHz、12 MHz或6 MHz晶振。第一种更容易产生各种标准的波特率,后两种的一个机器周期分

别为1 μs和2 μs,便于精确延时。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/11675868.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-17
下一篇2023-05-17

发表评论

登录后才能评论

评论列表(0条)

    保存