找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机程序由于进中断过于频繁导致主函数无法正常运行如何解决?

[复制链接]
跳转到指定楼层
楼主
51单片机波形发生器程序
有没有大佬帮忙看看这个问题怎么解决啊:用定时中断来产生波形,通过设置定时时间来设置波形频率,但是当频率到100hz后,程序由于进中断函数频率过高导致数码管显示异常,到1000hz后连按键扫描也失效了,这种由于进中断过于频繁导致主函数无法正常运行的问题怎么解决。

1.png (87.43 KB, 下载次数: 72)

1.png

2.png (150.24 KB, 下载次数: 59)

2.png

3.png (92.78 KB, 下载次数: 72)

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

使用道具 举报

沙发
ID:57657 发表于 2022-12-7 08:29 | 只看该作者
定时器0中断程序处理时间,超过初值时间导致溢出。
溢出后TF0硬件置1,包含 intrins.h 头文件后,中断底部加一句判断有无溢出: if(_testbit_(TF0)) { }  溢出后if条件会成立,更换1T单片机或使用更高频率晶振。
回复

使用道具 举报

板凳
ID:308903 发表于 2022-12-7 09:23 | 只看该作者
100hz =100次/秒 ,T = 10ms  
51假如用12M晶振,12000000次/S,T =1/12, Tcy = 12* 1/12 = 1us

一个周期64个采样点,就是要花10ms, 那每个采样时间段156.25us,

似乎要加滤波电路吧

回复

使用道具 举报

地板
ID:94031 发表于 2022-12-7 09:45 | 只看该作者
有直接输出波形不要cpu
回复

使用道具 举报

5#
ID:94031 发表于 2022-12-7 09:51 | 只看该作者
有直接输出波形不要cpu参与的单片机,为什么会有越来越多高级单片机,就是老单片机功能不够用。
回复

使用道具 举报

6#
ID:384109 发表于 2022-12-7 10:05 | 只看该作者
程序结构问题,1khz频率不算高,按键或许会反应迟钝,但不会没有反应,而且需要确定1khz和定时器中断时间的对应关系
回复

使用道具 举报

7#
ID:1034262 发表于 2022-12-7 11:13 | 只看该作者
你先测出来中断耗时多少,然后保证中断间隔大于这个时间。
回复

使用道具 举报

8#
ID:77589 发表于 2022-12-7 11:59 | 只看该作者
中断服务程序尽量短小!
回复

使用道具 举报

9#
ID:1043931 发表于 2022-12-7 13:28 | 只看该作者
npn 发表于 2022-12-7 08:29
定时器0中断程序处理时间,超过初值时间导致溢出。
溢出后TF0硬件置1,包含 intrins.h 头文件后,中断底部 ...

加了溢出检测后确实溢出了

1.png (143.46 KB, 下载次数: 75)

1.png

2.png (19.5 KB, 下载次数: 74)

2.png
回复

使用道具 举报

10#
ID:1043931 发表于 2022-12-7 13:30 | 只看该作者
xuyaqi 发表于 2022-12-7 09:51
有直接输出波形不要cpu参与的单片机,为什么会有越来越多高级单片机,就是老单片机功能不够用。

主要是要求用的51单片机
回复

使用道具 举报

11#
ID:201854 发表于 2022-12-7 14:09 | 只看该作者
这种通过定时器产生高频率波形输出对于很多51单片机是搞不定的,很多51的单片机定时器中断时间设置少于50us以下就开始没法胜任,你自己可以算一下最多能输出多高的方波,像你这种最好不要用定时器而是拉到有pwm功能输出的脚上。
回复

使用道具 举报

12#
ID:123289 发表于 2022-12-7 14:27 | 只看该作者
说明的时序设计不合理。
事件的处理不要放在中断服务处理程序中,放中主程序中。
中断服务程序要尽量短,做个事件的标记即可!
在主程序中,根据标记处理事件。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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