STC内部有个BandGap,准备用来检测外部电压的,我配置完相应的寄存器后,启动AD转换,准备读取BandGap的值,可是一直读不到AD转换结束的标志!有哪位朋友用过STC的这个功能的,帮忙看一看!下面是部分代码!
AD的基本配置:
EA=0; //屏蔽总中断
CLK_DIV=0x02; //12MHz4分频 时钟频率3M
ADC_CONTR=0;
ADC_CONTR|=0x80; //选择通道0,打开电源,
_nop_(); //第一次上电等待电源稳定
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
P1ASF=0x00; //P1口都不当成AD口 读取BandGap必须这样设置
EADC=0; //禁止ADC中断
ADC_RES=0; //清除结果寄存器
ADC_RESL=0;
AD值读取:
ADC_CONTR|=0x88; //启动ADC转换
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
while(!(ADC_CONTR&0x10)); //等转换结束 程序一直死在这里 读不到转换结束的标志
ADC_CONTR&=0x6F; //关闭AD转换
ADC_Vaule=(unsigned int)ADC_RES<<8+ADC_RESL; //取结?
寄存器配置应该无错误,硬件上现在就相当于一个最小系统 什么也没接 各位朋友帮忙看看,很是奇怪
单片机型号为:IAP15L2K61S2 |