打印

聚元微MCU(三)-ADC

[复制链接]
667|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xys9190|  楼主 | 2022-3-30 11:10 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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通道模拟开关
}

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

18

主题

142

帖子

6

粉丝