【MS51】读取GPIO口和ADC的数据,在I2C中断里发送给其他设备。引脚状态没变,而对方收到的G

chrishu |浏览268次
收藏|2022/09/07 11:15

满意回答

2022/09/07 15:12

ADC采样前会进行页切换,当页切换后正好有I2C中断产生,导致中断里操作寄存器时页是不对的。处理方法有两种:

1、在ADC采样的页切换前关中断EA=0;

2、进入中断处理函数时让SFRS入栈


void PinInterrupt_ISR (void) interrupt 7                            

  _push_(SFRS);     

  BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;SFRS=1;EA=BIT_TMP;

  ...

  _pop_(SFRS);

}


nuvoton2022

其他回答(0)
0人关注该问题
+1
 加载中...