Assembly 理解中断/中断处理程序,PIC

Assembly 理解中断/中断处理程序,PIC,assembly,microcontroller,interrupt,Assembly,Microcontroller,Interrupt,我理解什么是中断,只是不知道它是如何工作的,也不知道它是如何实现的。 我正在使用PIC16F886,并将我的开关连接到TRISB上的第5位。 有了这个,我意识到我需要在中断发生之前做一些设置。 RB0-3为LED,RB4-7为中断/开关 有了它,我知道我需要通过 设置位GIE,INTF,我相信RBE而不是INTE,因为RB0被LED使用?但我不确定 我主要关心的是:中断是如何触发的?还有,像Org0x04这样的东西。这在中断中有什么意义?这些是我无法理解的重要细节,但没有它们,我无法继续。任何帮

我理解什么是中断,只是不知道它是如何工作的,也不知道它是如何实现的。 我正在使用PIC16F886,并将我的开关连接到TRISB上的第5位。 有了这个,我意识到我需要在中断发生之前做一些设置。 RB0-3为LED,RB4-7为中断/开关

有了它,我知道我需要通过 设置位GIE,INTF,我相信RBE而不是INTE,因为RB0被LED使用?但我不确定

我主要关心的是:中断是如何触发的?还有,像Org0x04这样的东西。这在中断中有什么意义?这些是我无法理解的重要细节,但没有它们,我无法继续。任何帮助都将不胜感激。

快速查看,0x4是中断向量。因此,当中断发生在地址0x4时,您应该将要跳转到的代码的地址放在地址0x4上,就像您可能已经将重置时要跳转到的代码的地址放在0x0上一样

如果设置了RBIE位和IOCB中的相关位,对PORTB输入的任何更改都可能触发中断。您需要读取或写入PORTB(实际上,您可能需要读取它,并检查位5的值以确保是开关改变了),或者清除RBIF以结束中断


因此:如果启用了相关的中断,当发现开关的值发生变化时,就会触发该中断。此时,CPU跳转到位于0x4的地址。

相关IOCB位将与我的交换机相同?我的开关设置为RB5。那么我也会设置第5位IOCB?此外,“对PORTB输入的任何更改都可能触发中断”。这是否意味着电路板自动知道开关是否按下并直接转到0x4?或者我需要写代码来检查按钮是否被按下?呃,我为最后的评论感到抱歉,我只是重读了你说的话,显然我很愚蠢。让我重新措辞这个问题。当我通过执行“btfss端口B,5”检查按钮是否按下时,我希望它在之后执行什么操作?直接去ISR?或者什么都没有,因为电路板应该意识到它处于中断位置?剩下的人会帮我吗?我找到了。我所需要的只是按下按钮后转到0x04。我不确定这是否还可以作为一个中断,但它应该可以工作