#include <intrins.h>sfr ADC_CONTR = 0XBC;sfr P1ASF = 0X9D;sfr ADC_RES = 0XBD;sfr ADC_RESL = 0XBE;#define AD_SPEED 0x60void init_adc(){ ADC_CONTR = ADC_CONTR|0x80; //打开adc电源 P1ASF = 0X01; //设置P1.7为模拟功能}void adc_delay(unsigned char delay_time) // 延时函数{ unsigned int n; while(delay_time--) { n = 6000; while(--n); }}unsigned int get_AD_result(unsigned char channel){ unsigned char AD_finished=0; unsigned int h_val; unsigned int l_val; ADC_RES = 0; ADC_RESL = 0; channel &= 0x07; ADC_CONTR = AD_SPEED; _nop_(); ADC_CONTR |= channel; _nop_(); ADC_CONTR |= 0x80; adc_delay(1); ADC_CONTR |= 0x08; AD_finished = 0; while ( AD_finished ==0 ) { AD_finished = (ADC_CONTR & 0x10); } ADC_CONTR &= 0xE7; h_val = ADC_RES; h_val = h_val<<2; l_val = ADC_RESL & 0X03; h_val = h_val | l_val; return (h_val); }
详细解决方案
STC单片机ADC变换的例子
热度:95 发布时间:2016-04-28 15:47:02.0
相关解决方案