找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

要做一个单片机脉冲计数器。结果无论如何就是不成功

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

正文摘要:

本来设计要做了个ADC电路,实验挺成功的。下一步要做一个脉冲计数器。结果无论如何就是不成功。 先声明,我自己做了NE555方波发生器。50%固定占空,频率从 0.72Hz ~ 72kHz 可调。产生出来的波形送给51单片机P34引 ...

回复

ID:224104 发表于 2020-9-21 11:18
wulin 发表于 2020-9-21 06:00
已经设置自动重载模式就不需在中断函数里面重新赋初值。

OK
ID:213173 发表于 2020-9-21 06:00
guysxpf 发表于 2020-9-20 21:02
初值的定义我理解错了,谢谢指正。。

可是是有一点我不太理解,我选的是自动重载模式,但,您说“中断 ...

已经设置自动重载模式就不需在中断函数里面重新赋初值。
ID:224104 发表于 2020-9-20 21:02

太详细了,谢谢您
ID:224104 发表于 2020-9-20 21:02
wulin 发表于 2020-9-20 10:39
定时器初值错误,应该是65536-8=65528=0xFFF8,中断中也要重新赋初值FFF8。

初值的定义我理解错了,谢谢指正。。

可是是有一点我不太理解,我选的是自动重载模式,但,您说“中断函数里面要重新赋初值FFF8”,已经自动重载了还有这个必要吗?
ID:224104 发表于 2020-9-20 20:51
laoshu2521 发表于 2020-9-20 10:10
亲,你的定时器都没有初始化,时钟都没设定。另外你要检测555定时器的输出脉冲的话,代码不是这么写的。需 ...

我的代码不是自己写的,是STC官方给的,简单改了改。

不过问题已经有另外两个大神解答了,不过还是谢谢您
ID:224104 发表于 2020-9-20 20:49
本帖最后由 guysxpf 于 2020-9-20 20:52 编辑
wulin 发表于 2020-9-20 10:39
定时器初值错误,应该是65536-8=65528=0xFFF8,中断中也要重新赋初值FFF8。

我明白了,谢谢,定时器是从设定值累加到FF。看来是当时学的原理都忘光了。
学习了,谢谢您!
ID:342822 发表于 2020-9-20 18:24


#include <reg51.h>
#include <stdio.h>


#include "intrins.h"

sbit    P05         =   P0^5;

void TM0_Isr() interrupt 0
{
    P05 = ~P05;                                 //测试端口
}

void main()
{
  EA =1;
        EX0 =1;
        IT0= 1;

    while (1);

}

ID:719608 发表于 2020-9-20 15:47
好像有问题,稍后看看
ID:213173 发表于 2020-9-20 10:39
本帖最后由 wulin 于 2020-9-20 17:33 编辑

定时器初值错误,应该是65536-8=65528=0xFFF8,中断中也要重新赋初值FFF8。
  1. #include "reg51.h"
  2. #include "intrins.h"

  3. sbit P05=P0^5;

  4. void TM0_Isr() interrupt 1
  5. {
  6.     P05=!P05;                                 //测试端口
  7.     TL0 = 0xf8;
  8.     TH0 = 0xff;
  9. }

  10. void main()
  11. {
  12.     TMOD = 0x04;                                //外部计数模式
  13.     TL0 = 0xf8;
  14.     TH0 = 0xff;
  15.     TR0 = 1;                                    //启动定时器
  16.     ET0 = 1;                                    //使能定时器中断
  17.     EA = 1;

  18.     while (1);
  19. }
复制代码
ID:820855 发表于 2020-9-20 10:10
亲,你的定时器都没有初始化,时钟都没设定。另外你要检测555定时器的输出脉冲的话,代码不是这么写的。需要用捕获模式,中断函数里面也不对。你这段代码即使把定时器设好了,也是上电闪几次灯的事情,可能太快眼睛都看不见。
ID:155507 发表于 2020-9-20 09:19
你是怎么测试的? 就说不成功

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

Powered by 单片机教程网

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