微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 程序中的TF0=0起什么作用,为什么要加这一句。

程序中的TF0=0起什么作用,为什么要加这一句。

时间:10-02 整理:3721RD 点击:
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
void main()
{
uchar T_Count=0;
//P3=0xfe;
P2=0xfe;
TMOD=0x01; //定时器0 工作方式1
TH0=(65536-40000)/256; //40ms 定时
TL0=(65536-40000)%256;
TR0=1; //启动定时器
while(1)
{
if(TF0==1)
{
TF0=0;      
TH0=(65536-40000)/256; //恢复初值
TL0=(65536-40000)%256;
if(++T_Count==5)      
{
//P3=_cror_(P0,1);
P2=_crol_(P2,1);
T_Count=0;
}
}
}
}


目的就是while(1)循环里面的程序只能执行一次,当标志TF 下次被赋予1的时候才有可能再次进入里面执行里面的程序

这是个标志位

是中断标志

它的作用是:当定时器0溢出时,由硬件使TF0置1,并申请中断,进入中断服务程序后,由硬件自动清0.要注意:如果使用的是软件查询方式的话,当查询到该为置1后得用软件清0.

你好。那这个例子就是属于软件查询?如果是软件查询,是不是因为有了“if(TF0==1)”这一句?

顶顶,,,

我把TF0=0删掉后流水灯的运行速度快了好多。大侠,这是为什么?

学习了、、、、、、、、、、、、、

定时器/计数器0的溢出中断标志位,当定时器计数完成后产生溢出中断,置位TF0,程序才能进入if

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top