本帖最后由 heqiaosheng 于 2014-11-6 14:34 编辑
因为是初次使用PIC18f25k80单片机,所以对应它的中断保护没什么了解,只知道有两个优先级,然后项目中使用到的外设比较多,中断也比较多,所以就将中断分成高优先级和低优先级。
然后诡异的事就发生了,程序经常性的跑飞,大概纠结了一个月,那时我都怀疑我的编程能力了,最终找到了问题,我草,PIC18的低优先级中断竟然不保护现场!!!
希望以后用到此系类的同志们能注意到这个问题,强烈推荐只使用高优先级中断。虽然网上有中断保护的汇编代码,但是我没有用,我觉得高优先级中断就够了,那个恶心的低优先级中断就让它长眠吧!!!
图片来源:MPLAB C18 C 编译器入门 [06版].pdf 的102页。已经上传过了,要下载的请打开此链接
http://www.amobbs.com/thread-5603111-1-1.html
QQ截图20141106142645.png (139.67 KB, 下载次数: 0)
下载附件
中断现场保护
2014-11-6 14:26 上传
MPLAB C18 C编译器用户指南.pdf
(1.07 MB, 下载次数: 37)
2014-11-6 14:27 上传
点击文件名下载附件
1、PIC16 级别的单片机,你说的那些寄存器也都不是由CPU自动保存的,也需要代码来保存,照你这么说,PIC16 的中断都别用了?
2、一直以为除非你用汇编,用 C 的话应该不需要你考虑中断现场保护的事情吧,C 编译器不是都帮你做到了么?(C编译器应该对此有明确的说明,如果需要你自己用代码保护现场,也应该会有明确的说明的吧)
一周热门 更多>