• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

小白关于定时器的白痴问题 大侠勿笑

开心的马骝 2015-03-05 浏览量:2021
#include "reg52.h"

void timerms();
void main()
{
	TMOD = 0x01;
	TL0  = 0xf0;
	TH0  = 0xd8;
	ET0  = 1;
	EA   = 1;
	timerms();
}

void timerms()
{
 TR0  = 1;    //定时器/计数器0启动
 while(TF0!=1)
 {}
 TF0 = 0;
 TL0  = 0xf0;
 TH0  = 0xd8;
}


请教 这段程序有什么问题 为什么不能正常启动定时器呢

0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 需要TL0、TH0计满数,TF才置1,你可以全速运行观察一下TF值的变化,或者写个简单的程序下载到板子上验证

    • 发布于 2015-03-05
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:48

  • 有启动定时器,但是没有写定时器中断服务程序。可以改成这样

    #include "reg52.h"
    
    void main()
    {
    	TMOD = 0x01;
    	TL0  = 0xf0;
    	TH0  = 0xd8;
    	ET0  = 1;
    	EA   = 1;
    	TR0  = 1;    //定时器/计数器0启动
    }
    
    void timerms() interrup 1
    {
     TL0  = 0xf0;
     TH0  = 0xd8;
     if(....)
     {
      //.........
     }
    }
    • 发布于2015-03-05
    • 举报
    • 评论 0
    • 0
    • 0

  • 这不是咋拉客啊!但是我强烈建议你,来我们Proteus板块

    //www.icxbk.com/group-show-id-19.html

    不敢说能实时的去解决工程问题,但也许,类似51,avr,pic,430,arm7之类的问题,能得到快速响应

    心动了吗?心动了就来呗!

    • 发布于2015-03-05
    • 举报
    • 评论 0
    • 0
    • 0

  • 他手动清除标记,也可以,如果在这个程序上改的话,可以加个循环。

    “驴”哥,您觉得呢?

    • 发布于2015-03-05
    • 举报
    • 评论 0
    • 0
    • 0

  • 可是为什么用keil单步调试时,执行到while(TF!=0)就一直循环在这里了呢
    • 发布于2015-03-05
    • 举报
    • 评论 0
    • 0
    • 0

  • 好像也行,但感觉这样写不太好啊
    • 发布于2015-03-05
    • 举报
    • 评论 0
    • 0
    • 0

  • 那就是TF = 1了呗。

    那为什么等于了1呢。

    定时时间到了!

    • 发布于2015-03-05
    • 举报
    • 评论 0
    • 0
    • 0

  • 我的不是TF!=1 时循环吗 TF=1时不就跳出循环了 应该继续往下了吗

    可是我这一直执行不到TF=0啊

    • 发布于2015-03-05
    • 举报
    • 评论 0
    • 0
    • 0

  • 嗯,看他工艺吧,有什么具体要求呗。

    突然我感觉你叫“驴”哥,不咋上口呢。

    叫 “阿驴”吧,怎么样!

    • 发布于2015-03-05
    • 举报
    • 评论 0
    • 0
    • 0

  • 需要TL0、TH0计满数,TF才置1,你可以全速运行观察一下TF值的变化,或者写个简单的程序下载到板子上验证

    • 发布于2015-03-05
    • 举报
    • 评论 0
    • 0
    • 0

  • 对啊,等待定时溢出,然后跳出循环!

    你可以产看TH0和TL0的值,如跳出后,值应该是0xff,0xff。

    不知道我说明白没。

    • 发布于2015-03-05
    • 举报
    • 评论 0
    • 0
    • 0

  • 就是这点有点不明白  TR0=1 不是就开始定时模式了 定时器就开始累加 一直到溢出吗 
    • 发布于2015-03-05
    • 举报
    • 评论 0
    • 0
    • 0

  • 可是我用keil单步调试时 到了循环就一直循环在那了  我试了次设10步后溢出 然后单步执行 然后就没有然后了 单步n次后还是在循环。。。
    • 发布于2015-03-05
    • 举报
    • 评论 0
    • 0
    • 0

  • 软件仿真不一定行,建议写个简单的程序验证
    • 发布于2015-03-05
    • 举报
    • 评论 0
    • 0
    • 0

  • 额哦!是用keil软仿真?

    • 发布于2015-03-05
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

小白关于定时器的白痴问题 大侠勿笑