各位大侠,帮忙看看:用Keil编写的程序,编译没有错误,下载到51单片机开发板上没有结果

各位大侠,帮忙看看:用Keil编写的程序,编译没有错误,下载到51单片机开发板上没有结果,第1张

你好 看了一下,利用外部中断来处理键盘,在没有重要资源的时候,还是不错的选择,但在1ms及以下级的脉冲输出的时候,就要把中断留给定时器。以防止int0阻止t0的中断。好言归正传,首先靠int0,来控制键盘,在硬件上要有触发条件,因为int0是硬件触发的,再说软件,其实键盘的扫描,除了你程序中编程的键值确定外,更重要的是你没有在键盘一旦中断,就要关闭int0的中断,然后程序进入键盘的确认功能,在执行相应程序,完成后从新打开int0,你的程序,isr_int0只有一条语句,这样你的程序就会在陷阱里出不来,按键首先进入int0服务,从中断服务跳出,有键按下,再进入中断服务,如此周而复始,根本进入不了键盘确认程序,程序其他地方没仔细看,个人感觉,你用int0来做键盘处理,就不要在程序的其他部分有处理了,因为int0是硬件触发,触发后进入中断服务,第一步关闭中断,延时,再判,处理键盘所要求的功能(程序),开中断,返回主循环。再说,现在的单片机一般工作在12M,一个键的处理也就是几十条语句,1个毫秒都不到。直接在int0里处理就行了,在程序中,多段 *** 作只会加大难度,及调试困难。

类似的问题我也遇到过,总是进入非法中断。反复查也查不到问题,关键无从下手,

没办法,只能屏蔽掉绝大部分中断,发现CPU_Timer0中断进不去,再后来就查出是

cmd文件配置的问题。

嵌入式程序的调试比PC程序麻烦,根据你说的也很难判断是什么问题,只能告诉你一个思路:

把能屏蔽掉的代码都注释掉,直到不再出问题。然后一点一点再往上加,

看加到哪一部开始出问题。如果全屏蔽了还有问题,那么最可疑的就是cmd了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8149209.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存