标题: 单片机LED定时闪程序if (TF0 == 1)问题 [打印本页]

作者: 机子单    时间: 2019-10-18 16:16
标题: 单片机LED定时闪程序if (TF0 == 1)问题
请教论坛的大师
当程 序第一次跑到这里的时候,TF0是0,不执行下面大括号的语句,当TF0是1的时候,是哪条语句执行后,让TF0变成1。

捕获11.PNG (318.77 KB, 下载次数: 60)

捕获11.PNG

作者: k80213082    时间: 2019-10-18 16:31
TF0是中断标志 。。。中断一次自动加一、、、、反正就是计数器丛0 到255 就会 让这个TF0加一

作者: 464545163    时间: 2019-10-18 16:39
TF0是溢出中断标志吧?这个应该是硬件自动清零的吧!
作者: 464545163    时间: 2019-10-18 16:40
硬件自动清零的
作者: xianfajushi    时间: 2019-10-18 17:11
TF0=1是计数器干的活,计数满是设置标志位值。
作者: csmyldl    时间: 2019-10-18 18:43
是单片机内部的电路使TF0为1,称之为硬件置位,并规定这种查询方式必须软件清除TF0,如果采取中断方式也是硬件清除
作者: Flywithliye    时间: 2019-10-18 19:54
定时器T0溢出(计时结束)时,TF0由硬件自动置1。
而并不是哪条语句把他置1的。
作者: wulin    时间: 2019-10-18 20:46
TF0是定时器0的溢出中断请求标志位,查询方式TF0需要软件清0,中断方式TF0由硬件自动清0。



作者: cphnkj188    时间: 2019-10-19 08:44
当你设置好定时器的模式及初值且打开定时器:TMOD=0x01;(模式)TH0=0xb8;TL0=0x00(初值)TR0=1;(打开定时器);这时候定时器开始工作,当TH0计数到66536时,溢出标志TF0就会自动变成1。
这时候需要软件清零,就是if(TF0==1){TF0=0;}然后执行下一步程序
作者: wasdkk    时间: 2020-1-16 15:23
cphnkj188 发表于 2019-10-19 08:44
当你设置好定时器的模式及初值且打开定时器:TMOD=0x01;(模式)TH0=0xb8;TL0=0x00(初值)TR0=1;(打开定 ...

我也刚学到这里,和楼主的问题一样,TH0和TL0赋值后要经过18432和机器周期才能到65536溢出,但是程序执行到if语句只需要几个机器周期就完成了,程序是反复判断if语句直到溢出?还是程序等在if语句前,直到经过18432个机器周期的时间后溢出?
作者: 渣渣来学习    时间: 2022-6-25 22:15
判断语句里的TL0,重新赋值是必要的吗?




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1