2011-03-22 72 views
1

我明白中断是什么,而不是它如何工作或如何实现。 我正在使用PIC16F886,并将我的开关连接到TRISB上的第5位。这样,我意识到我需要在中断发生之前做一些设置。 RB0-3是LEDS,而RB4-7是用于中断/开关。因此,我知道我需要通过设置位GIE,INTF来设置INTCON中的中断,并且我相信RBIE而不是INTE,因为RB0正在被LED使用。但我不确定。了解中断/中断处理程序,PIC

我主要关心的是:中断触发如何?此外,像组织0x04。那在中断中的意义是什么?这些是我无法回避的重要细节,但没有它们我无法继续。任何帮助将不胜感激。

回答

2

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

如果将RBIE位置1且IOCB中的相关位发生变化,则PORTB输入上的任何更改都会触发中断。您需要读取或写入PORTB(实际上,您可能需要阅读它,并检查第5位的值以确保它是更改的开关),或清除RBIF以结束中断。

所以:如果你已经启用了相关的中断,当你的交换机的值被发现发生了改变时,它会被触发。此时,CPU跳转到位于0x4的地址。

+0

相关的IOCB位与我的交换机相同吗?我的开关设置为RB5。那么我会设置IOCB的第5位呢?另外,“对PORTB输入的任何改变都会触发中断”。这是否意味着电路板自动知道开关是否被按下并直接进入0x4?或者我需要编写代码来检查按钮是否被按下? – 2011-03-22 01:29:18

+0

Err对于最后的评论我很抱歉,我刚刚重读了你的评论,显然我很愚蠢。让我重述一下这个问题。当我通过执行“btfss PORTB,5”来检查按钮是否被按下后,我希望在此之后执行什么操作?走向ISR?或者没有,因为董事会应该意识到它在一个中断位置?其余的会为我做? IDK – 2011-03-22 01:33:47

+0

您想清除RBIF来结束中断。 – Bytemain 2011-03-22 01:38:22