📄 ad.c
字号:
#include <p18cxxx.h>
#define CHS0 ADCON0bits.CHS0
#define CHS1 ADCON0bits.CHS1
#define CHS2 ADCON0bits.CHS2
#define CHS3 ADCON0bits.CHS3
#define ADON ADCON0bits.ADON
#define ADGO ADCON0bits.GO
void Init_ADC()
{
TRISAbits.TRISA0=1; //设置输入/输出方向
TRISAbits.TRISA1=1; //设置输入/输出方向
TRISAbits.TRISA2=1; //设置输入/输出方向
TRISAbits.TRISA3=1; //设置输入/输出方向
ADCON0 = 0X00; // 模拟量通道为0,GO=0, ,ADON=0;
ADCON1 = 0X0B; //参考电压Vss,Vdd,AN0,AN1,AN2,AN3 ,
ADCON2 = 0X21; //8Tad Fosc/8
ADON=1;
}
unsigned int Read_AD(unsigned char CH)
{
unsigned int ad;
CHS3=0;
switch (CH)
{
case 0:CHS2=0;CHS1=0;CHS0=0; break;
case 1:CHS2=0;CHS1=0;CHS0=1; break;
case 2:CHS2=0;CHS1=1;CHS0=0; break;
case 3:CHS2=0;CHS1=1;CHS0=1; break;
case 4:CHS2=1;CHS1=0;CHS0=0; break;
case 5:CHS2=1;CHS1=0;CHS0=1; break;
case 6:CHS2=1;CHS1=1;CHS0=0; break;
case 7:CHS2=1;CHS1=1;CHS0=1; break;
default: break;
}
Nop();Nop();Nop();Nop();Nop();Nop();Nop();Nop();
ADGO=1; //A/D转换状态位,ADON=1时,0:不在进行ad转换;1:正在进行转换。
Nop();Nop();Nop();Nop();Nop();Nop();Nop();Nop();
while(ADGO); //AD转换完成后调出循环
ad=ADRESH;
ad<<=2;
ad|=(ADRESL>>6);
return(ad);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -