找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

关于单片机定时器的问题

查看数: 6114 | 评论数: 10 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2017-11-18 20:49

正文摘要:

已经看了很久很久很久了一直未能解决这个问题...很绝望啊,国庆节就写好的,一直找到现在都还不知道哪里出了问题,太难受了!!!这是定时采集温度的单片机程序 #include <reg52.h> #include <intrins.h> ...

回复

ID:97438 发表于 2017-12-22 10:39
T0Init();放到while(1)里????其他没看,就这个已经是致命问题了。
ID:223164 发表于 2017-12-21 16:06
Laptop 发表于 2017-11-29 10:15
还有就是最后那个定时器的中断,用了寄存器using 1会有问题。。。不晓得为啥

还没有解决
ID:223164 发表于 2017-11-29 10:15
还有就是最后那个定时器的中断,用了寄存器using 1会有问题。。。不晓得为啥
ID:223164 发表于 2017-11-29 10:13
wulin 发表于 2017-11-26 10:26
你的问题根源根本不在定时器而是在smg()和smg2(),你在这两个子程序里使用死循环while(1),到此除了中断 ...

是的,如果没有按键按下就还在数码管,但本意也是如此 KEY2按下才会去做要做的,相当于确认键。 现在问题就是 定时器启动的位置在数码管后面在1s测量会有问题  其他是没有问题的
ID:213173 发表于 2017-11-26 10:26

你的问题根源根本不在定时器而是在smg()和smg2(),你在这两个子程序里使用死循环while(1),到此除了中断程序外其它程序都无法执行。
ID:223164 发表于 2017-11-25 21:25
!!!求大神
ID:223164 发表于 2017-11-21 10:49
Laptop 发表于 2017-11-19 16:25
定时器提前开的话还没选择几秒测一次就已经测完了

对的是这样 不过 我定时的时间是50ms 利用中断来增加定时时间。然后 关于设定 我也是这样想的 设定一次就够了 后面需要的时候再打开 但是因为这个定时器的打开在数码管前和后有很大区别 在后面1s的时候有问题 然后我就调着调着就把启动放在初始化里了 但是这其实影响不大 主要问题是 启动在数码管后面才是正确的但是有问题。。。放在前面就可以。。。很是郁闷
ID:213173 发表于 2017-11-19 20:34
Laptop 发表于 2017-11-19 16:25
定时器提前开的话还没选择几秒测一次就已经测完了

你还没有掌握定时器的使用方法。普通51单片机如果外接12M晶振,定时器最大定时周期65.5ms,想得到更长的定时时间通常使用定时器中断计数。不是特别需要不要在程序中频繁更改定时器设定,而是根据需要打开或关闭定时器或定时器中断。所以定时器初始化函数放在主循环前面,如果有必要改变定时器定时周期只要在其函数中打开定时器TR0前重装TH0、TL0初值即可。
ID:223164 发表于 2017-11-19 16:25
wulin 发表于 2017-11-19 07:13
void main()
{         
        T0Init();

定时器提前开的话还没选择几秒测一次就已经测完了
ID:213173 发表于 2017-11-19 07:13
void main()
{         
        T0Init();
        while(1)
        {
                smg();
                ds1302();
                smg2();
        }       
}

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表