用查询方式读取AD转换的结果,根据手册里说的“A/D Acquisition Requirements ”,__delay_ms(100);100毫秒的等待应该足够了。
但是只能单步执行才能读到结果,全速运行和烧写到片子里就读不到结果。
代码如下:
short int ADC_Smpl(unsigned char Chl)
{
ADRESH = 0;//清结果寄存器
ADRESL = 0;
ADCON0 |= Chl<<3;//选择通道
ADCON0 |= 0x01;//开采样
__delay_ms(100);//等待采样
ADCON0 |= 0x04;//开转换
while(!(ADCON0&0x04));//等待转换
H_BYTE=ADRESH;
L_BYTE=ADRESL;//返回结果
ADCON0 &= 0xFE;//关采样
}
后来用中断方式,才恢复正常。源文件如下:
PIC16F877A_AD/UART/EEPROM例程
ourdev_670648UMTOBW.rar(文件大小:4K) (原文件名:main.rar)
子程序结束有:ADCON0 &= 0xFE;//关采样
一周热门 更多>