中断还是查询? |
wulin 发表于 2018-3-22 07:22 你的方法我明白了 |
由于AD转换完成标志是由硬件置位,调试时只能用软件模拟AD转换完成,调试成功后删除此语句 uint Read(uchar CHA) { ADC_CONTR=ADC_POWER|ADC_SPEEDLL|CHA|ADC_START;//启动转换1000 1000 _nop_(); //延时确保正确读到ADC_CONTR寄存器的值 _nop_(); _nop_(); _nop_(); // ADC_CONTR |=0x10; //软件模拟转换完成 while(!(ADC_CONTR & ADC_FLAG)); //等待ADC转换完成标志置位 ADC_CONTR &=~ADC_FLAG; //关闭ADC return(ADC_RES*4+ADC_RESL); //返回十位ADC结果 } |
while(!(ADC_CONTR && ADC_FLAG)),此处的代码应该这样写,一个&这个符号是表示取地址,两个才表示与,此处的while里面是判断语句,应该用逻辑与而不是取地址 |
可能是模拟MCU有问题,ADC_CONTR ADC_FLAG这二个标志未同时改变,只有强制跳出语句 |