各位大佬,想请教一下,我在IO下降沿中断中服务程序中打开了总中断,每隔5ms进入一次定时器的中断,就会出现IO中断中串口发送数据有问题,请问我要实现这个功能有什么修改方法吗?
部分代码如下:
// AD采样中断服务程序,定时5ms
#pragma vector=tiMER0_A0_VECTOR
__interrupt void TimerA(void)
{
P4OUT ^= BIT4;
ADC12CTL0 |= ADC12SC; // 开始AD转换
while (!(ADC12IFG & BIT0)); // 判断转换是否完成
if(ecg_cnt < ECG_Length)
ecg[ecg_cnt++] = ADC12MEM0; // AD值存入数组
}
// IO中断服务程序,下降沿中断
#pragma vector=PORT1_VECTOR
__interrupt void Port_1(void)
{
_EINT();
int i;
for(i=10;i>0;i--)
{
if(P1IN&BIT4)
break;
delay_ms(1);
}
if (i == 0)
{
P2SEL &= ~0x01;
P2DIR |= 0x01;
P2OUT = 0x01;
delay_ms(50);
Open_Timer1_A0();
while (!(UCA0IFG&UCTXIFG)); // USCI_A0 TX buffer ready?
UCA0TXBUF = 0xAA;
while (!(UCA0IFG&UCTXIFG));
delay_ms(33);
Close_Timer1_A0();
}
P2SEL &= ~0x01;
P2DIR |= 0x01;
P2OUT = 0x01;
P1IFG &= ~BIT4; // 手动清除标志位
}
|