- void ADC_Init(void)
- {
- CMPCON1 |= BIT3; // 打开内部1.2V
- ADCON0 = tkc_dis| // 禁用TKC
- adc_en| // 使能ADC
- tsc_dis| // 禁用TSC
- wait_tkrd_dis| // 禁用等待软件读 TKC 数据
- freq_sel_div8| // 8分频
- scan_mode_dis; // 关闭扫描模式
- ADCON1 = accum_sel_8| // 累计8次转换数据
- avg_en| // 使能求平均操作
- trig_sel_after_adc| // ADC数据转换完成后触发中断
- func_flag_adc; // 工作在ADC功能模式
- ADCON2 = tkc_lpmod_dis| // 禁用电容传感器低功耗
- ses_gap_0_32k_clk| // 0 个‘clk_32k’时钟周期
- sta_gap_2tk_clk; // 2 个‘tk_clk’时钟周期
- ADSTA = inject_dis| // 注入操作被禁止
- iref_adj_6uA| // 参考电流校准6uA
- cont_mod_dis| // 禁用ADC连续转换模式
- adc_vref_vdd; // ADC 参考电压选择VDD
- ADCSOF = asub_dis|
- ch_sw_port|
- tkc_ofst_0pF;
- IE1 |= BIT5;
- }
- void ADC_GetVal(void)
- {
- //union16_t adc_val;
- ADCON0 |= adc_en; //Disable ADC
- ADCON1 |= adc_start;
- //while(ADCON1&adc_start);
- AdcFlag = 0;
- while(!AdcFlag);
- //adc_val.u8d[0] = ADDATH;
- //adc_val.u8d[1] = ADDATL;
- //return adc_val.u16d;
- }
- void ADC_Channel_Sel(uint16_t channel)
- {
- union16_t ch;
-
- ch.u16d = channel;
- ADCHS1 = ch.u8d[0]; // 高8通道选择
- P2ASW = ch.u8d[0]; // 高8通道模拟开关
- ADCHS0 = ch.u8d[1]; // 低8通道选择
- P1ASW = ch.u8d[1]; // 低8通道模拟开关
- }
|