本帖最后由 芯圣电子官方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;
}
|