ADC_CONTR=0XE0; //1110 0000 开,最高速 Delay(50); } int GetADC(uchar ch) { int result; ADC_CONTR|=ch; //选择通道 _nop_(); _nop_(); _nop_(); _nop_(); ADC_CONTR|=0x08; //0000 0100 开始AD转换 while(!(ADC_CONTR&ADC_FLAG)); //查询ADC_FLOG是否置位1 转换结束 ADC_CONTR...
ADC_CONTR=0xe0|N; //打开adc电源,设置转换速率 设置P1.0模拟通道 _nop_(); //适当延时 _nop_(); _nop_(); _nop_(); ADC_CONTR=0xe8|N;//启动adc转换 while(!(ADC_CONTR==(0xf0|N))); //循环等待是否转换完毕 ADC_CONTR=0x60; //关闭adc电源 清楚ADC_FLAG标志位 ADC=ADC_RES; ADC<<=...
ADC_CONTR =0xE0; //保持电源开,设置转换速度1110 0000 _nop_(); _nop_(); _nop_(); _nop_(); ADC_CONTR =0xE3; /保持电源开,保持转换速度,并选择P1.3输入1110 0011 delay(10); ADC_CONTR =0xEB; //开转换开关,开始转换1110 1011 while(ADC_CONTR & 0x10==0);//查询转换是否结束,结束后读...
We read every piece of feedback, and take your input very seriously. Include my email address so I can be contacted Cancel Submit feedback Saved searches Use saved searches to filter your results more quickly Cancel Create saved search Sign in Sign up Reseting focus {...
ADC_CONTR = (ADC_CONTR & 0xe0) | ADC_START | channel;//AD转换控制寄存器设置 i = 250; do{ if(ADC_CONTR & ADC_FLAG)//如果AD转换结束 { ADC_CONTR &= ~ADC_FLAG;//软件清0 AD转换结束标志位 adc = (uint)ADC_RES;//获取AD转换的高位 adc = (adc << 2) | (ADC_RESL & 3);//获...
#define STC32G_ADCSELCH7() {STC32G_P1MODE_HIIN(PIN7); ADC_CONTR &= 0xF0; ADC_CONTR |= 0x07;} //selected ADC_CH7 #define STC32G_ADCSELCH8() {STC32G_P0MODE_HIIN(PIN0); ADC_CONTR &= 0xF0; ADC_CONTR |= 0x08;} //selected ADC_CH8 ...
如果一次写ADC_CONTR=0X8F相当于是 打开通道,然后又开始转换,这个应该没有关系吧 2019-5-20 08:57:56 评论 举报 赵羽 提交评论 答案对人有帮助,有参考价值 0 没关系,你可以每次转换结束之后都把ADC电源关掉。你是数码管显示一直是0还是ADC寄存器的值是0。建议你把ADC寄存器的值读取出来通过串口输到...
(2)选择ADC通道() (ADC_CONTR中的低三位CHS2,CHS1,CHS0.通过组合选择P1口的通道。如P1.1:CHS2=0,CHS1=0,CHS0=1) (3).适当延时,等ADC内部模拟电压稳定。一般延时1ms即可。 (4).设置P1口中的相应口线作为AD转换模拟量输入通道(设置P1ASF寄存器,P1ASF=0X02:选择P1.1)。 (5)根据...
{ ADC_RES=0; ADC_RESL=0; ADC_CONTR=(ADC_CONTR&0xe0)|0x08|channel;//starttheADC3 NOP(4); while((ADC_CONTR & 0x10) == 0) ; //wait for ADC finish ADC_CONTR &= ~0x10; //清除ADC 结束标志 return (((u16)ADC_RES << 2) | (ADC_RESL & 3)); } /*** 计算温度 ***/ ...
{ ADC_RES=0; ADC_RESL=0; ADC_CONTR=(ADC_CONTR&0xe0)|0x08|channel;//starttheADC3 NOP(4); while((ADC_CONTR & 0x10) == 0) ; //wait for ADC finish ADC_CONTR &= ~0x10; //清除ADC 结束标志 return (((u16)ADC_RES << 2) | (ADC_RESL & 3)); } /*** 计算温度 ***/ ...