[讨论] 有关定时器延时问题

chenmoumou   2009-8-21 12:34 楼主
我写了一个定时器0的延时程序,麻烦大家看看:
void timer0(uint t0)
{
uint i;
for(i=0;i {
  TMOD=0x01;
  TH0=(65536-50000)/256;
  TL0=(65536-50000)%256;
  TR0=1;
  while(!TF0);
  TF0=0;
}
如果实现1秒延时,直接void timer0(20)就行了.但是不知道为什么程序最后一句    TF0=0;必须要呢,不是说硬件自动置0吗?但是最后一句不能去掉,去掉就会出错,就不能延时1秒了.希望达人们帮帮小弟.小弟先谢过了!

回复评论 (2)

因为你这里采用查询方式而不是中断方式,所以需要软件将TF0置零.在中断方式下TF0才会由硬件自动置零.
点赞  2009-8-21 19:54
哦.谢谢了
点赞  2009-8-22 11:57
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复