巧设pic877a单片机的AD转换模块
volatile unsigned int ad0_res,ad1_res,ad2_res=0;//存放AD初始化值
//下面对其进行初始化,为了具有统一性,我将RA、RE口均进行初始化。
/**********************************************************
*AD结果为10位精度,从0-1023、
*在使用时必设定ADCON1=0X80;存贮形式为((ADRESH<8)+(ADRESL)).
*AD通道的选择是从0开始的如:0->RA01->RA1 ....6->RE2.7->RE3
***********************************************************/
void
ad_init (void)
{
INTCON = 0X00;
ADIF = 0X00;
ADCON1 = 0x80;
ADCON0 = 0X81; //十位结果必须高为8位
TRISA = 0X0FF;//默认为AD输入
TRISE= 0X0FF;//默认为AD输入
PORTA = 0X00;
ADON = 1;
}
//这是一个延时函数
void
delay(unsigned int x)
{
unsigned int a, b;
a = (2*x/8);
for(a; a>0; a--);
for(b=5; b>0; b--);
}
//下面这个函数就是具体采样AD的结果值,它一个很好的妙用
unsigned int //返回一个整型值
read_ADresult(unsigned char channel)//通道转换
{
channel &= 0x07;// 读出当前通道的值
ADCON0 &= 0x85;// 清所有通道
ADCON0 |= (channel<3);//10 xxx 001 将当前通道对应的值赋予ADCON0
delay(30);
ADGO = 1;
while(ADGO) continue;
return(ADRESH < 8)+(ADRESL);
}
pic877a单片机AD转换模 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)