打印
[通用PIC核OTP系列]

HC18P110L ADC设置

[复制链接]
1574|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
从此不早朝|  楼主 | 2023-2-24 16:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
AD, ADC, HC, dc
本帖最后由 芯圣电子官方QQ 于 2023-7-20 10:29 编辑
//这里要将管脚口设置为输入
void GPIO_inital(void)
{
        PORTA |= 0X04;
//        PORTB=0X00;                        //PORT口输出高低电平设置  1=高电平,0=低电平
        TRISA &=0X04;                        //输入输出设置  1=输入,0=输出                  
//        TRISB=0X00;                        //输入输出设置  1=输入,0=输出
        
//        ANSEL=0X00;                        
        WPUA &= 0XFB;                        //上拉设置 1=DISABLED PULL-UP  ;0=PULL-UP
//        WPUB =0XFF;                        //上拉设置 1=DISABLED PULL-UP  ;0=PULL-UP
}

void adc_A0_init()
{
        ADCON0=61;                        //内部Vdd,AN0
        ADCON1=50;
/*                                        ;9Fh         Bit7         Bit6         Bit5         Bit4         Bit3 Bit2 Bit1                Bit 0
                                        ;ADCON1 ADFM         ADCS2         ADCS1         ADCS0         -         -         -         ADREF        
                                       
                                        ;ADC 时钟源         ADCS[2:0] 典型值
                                        ;        Fosc         000         2us
                                        ;        Fosc/2         001         4us
                                        ;        Fosc/4  010         8us
                                        ;        Fosc/8  011         16us
                                        ;        Fosc/16 100         32us
                                        ;        Fosc/32 101         64us
                                        ;        Fosc/64 110         128us
                                        ;        FRC         111         视RC 的值而定
                                        ;ADFM 数据格式
                                        ;0 ADRESH[7:0]:ADRESL[7:4]
                                       
                                        ;1 ADRESH[1:0]:ADRESL[7:0]        
                                        ;1Fh         Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
                                        ;ADCON0    - VHS1 VHS0 CHS2 CHS1 CHS0 ADON ADEN
                                                
                                        ;ADREF VHS[1:0] 参考电压        CHS [2:0] 模拟通道        
                                        ;0 00 内部2.0V                        000 AN0
                                        ;0 01 内部3.0V                        001 AN1
                                        ;0 10 内部4.0V                        010 AN2
                                        ;0 11 内部VDD                        011 AN3
                                        ;1 xx 外部参考电压                100 AN4
                                        ;                                101 AN5                        
                                        ;                                110 保留
                                        ;
*/                                                               
}
//┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
//┃ADC处理                                                                                                                    ┃
//┃Version:V1.00                                                                                                   ┃
//┃Functio:AD初始化数据赋值处理                                                                   ┃
//┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
void adc_get(unsigned char AD_TD)//ADC初始化 AD_TD通道选择 AD_TD=1对应通道0(AN0仿真不能用) AD_TD=7对应通道7 没有通道5
{
        switch(AD_TD)
        {
        case 1:
                ANSEL=0X01;                //1=AD(simulation models)0=I/O(digital models)
                ADCON0=0x40;        //参考电压选择,通道选择0
        break;
        case 2:
                ANSEL=0X02;                //1=AD(simulation models)0=I/O(digital models)
                ADCON0=0x44;        //参考电压选择,通道选择1
        break;
        case 3:
                ANSEL=0X04;                //1=AD(simulation models)0=I/O(digital models)
                ADCON0=0x48;        //参考电压选择,通道选择2
        break;
        case 4:
                ANSEL=0X08;                //1=AD(simulation models)0=I/O(digital models)
                ADCON0=0x4c;        //参考电压选择,通道选择3
        break;
        case 5:
                ANSEL=0X10;                //1=AD(simulation models)0=I/O(digital models)
                ADCON0=0x50;        //参考电压选择,通道选择4
        break;
        case 6:
                ANSEL=0X40;                //1=AD(simulation models)0=I/O(digital models)
                ADCON0=0x58;        //参考电压选择,通道选择6
        break;
        case 7:
                ANSEL=0X80;                //1=AD(simulation models)0=I/O(digital models)
                ADCON0=0x5c;        //参考电压选择,通道选择7
        break;
        default:
                ;
        break;
        }
        ADEN=1;
        delay_us(100);                //等待ADC稳定
        
        ADON=1;
        
                while(ADON!=0);
                databuf=ADRESH;
                databuf=(databuf<<4)|(ADRESL>>4);
                ADRESL=0x00;
                ADRESH=0x00;
                voult_buf=databuf;
}


使用特权

评论回复
沙发
1924414306| | 2023-9-27 15:35 | 只看该作者
实测可用吗?

使用特权

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

本版积分规则

22

主题

185

帖子

0

粉丝