/***********************************************************
函数功能: AD转换函数
参数说明: Ch 转换的通道
ADM = | ADCS | 0 | FR2 | FR1 | FR0 | 0 | 0 | ADCE | 地址:FF80H, 复位后:00H, R/W
ADCS A/D 转换操作控制
0 停止转换操作
1 开始转换操作
FR2 FR1 FR0 参考电压 采样时间注 转换时间 *注参考Fxp 8M
0 0 0 VDD>=4.5V 12/Fxp(1.5us) 36/Fxp (4.5us)
1 0 0 VDD>=4.0V 24/Fxp(3.5us) 72/Fxp (9.0us)
1 1 0 VDD>=2.85V 96/Fxp(12.5us) 144/Fxp(18.0us)
1 0 1 VDD>=2.85V 48/Fxp(6us) 96/Fxp (12.0us)
0 1 0 VDD>=2.85V 48/Fxp(6us) 72/Fxp (9.0us)
0 0 1 VDD>=2.85V 24/Fxp(3us) 48/Fxp (6.0us)
1 1 1 VDD>=2.7V 176/Fxp(22us) 224/Fxp(28.0us)
0 1 1 VDD>=2.7V 88/Fxp (11us) 112/Fxp(14.0us)
ADCE 比较操作控制
0 停止比较器操作
1 使能比较器操作
ADCS ADCE A/D 转换操作
0 0 停止状态(不存在直流电源消耗)
0 1 转换等待模式(仅有比较器电源消耗)
1 x 转换模式
ADS = | 0 | 0 | 0 | 0 | 0 | 0 | ADS1 | ADS0 |
ADS1 ADS0 模拟输入通道选择寄存器
0 0 ANI0
0 1 ANI1
1 0 ANI2
1 1 ANI3
10 位 A/D 转换结果寄存器(ADCR)地址: FF18H, FF19H 复位后: 不确定 只读
|---------------FF19H---------------| |------------------------------FF18H---------------------------|
ADCR = | 0 | 0 | 0 | 0 | 0 | 0 | ADCR.9 | ADCR.8 | ADCR.7 | ADCR.6 | ADCR.5 | ADCR.4 | ADCR.3 | ADCR.2 | ADCR.1 | ADCR.0 |
***********************************************************/
INT16U AD_Converter( INT8U Ch )
{
INT8U i;
INT16U ADValue;
ADM = 0x10;
ADCE = 1;
ADS = Ch;
NOP;NOP;NOP;
NOP;NOP;NOP;
NOP;NOP;NOP;
ADCS = 1;
for( i=0; i<1; i++ )
{
ADIF = 0;
while( !ADIF )
NOP;
ADValue = ADCR;
}
ADCS = 0;
ADIF = 0;
ADCE = 0;
return ( ADValue );
}
注意:相应的AD通道的IO口要设为输入模式,并禁止上拉