十有八九是程序的问题 |
tigerlyt 发表于 2019-4-28 17:46 当时为了检测程序达到报警温度会不会作出反应,设置了P0^0为检测脚。 然后在写红外发射程序的时候,就把P0^0作为红外发射标志位了,,,,千想万想没想到P0^0没接上拉电阻,电平翻转不明显,导致进不去中断。。就这样 ![]() |
看手册,使用定时器中断,必须是管脚P31加高电平才可以使用定时器中断.自己把P31这个管脚拉高. |
跟p0口有关系? |
郑汉松 发表于 2019-4-28 12:15 程序都是基于硬件编写的,既然程序没有问题那就肯定是硬件电路有错! |
解决了,P0^0口没有接上拉电阻,翻转不了 |
“我写了一个程序当温度达到32度时,进入定时中断,无限循环数码管显示5555” 楼主:你是如何进入的呢? |
这么说,好像可以进入中断;没准是程序不太合适或者程序结构有问题; 你可以定义一个超温标志位,正常清0,超过温度后,将标志位置1;主程序就查标志位,=1时启动定时并计数(定时),同时显示改为5555; 这样有一个好处,显示5555可以是一定的时间如3秒,3秒后改为正常显示。 再说,你自己写程序也方便。 |
我对你情有独钟 发表于 2019-4-28 10:46 可以肯定跟程序没什么关系,所以就没发出来了 |
再回复一下: 中断分跳变沿和电平触发 你的实验板试验,你的程序无论是哪种触发方式,都可以实现 但是你的实际电路只能支持跳变沿触发才能实现你的功能 建议改你的程序为中断的触发方式为跳变沿触发, 估计就可以解决你的问题 试试看看 |
调试方法建议:1、确认是否能进定时器中断,最好用简单的方法,进中断后拉低一个IO口(接个电阻+LED)。楼主说的不能进中断,我不能确定是否真不能进。 2、最小板与开发板的不同可能是去耦电容不足,建议加电容。注意红外的抗干扰相当差,加红外必须加电容。加不加电容上示波器可看出红外的波形差距太大。 3、核对引脚的连线是否与开发板完全一样。 如果你用MSP430芯片,进不进中断,仿真中设个断点,非常方便。51我是用的STC开学的。 |
发个程序看看 |
笨笨兔 发表于 2019-4-28 09:15 是进不去计数中断,我写了一个程序,当温度到32度时,P3^4口翻转进入中断,中断函数写了一个无限循环显示5555的程序。在放大版达到32度时就可以显示5555,在自己做的系统却不行。 |
没程序,不好说怎么回事。 你是怎么判断出“系统进不去定时计数器中断“”的? |
你在VCC与地之间加电容470U和104试试 |
看了一下,初学者,说一下,仅供参考 1、这个中断不是外部中断吗,还是计数器中断,但是你的开发板显示正常,我也不知道为啥,感觉应该是P3.2或P3.3触发吧,但这个不是很重要的要点,看下面; 2、我看了你的图跟开发板,不同的地方就是开发板实际是有锁存器锁存数据的,而中断是有两种触发方式,一种是电平触发,一种是跳变沿触发,你的硬件差异很有可能是因为这个触发方式造成的,因为开发板上不论是选择了跳边沿还是电平触发,因为锁存器的问题,最后都是电平触发的信号格式,而如果你的程序选择的是电平或者跳变沿,都可以完美实现,但是你的实际电路中,只有跳变沿才能实现,因为没有锁存器了,而如果程序是电平触发,那么就实现不了你想要的功能了,所以,这个问题我个人理解是最大可能的,因为毕竟开发板运行正常而实际电路有问题,差异就在锁存器,造成的不同就是中断的触发方式 希望可以帮到你,希望是我说的这个问题。 |