中断设置的相关程序
P3SEL = 0x0a; //将P3.1和P3.3选择为第二功能:P3.3->SCL,P3.1->SDA;
U0CTL |= I2C + SYNC; //设置USART0为I2C模式;
U0CTL &= ~I2CEN; //禁止I2C模块以配置如下寄存器;
//I2CTCTL |= I2CSSEL_2; //I2C模块时钟选择SMCLK;
I2CTCTL |= I2CSSEL1;
I2COA = 0x0048; //本地地址初始化为0x48;
I2CIE |= TXRDYIE; //打开发送准备好中断控制;
U0CTL |= I2CEN; //使能I2C模块;
#pragma vector = USART0TX_VECTOR
__interrupt void SI2C_ISR(void)
{
switch(I2CIV)
{
case 0: break;
case 2: break;
case 4: break;
case 6: break;
case 8: break;
case 10: break;
case 12:
if(k<3)
{
I2CDRB = TXData[k];
TXData[k]=0;
k++;
}
else
k=0;
//因为我是将24位的数进行拆分,分成了3个8位
break;
case 14: break;
case 16: break;
default: break;
}
}
这是进行了一次传输,但没跳回主程序,进行下一次数据传输,在中断中应该是漏了什么返回的操作,不知道是什么,求大神解释下