在2440 test程序中的触摸屏实验,在中断程序中没有屏蔽中断,当ADC转换完成时产生中断(程序中红色语句),不会产生中断嵌套吗???中断子程序如下:以下是我的注解,不知是否正确,小弟不才,请各位大哥赐教。。。
void __irq AdcTsAuto(void) // 中断服务程序
{
int i;
U32 saveAdcdly;
if(rADCDAT0&0x8000) // 如果释放
{
// Uart_Printf("\nStylus Up!!\n");
rADCTSC &= 0xff; // 设置为:按下中断
}
// else
// Uart_Printf("\nStylus Down!!\n");
rADCTSC = (1<<3)|(1<<2); // 2.禁止 XP 上拉,转到自动连续模式
saveAdcdly = rADCDLY; // 备份延时时间
rADCDLY = 40000; // 3.转换延时 (1/50M)*40000=0.8ms
rADCCON |= 0x1; // 开始转换 ADC
while(rADCCON & 0x1); // 检查是否开始转换(开始后自动清零)
while(!(rADCCON & 0x8000)); // 等待转换完成!!
while(!(rSRCPND & (BIT_ADC))); // 等待 ADC 完成(产生 ADC 中断)
xdata = (rADCDAT0 & 0x3ff); // 读出值
ydata = (rADCDAT1 & 0x3ff);
rSUBSRCPND |= BIT_SUB_TC; // 清中断标志(注意:先清子中断)
ClearPending(BIT_ADC);
rINTSUBMSK = ~(BIT_SUB_TC); // 开中断
rINTMSK = ~(BIT_ADC);
rADCTSC = 0xd3; // 4.等待中断模式,YM = GND
rADCTSC = rADCTSC|(1<<8); // 释放产生中断
while(1) // 等待释放
{
if(rSUBSRCPND & (BIT_SUB_TC)) // 如果产生中断(释放)(在这里似乎又产生了中断)
{
// Uart_Printf("Stylus Up Interrupt~!\n");
break;
}
}
Uart_Printf("count=%03d XP=%04d, YP=%04d\n", count++, xdata, ydata);
rADCDLY = saveAdcdly; // 恢复延时值
rADCTSC = rADCTSC & ~(1<<8); // 设置为:按下中断
rSUBSRCPND |= BIT_SUB_TC; // 清中断标志
rINTSUBMSK = ~(BIT_SUB_TC); // 开中断 (TC)
ClearPending(BIT_ADC);
}