找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2049|回复: 6
收起左侧

关于51单片机定时计数器程序问题

[复制链接]
ID:574921 发表于 2020-12-5 23:20 来自手机 | 显示全部楼层 |阅读模式
1黑币
各位大佬,小弟在学习51单片机的时候有一个问题一直困惑着我,希望大佬们解惑
就是51单片机在执行主函数的时候定时器里面的程序是单独进行的,调用到定时计数器函数的时候才开始进行的呢?
比如我一个计时程序,需要用到定时计数器执行1s的定时,1秒到了,进行显示,这是定时计数器程序还在运行吗?

最佳答案

查看完整内容

定时器和你的主程序是分开独立运行的,当你打开了定时器开关后,主程序在运行的同时,定时器也在跑。至于你问的问题,1s后定时器是否还在运行,要看你的程序是怎么写的吧,如果你的定时时间设置的是1s钟,但是没有把TH和TL重新赋值,我记得定时器好象会重新从0开始计数,所以下一次定时的时间就不会是1s钟了。
回复

使用道具 举报

ID:576900 发表于 2020-12-5 23:20 | 显示全部楼层
定时器和你的主程序是分开独立运行的,当你打开了定时器开关后,主程序在运行的同时,定时器也在跑。至于你问的问题,1s后定时器是否还在运行,要看你的程序是怎么写的吧,如果你的定时时间设置的是1s钟,但是没有把TH和TL重新赋值,我记得定时器好象会重新从0开始计数,所以下一次定时的时间就不会是1s钟了。

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:332444 发表于 2020-12-6 09:00 | 显示全部楼层
去补充一下计时定时知识,蛋骗鸡定时器硬件是独立的,这点该明白。

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:517466 发表于 2020-12-6 10:15 | 显示全部楼层
    “千江水”说得对。单片机的定时,一般是是赋予初值,并启动定时器开始工作后,计数值自动加一。直到溢出,产生中断。在中断处理程序中,通常是重新赋予定时寄存器初始值,以保证下次计时周期正确, 然后处理你想要做的。对于计时周期比较长,而中断处理程序执行时间比较短的,不需要关中断、开中断这样的处理。但是如果出现定时周期小于中断处理代码执行时间的,如果不加入关、开中断处理,会导致中断的重复嵌套调用,导致堆栈溢出而死机。
    所以,你一定要确认定时周期和终端处理程序的执行时间。尽量减少中断处理程序的处理内容,减少执行时间,避免出现中断处理没完成,下一次中断又来临。虽然可以通过关、开中断避免同一个中断的嵌套,但整个程序的定时周期就不准了。

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:638887 发表于 2020-12-6 19:10 | 显示全部楼层
定时器是单独于主程序运行,但是定时器程序要到定时时间到才会自动跳到中断程序。多啃啃书吧,有很多基本例程,有助于理解。
回复

使用道具 举报

ID:406879 发表于 2020-12-7 13:52 | 显示全部楼层
与主线程无关
回复

使用道具 举报

ID:574921 发表于 2020-12-8 18:40 | 显示全部楼层
懂了,谢谢各位大佬
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

Powered by 单片机教程网

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