找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 272|回复: 23
收起左侧

朋友们,STC单片机计数器能不输入脉冲直接计数吗?

[复制链接]
ID:899981 发表于 2022-6-13 18:41 | 显示全部楼层 |阅读模式
如题,就是做个计数器用,以前一直要输入脉冲。
回复

使用道具 举报

ID:748788 发表于 2022-6-13 21:07 | 显示全部楼层
如果你是想自动计数,用定时器就可以实现
回复

使用道具 举报

ID:277550 发表于 2022-6-13 23:39 | 显示全部楼层
总得有一个计数的要求的吧,
回复

使用道具 举报

ID:944091 发表于 2022-6-14 06:56 来自手机 | 显示全部楼层
设为定时器模式不就是直接内部计数了吗?
回复

使用道具 举报

ID:396024 发表于 2022-6-14 07:25 来自手机 | 显示全部楼层
可以,定时器模式,输入系统时钟。
回复

使用道具 举报

ID:965189 发表于 2022-6-14 09:06 | 显示全部楼层
内部定时器就是不需要外部输入脉冲的计数器。
回复

使用道具 举报

ID:899981 发表于 2022-6-14 11:08 | 显示全部楼层
wwh2382 发表于 2022-6-13 21:07
如果你是想自动计数,用定时器就可以实现

谢谢,定时时间短,0.1微秒计数一次。
回复

使用道具 举报

ID:899981 发表于 2022-6-14 11:09 | 显示全部楼层
chenchuanke 发表于 2022-6-14 06:56
设为定时器模式不就是直接内部计数了吗?

定时器怎么设置0.1微秒计数一次?
回复

使用道具 举报

ID:899981 发表于 2022-6-14 11:09 | 显示全部楼层
smmj 发表于 2022-6-14 07:25
可以,定时器模式,输入系统时钟。

如果0.12微妙计数一次的话,数据咋取出?12MHZ
回复

使用道具 举报

ID:887371 发表于 2022-6-14 11:22 | 显示全部楼层
计数器能不输入脉冲直接计数吗?


这是计数器的主要任务.假如不对输入脉冲计数,那么就是对内部时钟计数,这个计数器也叫定时器。
回复

使用道具 举报

ID:25310 发表于 2022-6-14 15:48 | 显示全部楼层
举个栗子:
TMOD = 0;
    T0_CT = 1;              
    T1_CT = 1;            
    TL0 = 0xff;
    TH0 = 0xff;
    TL1 = 0xff;
    TH1 = 0xff;
    TR0 = 1;               
    TR1 = 1;               
    ET0 = 1;               
    ET1 = 1;               

    T0CLKO = 0;            
    T1CLKO = 0;      


void TM1_Isr (void) interrupt 3
{
    P46 = !P46;   
    T1_cnt++;   
}
      
回复

使用道具 举报

ID:899981 发表于 2022-6-15 10:20 | 显示全部楼层
pcbboy 发表于 2022-6-14 15:48
举个栗子:
TMOD = 0;
    T0_CT = 1;              

谢谢,找到方法了,可以计数的,只是中断时间太短的话可能影响动作。
回复

使用道具 举报

ID:748788 发表于 2022-6-15 11:15 | 显示全部楼层
ZHAOBAO511 发表于 2022-6-14 11:08
谢谢,定时时间短,0.1微秒计数一次。

16位的定时器定时1微秒已经接近极限,估计你还得用原来的办法
回复

使用道具 举报

ID:25310 发表于 2022-6-15 15:28 | 显示全部楼层
刻意拔定时器调整到1MS
回复

使用道具 举报

ID:899981 发表于 2022-6-15 18:40 | 显示全部楼层
wwh2382 发表于 2022-6-15 11:15
16位的定时器定时1微秒已经接近极限,估计你还得用原来的办法

谢谢,可以用计数器。
回复

使用道具 举报

ID:899981 发表于 2022-6-15 18:41 | 显示全部楼层
pcbboy 发表于 2022-6-15 15:28
刻意拔定时器调整到1MS

谢谢,16MHZ就可以计数到1微秒,不行用计数器实现。
回复

使用道具 举报

ID:1034625 发表于 2022-6-15 20:05 | 显示全部楼层
弄个延时,给个条件,一样的。单片机本来就有内部和外部振荡方式
回复

使用道具 举报

ID:1034625 发表于 2022-6-15 20:05 | 显示全部楼层
弄个延时,给个条件,一样的。单片机本来就有内部和外部振荡方式
回复

使用道具 举报

ID:25310 发表于 2022-6-16 08:24 | 显示全部楼层
ZHAOBAO511 发表于 2022-6-15 18:41
谢谢,16MHZ就可以计数到1微秒,不行用计数器实现。

用来计数的定时器如果定时器高低位都装载FF就是0S,如果算个时间把定时器高低位按需要的时间值装载进去不用额外添加啥,可能你已经弄好了,补充一下。
回复

使用道具 举报

ID:899981 发表于 2022-6-16 14:49 | 显示全部楼层
gggggllll 发表于 2022-6-15 20:05
弄个延时,给个条件,一样的。单片机本来就有内部和外部振荡方式

谢谢,要精确计时的。
回复

使用道具 举报

ID:899981 发表于 2022-6-16 14:50 | 显示全部楼层
pcbboy 发表于 2022-6-16 08:24
用来计数的定时器如果定时器高低位都装载FF就是0S,如果算个时间把定时器高低位按需要的时间值装载进去不 ...

嗯,是的,已搞好, 谢谢
回复

使用道具 举报

ID:1035194 发表于 2022-6-16 16:00 | 显示全部楼层
STC12C5A60S2中有2个定时/计数器T0和T1,对应外部引脚是P3.4和P3.5,你可以用其中一个定时/计数器接收脉冲信号。以T1定时器为例,把需要计数的脉冲接在P3.5口,编程时把TOMD定时器中的TOMD.6设置为1(即设为计数工作模式),通过读取寄存器TH1,TL1值得到脉冲的计数值。需要注意的是最大计数值为65535,超过计数范围则翻转,启动计数前先把TH1,TL1清零。脉冲信号的电压范围是0~5V,脉冲宽度不小于1个机器周期。如果脉冲信号和单片机不共地,最好用光耦隔离。
回复

使用道具 举报

ID:1035194 发表于 2022-6-16 16:01 | 显示全部楼层
通过读取寄存器TH1,TL1值得到脉冲的计数值
回复

使用道具 举报

ID:899981 发表于 2022-6-16 17:27 | 显示全部楼层
nunum 发表于 2022-6-16 16:01
通过读取寄存器TH1,TL1值得到脉冲的计数值

谢谢,很详细。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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