找回密码
 立即注册

QQ登录

只需一步,快速开始

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

关于单片机计数器的问题

[复制链接]
跳转到指定楼层
楼主
ID:253022 发表于 2017-12-12 12:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
关于单片机计数器赋初值的问题。初值应该是(2^n-1)(n是所选择的定时器以及工作方式所选择的位数)。
可是今天看到一段代码,大家帮忙看下这有没有问题的,还是说这样也可以。
TMOD=0x05
TH0=0;
        TL0=0;  //(不应该是256吗?)
        TR0=1;

同时还有个问题,就是EA=1;在启用计数功能时需要加这一局吗?
大家一起讨论一下

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

使用道具 举报

沙发
ID:111634 发表于 2017-12-12 18:05 | 只看该作者
先学理论,打基础,就不会有这么多问题了,本坛至少有50%的问题属于此类情况。
回复

使用道具 举报

板凳
ID:164602 发表于 2017-12-13 10:15 | 只看该作者
同学,二楼说得好,好好学习基础知识,不然这个就搞不懂!
我来解释一下吧(没有看到程序全部,只能以我的经验来解释了)
第一:此程序设置的是计数器。即P3^4口(通常的51单片机此口为定时/计数器0)计数外部脉冲个数。
第二:计数器有很多不同的用法,这里说两种:①计数固定脉冲数,就可以打开中断允许,ET0=1,当然要开总中断允许,EA=1。②如果计数脉冲不确定,要分情况,则可以不用中断,所以也就不开中断了。
第三:定时/计数器,都是溢出产生中断标志。你给的程序,选用了定时/计数器工作方式1,即16位定时/计数器。对于需要中断的情况,举例:要测量脉冲100,则初值计算65536-100=65436=0xFF9C(自己用计算器算算,可不是什么都是256哦)。对于不需要中断的情况,这个初值一般都赋为零,如此程序中的初值,只要在程序中用判断语句,当TH0、TL0分别为多少时做什么什么,就可以了,并不需要它溢出,也不需要计算初值。我做过智能小车,在控制它转动角度时,就这样用的,脉冲多少次,就说明小车已经转动相应的角度。

不知道我的讲解清楚不。
回复

使用道具 举报

地板
ID:260584 发表于 2017-12-13 11:11 | 只看该作者
基础打好你就不会有那么多问题了
回复

使用道具 举报

5#
ID:261022 发表于 2017-12-13 11:22 | 只看该作者
HC6800-ES-V2.0 发表于 2017-12-13 10:15
同学,二楼说得好,好好学习基础知识,不然这个就搞不懂!
我来解释一下吧(没有看到程序全部,只能以我的 ...

学习了
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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