找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

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

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

正文摘要:

51单片机波形发生器程序 有没有大佬帮忙看看这个问题怎么解决啊:用定时中断来产生波形,通过设置定时时间来设置波形频率,但是当频率到100hz后,程序由于进中断函数频率过高导致数码管显示异常,到1000hz后连按键 ...

回复

ID:123289 发表于 2022-12-7 14:27
说明的时序设计不合理。
事件的处理不要放在中断服务处理程序中,放中主程序中。
中断服务程序要尽量短,做个事件的标记即可!
在主程序中,根据标记处理事件。
ID:201854 发表于 2022-12-7 14:09
这种通过定时器产生高频率波形输出对于很多51单片机是搞不定的,很多51的单片机定时器中断时间设置少于50us以下就开始没法胜任,你自己可以算一下最多能输出多高的方波,像你这种最好不要用定时器而是拉到有pwm功能输出的脚上。
ID:1043931 发表于 2022-12-7 13:30
xuyaqi 发表于 2022-12-7 09:51
有直接输出波形不要cpu参与的单片机,为什么会有越来越多高级单片机,就是老单片机功能不够用。

主要是要求用的51单片机
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
ID:77589 发表于 2022-12-7 11:59
中断服务程序尽量短小!
ID:1034262 发表于 2022-12-7 11:13
你先测出来中断耗时多少,然后保证中断间隔大于这个时间。
ID:384109 发表于 2022-12-7 10:05
程序结构问题,1khz频率不算高,按键或许会反应迟钝,但不会没有反应,而且需要确定1khz和定时器中断时间的对应关系
ID:94031 发表于 2022-12-7 09:51
有直接输出波形不要cpu参与的单片机,为什么会有越来越多高级单片机,就是老单片机功能不够用。
ID:94031 发表于 2022-12-7 09:45
有直接输出波形不要cpu
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:57657 发表于 2022-12-7 08:29
定时器0中断程序处理时间,超过初值时间导致溢出。
溢出后TF0硬件置1,包含 intrins.h 头文件后,中断底部加一句判断有无溢出: if(_testbit_(TF0)) { }  溢出后if条件会成立,更换1T单片机或使用更高频率晶振。

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

Powered by 单片机教程网

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