图中~~~ D..1 是AD 的状况显示, 高平是进入中断程序远行代码的用时(这部分是代码效率决定的可以优化),低部分是约90个转换周期的用时(这部分是跑不了的占用时间)。
MCU 型号 STC 12C5A60S2
AD转换结果的2个结果寄存器(10位),可设置对换过来
sfr ADC_RES = 0xBD; //ADC hight 8-bit result register
sfr ADC_LOW2 = 0xBE; //ADC low 2-bit result register
AD中断处理函数:
void adc_isr() interrupt 5 using 1
{
ADC_CONTR=0xe0;
ad[aaa]=ADC_RES;
ad2[aaa]=ADC_LOW2;
ADC_CONTR =0xe8;
} //约占时 1.667uS
想优化为:
void adc_isr() interrupt 5 using 1
{
ADC_CONTR=0xe0; //Clear ADC interrupt flag
aaa=0;
ADC_CONTR =0xe8;
} //约占时 541.7ns
(aaa 当一个状态标记用,到时在主程序上处理)
但这样写有个疑问, PDF手册上说,这个AD是逐次比较型,哪么转换的结果就在写寄存器了,手册上查不到这个电路原理图,不知道这个比较用的寄存器不是直接用了结果寄存器。
是的话~~~就白折腾了
|