This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

cc1110的中断离奇现象



测试过程1:将cc1110的P0.4口设为输入中断,将P0的5,6,7任何一个端口设为输出,当将该输出io口拉高时,会一直进入P0的中断服务子程序,按我的理解,虽然4.5.6.7是同一个寄存器使能的中断,但设为输出的io口是不能够使得中断触发的,此为离奇之处;

测试过程2:作为比对,又将P0.0口设为输入中断,但当拉高P0的1.2.3输出口都不会触发中断

测试部分代码:

P0SEL&=~(0x10);
P0DIR&=~(0x10);

P2INP &=~(0x01<<5);
P0INP &=~(0x10);
/*Port 0 inputs 7 to 4 interrupt enable*/
PICTL |= 0x10;
/*Select falling edge on input gives interrupt*/
PICTL |= 0x00;

EA = 1; /*Enable each interrupt source*/

IEN1 |= (0x01<<5); /*Enable port 0 interrupt*/

P0IFG &= ~(0x10); /*Clear P0.4 interrupt status flag*/

#pragma vector = P0INT_VECTOR
__interrupt void p0_interrupt(void)
{
EA = 0;
if(P_0_4_Flag) /*P0.4 interrupt flag*/
{
P0IFG &= ~(0x10); /*Clear P0.4 interrupt flag*/
KeyFlag = ON;
}
P0IF = 0; /*Clear port 0 interrupt flag */
EA = 1;
}

那么问题来了:是我的代码有问题还是cc1110本身就不支持这种用法,求告知