找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

STC8H单片机在外部中断里开启定时器2计数失败

查看数: 2311 | 评论数: 7 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2023-6-29 09:15

正文摘要:

STC8H单片机外部中断0 P32接霍尔传感器读取直流电机转数,由于电机一转就干扰中断口,用示波器测方波,有许多不规则的毛刺尖峰,引发错误中断,正常方波大约为135Hz 约7.5毫秒,在外部中断第一次开启定时器,外部中 ...

回复

ID:47445 发表于 2023-6-30 08:39
wufa1986 发表于 2023-6-30 08:14
打开下载程序,里面有范例程序直接复制

多谢提醒,俺这就去看看
ID:47445 发表于 2023-6-30 08:38
wulin 发表于 2023-6-29 21:15
频率135Hz,转速范围100~200 r/sec,无需用定时器中断,只要读 T2H

感谢大侠指导,俺试试
ID:879348 发表于 2023-6-30 08:14
打开下载程序,里面有范例程序直接复制
ID:47445 发表于 2023-6-30 08:11
188610329 发表于 2023-6-29 21:37
都用8h了,为什么不用CCP?还用外部中断+定时器?能硬件实现的功能为什么非要用软件处理?

53岁年纪大了,脑子越来越不好用,记忆力欠缺,学习能力下降,用到的会仔细学,不用的就走马观花,您这么一提醒,俺还真要好好学习
ID:624769 发表于 2023-6-29 21:37
都用8h了,为什么不用CCP?还用外部中断+定时器?能硬件实现的功能为什么非要用软件处理?
ID:213173 发表于 2023-6-29 21:15
频率135Hz,转速范围100~200 r/sec,无需用定时器中断,只要读 T2H<<8|T2L计数值即可,也不要在外部中断函数里计算,要放在主函数中计算。
  1. void Timer2Init(void)        //@12.000MHz
  2. {
  3.         AUXR &= 0xFB;                //定时器时钟12T模式
  4.         T2L = 0x00;                        //设置定时初始值
  5.         T2H = 0x00;                        //设置定时初始值
  6. //        AUXR |= 0x10;                //定时器2开始计时
  7. }
  8. void INT0_Isr() interrupt 0  
  9. {
  10.         AUXR &= 0xef;                //关闭定时器2
  11.         temp=T2H<<8|T2L;
  12.         T2L = 0x00;
  13.         T2H = 0x00;
  14.         AUXR |= 0x10;                //开始定时器2
  15.         flag=1;                                //中断标志位
  16. }
  17. //在主函数中计算转速
  18.         if(flag)
  19.         {
  20.                 flag=0;//清中断标志位
  21.                 speed=1000000L/temp;        //计算秒转速
  22.         }
复制代码

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

Powered by 单片机教程网

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