求助,关于51单片机 同时使用外部中断和定时中断 会发生冲突 导致定时中断停止的问题

2019-07-15 08:13发布

       首先,版主删帖能不能说明下原因。本人是菜鸟,不太懂论坛的规矩,你说明下原因我下次可以注意。否则,帖子删了,都不知道为什么。如何改进?       本人前几天发过一个“电子时钟”的求助帖子。(不知道是不是把所有程序贴上才被删了,这次我就不贴程序了,大体编程思路说一下)

       1、编程思路说明:
             用的是单片机学习板,通过外部中断控制时间的设定,定时中断控制时间的累加;外部中断被触发时,定时中断停止。用的是动态数码管显示。

       2、遇到的问题:
             每次设定完时间以后,时钟开始运行,但是没多久(每次时长都不同)时间就不动了。显示依然是正常显示。我程序看了好几遍应该是没问题的。
       3、网上查找到的答复:
            查了下网上的相似问题。答复是外部中断时长不能太长,或者说把定时中断优先级提高。.......外部中断不长,怎么设定时间,而且边设定边秒钟自己在跳也不好啊。
       4、本人的求教:
             关于上面提到的外部中断时间不能太长。这到底是为什么?能不能有大神仔细讲解一下,单片机内部运算过程中,外部中断时长过长会产生什么问题,最终导致定时中断停止。
       5、其他:
             也可能我上面的理解不对,请大神指教。
       6、顿首!顿首!顿首!顿首!


补充内容 (2018-7-5 15:24):
程序和电路图在7、8楼 请各位大神帮忙!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
8条回答
人中狼
2019-07-16 15:34
其实你的外部中断程序可以直接改成时间设置程序,程序不用变,把中断程序改成普通子程序就可以了。
就程序来说:
一,没有对外部中断进行设置,虽然有硬件复位后的缺省设置,不过最好还是要设置一下。
二,中断程序和子程序都没有对使用的特殊寄存器进行压栈出栈处理,特别是进行程序嵌套时容易出现改变寄存器而导致出错。
三,可以屏蔽外部中断程序,不进行时间设置,在程序里固定写入时间,来测试时间运行是否还出现问题。

一周热门 更多>