找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1394|回复: 8
打印 上一主题 下一主题
收起左侧

定时器怎么实现按秒计数,做成时钟计数源?求解!!!

[复制链接]
跳转到指定楼层
楼主
ID:1057946 发表于 2022-12-25 09:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
定时器不就是在中断执行的时候才开始运行吗,那么我进行主程序的时候定时器0不就停止计数,那计数就不准确了

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1034262 发表于 2022-12-25 14:22 | 只看该作者
建议楼主找一本单片机课本系统学一学比较好,你问的是很基本的一个知识。
定时器只要启动就会自动运行,跟开不开中断无关。使用自动重装的模式,则定时器精度就跟你的晶振的精度一样。
回复

使用道具 举报

板凳
ID:687418 发表于 2022-12-25 14:26 | 只看该作者
您理解有误!定时器启动后就开始运行。
回复

使用道具 举报

地板
ID:213173 发表于 2022-12-25 14:43 | 只看该作者
你可以把定时器理解为单片机之外的一个硬件,当操控TRx=1; 定时器x就开始工作,与主程序在干什么没有什么直接关系。如果开了定时器中断,那么定时时间到,TFx = 1通知CPU,CPU放下手头工作做个标记,去执行中断任务,完后回到标记处继续原来的任务。
回复

使用道具 举报

5#
ID:10193 发表于 2022-12-25 16:04 | 只看该作者
主程序只是响应中断,定时器的运行模式确定后,就会循环的运行
回复

使用道具 举报

6#
ID:496636 发表于 2022-12-25 19:05 | 只看该作者
定时器只要在程序中执行启动就能运行起来,TR0=1;就是使定时器0运行起来的语句。定时器0运行起来的工作内容就是每个机器周期加1。
什么是机器周期呢?51单片机的机器周期是晶振周期的12倍,如晶振频率是12M,那么它的周期是12M分之一,那么机器周期就是1M分之一,一兆就是10的6次方,那么它的周期就是10的负6次方,就是一微秒。
那么定时器开始工作就是每12个晶振振荡加一次数,即每1微秒加1.
当加到最大值的时候,再加1就变成0,然后再向上加。
只有当把对应的定时器中断打开的时候,如ET0=1;就是打开定时器0的中断,那么定时器0的溢出信号才能产生中断,执行此中断服务程序。
你的思维有点混乱,定时器不是在中断的时候才运行,而是只要启动定时器就能运行,一旦启动,就对每个机器周期进行计数。计到最大值后,再加1就会溢出,必须打开中断开关,才能利用溢出信号产生中断。
举个粟子,你的闹钟只要把电池电源开关打开,闹钟就会走,当闹钟走到设定的指针与当前的时钟指针重合时,闹钟不一定会响,只有打开了闹钟开关,才会响起闹钟,提醒你。
你的意思是闹钟响(中断)是使钟表走动的动力?这显示是荒谬的。
回复

使用道具 举报

7#
ID:883242 发表于 2022-12-25 19:41 | 只看该作者
如果进入主程序定时器0就停止计数,那么要定时器有何用?
回复

使用道具 举报

8#
ID:195496 发表于 2022-12-28 11:07 | 只看该作者
你们问的太不专业了,是不是写设计,这种问题自已都没有理解,上课时怎么学习的
回复

使用道具 举报

9#
ID:1003276 发表于 2023-1-1 18:26 | 只看该作者
定时器与主函数运行时就开始运行
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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