找回密码
 立即注册

QQ登录

只需一步,快速开始

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

自己制作的最小单片机系统进不去定时计数器中断,在开发版上却可以,外部中断却可...

[复制链接]
跳转到指定楼层
楼主
300黑币
本来自己要做一个     红外发射温度报警    的小制作,然后程序写好了,在开发板调试了,一切正常OK,自己就做了一个最小系统,然后其他功能都可以用(测温,调节报警温度等功能),就是发射不了红外信号,然后就各种检查测试,最后发现是自己做的最小系统进不了定时中断。

我写了一个程序当温度达到32度时,进入定时中断,无限循环数码管显示5555
然后.......
同一单片机同一程序普中开发板:


同一单片机同一程序自制最小系统:

都到32.6度了都进不去定时中断....绝望......

这是我最小系统的电路图:


这是普中开发板电路图:


这是我的实物:
(忽略发射管和2004驱动,VCC,GND,I/O口都被我断了)



我所有分都交出去了,跪求大神帮帮我,跪了跪了.....

最佳答案

查看完整内容

看了一下,初学者,说一下,仅供参考 1、这个中断不是外部中断吗,还是计数器中断,但是你的开发板显示正常,我也不知道为啥,感觉应该是P3.2或P3.3触发吧,但这个不是很重要的要点,看下面; 2、我看了你的图跟开发板,不同的地方就是开发板实际是有锁存器锁存数据的,而中断是有两种触发方式,一种是电平触发,一种是跳变沿触发,你的硬件差异很有可能是因为这个触发方式造成的,因为开发板上不论是选择了跳边沿还是电平触发 ...
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:522450 发表于 2019-4-27 23:32 | 只看该作者
看了一下,初学者,说一下,仅供参考

1、这个中断不是外部中断吗,还是计数器中断,但是你的开发板显示正常,我也不知道为啥,感觉应该是P3.2或P3.3触发吧,但这个不是很重要的要点,看下面;
2、我看了你的图跟开发板,不同的地方就是开发板实际是有锁存器锁存数据的,而中断是有两种触发方式,一种是电平触发,一种是跳变沿触发,你的硬件差异很有可能是因为这个触发方式造成的,因为开发板上不论是选择了跳边沿还是电平触发,因为锁存器的问题,最后都是电平触发的信号格式,而如果你的程序选择的是电平或者跳变沿,都可以完美实现,但是你的实际电路中,只有跳变沿才能实现,因为没有锁存器了,而如果程序是电平触发,那么就实现不了你想要的功能了,所以,这个问题我个人理解是最大可能的,因为毕竟开发板运行正常而实际电路有问题,差异就在锁存器,造成的不同就是中断的触发方式

希望可以帮到你,希望是我说的这个问题。
回复

使用道具 举报

板凳
ID:345562 发表于 2019-4-28 08:28 | 只看该作者
你在VCC与地之间加电容470U和104试试
回复

使用道具 举报

地板
ID:158375 发表于 2019-4-28 09:15 | 只看该作者
没程序,不好说怎么回事。
你是怎么判断出“系统进不去定时计数器中断“”的?
回复

使用道具 举报

5#
ID:514901 发表于 2019-4-28 09:43 | 只看该作者
笨笨兔 发表于 2019-4-28 09:15
没程序,不好说怎么回事。
你是怎么判断出“系统进不去定时计数器中断“”的?

是进不去计数中断,我写了一个程序,当温度到32度时,P3^4口翻转进入中断,中断函数写了一个无限循环显示5555的程序。在放大版达到32度时就可以显示5555,在自己做的系统却不行。
回复

使用道具 举报

6#
ID:481641 发表于 2019-4-28 10:46 | 只看该作者
发个程序看看
回复

使用道具 举报

7#
ID:282850 发表于 2019-4-28 11:22 | 只看该作者
调试方法建议:1、确认是否能进定时器中断,最好用简单的方法,进中断后拉低一个IO口(接个电阻+LED)。楼主说的不能进中断,我不能确定是否真不能进。
2、最小板与开发板的不同可能是去耦电容不足,建议加电容。注意红外的抗干扰相当差,加红外必须加电容。加不加电容上示波器可看出红外的波形差距太大。
3、核对引脚的连线是否与开发板完全一样。
如果你用MSP430芯片,进不进中断,仿真中设个断点,非常方便。51我是用的STC开学的。
回复

使用道具 举报

8#
ID:522450 发表于 2019-4-28 11:54 | 只看该作者
再回复一下:

中断分跳变沿和电平触发

你的实验板试验,你的程序无论是哪种触发方式,都可以实现

但是你的实际电路只能支持跳变沿触发才能实现你的功能

建议改你的程序为中断的触发方式为跳变沿触发,

估计就可以解决你的问题

试试看看
回复

使用道具 举报

9#
ID:514901 发表于 2019-4-28 12:15 | 只看该作者

可以肯定跟程序没什么关系,所以就没发出来了
回复

使用道具 举报

10#
ID:158375 发表于 2019-4-28 13:00 | 只看该作者
这么说,好像可以进入中断;没准是程序不太合适或者程序结构有问题;
你可以定义一个超温标志位,正常清0,超过温度后,将标志位置1;主程序就查标志位,=1时启动定时并计数(定时),同时显示改为5555;
这样有一个好处,显示5555可以是一定的时间如3秒,3秒后改为正常显示。
再说,你自己写程序也方便。
回复

使用道具 举报

11#
ID:123289 发表于 2019-4-28 16:27 | 只看该作者
“我写了一个程序当温度达到32度时,进入定时中断,无限循环数码管显示5555”
楼主:你是如何进入的呢?
回复

使用道具 举报

12#
ID:514901 发表于 2019-4-28 17:05 | 只看该作者
解决了,P0^0口没有接上拉电阻,翻转不了
回复

使用道具 举报

13#
ID:213173 发表于 2019-4-28 17:36 | 只看该作者
郑汉松 发表于 2019-4-28 12:15
可以肯定跟程序没什么关系,所以就没发出来了

程序都是基于硬件编写的,既然程序没有问题那就肯定是硬件电路有错!
回复

使用道具 举报

14#
ID:522450 发表于 2019-4-28 17:46 | 只看该作者
跟p0口有关系?
回复

使用道具 举报

15#
ID:284454 发表于 2019-4-28 18:55 | 只看该作者
看手册,使用定时器中断,必须是管脚P31加高电平才可以使用定时器中断.自己把P31这个管脚拉高.
回复

使用道具 举报

16#
ID:514901 发表于 2019-4-28 19:21 | 只看该作者

当时为了检测程序达到报警温度会不会作出反应,设置了P0^0为检测脚。
然后在写红外发射程序的时候,就把P0^0作为红外发射标志位了,,,,千想万想没想到P0^0没接上拉电阻,电平翻转不明显,导致进不去中断。。就这样
回复

使用道具 举报

17#
ID:221815 发表于 2019-4-28 19:50 | 只看该作者
十有八九是程序的问题
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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