原帖地址见:
[C51]郭天祥的51开发板求助,有问题 下面我写个了程序,和摩天轮不一样,但是原理相同。大家请看图(
先看图片下部分的文字,再看上面的):
如果把interrupt 后面的中断号改成2,或者3呢?
那么怎么解决这种问题呢:我们可以指定函数或者程序在单片机rom里面的存放地址,类似于我们汇编里面的org伪指令。
改成这样后,我们再来编译一下interrupt 2 的情况:
总结:产生这种现象的原因,是由于keil把c转成汇编的时候,某些代码占据了中断入口地址而造成的。那么为什么interrput 1 没有这种现象呢?我也不知道,我只能说这是keil编译的问题。
写程序的时候,还是要谨慎,开什么中断,就写什么中断服务程序,要一一对应。最好指定程序的起始地址,跳过中断服务程序入口地址区,这样就能避免很多不必要的错误了。