1. W79E825、W79E824 ADC简介 W79E825、W79E824 系列集成有4路10位A-D转换器,开始A-D转换可以由软件设置也可以由硬件触发。ADC中断向量是5BH。转换结果的高8位在ADCH中,低两位在ADCCON.7和ADCCON.7。
2. W79E825、W79E824系列MCU ADC 编程方法 2.1 A-D 的转换过程 在使用ADC电路前,必须把ADCCEX置’1’打开ADC电路。当ADCCON.5 (ADCEX) =0时,是软件开始模式,把控制位ADCCON.3 (ADCS)置‘1’即可以开始ADC转换。当ADCCON.5 =1时,是软件或硬件开始模式,ADCCON.3 (ADCS)置‘1’或STADC (P1.4)上的有效上升沿开始ADC转换。当使用STADC (P2.0)上的有效上升沿开始ADC转换时低电平至少保持一个机器周期,之后的高电平也至少保持一个机器周期。 控制位ADCCON.4 (ADCI)置‘1’标志10-位转换的结束。转换结果的高8位存放在特殊功能寄存器ADCH中,剩下的两位存放在ADCCON.7 (ADC.1)和ADCCON.6 (ADC.0)中。总的转换时间共有52个机器周期。ADC 时把ADCS状态标志置‘1’,并在52时钟周期后清‘0’。 控制位ADCCON.0、ADCCON.1被用作4选1多路模拟开关控制。ADC转换步骤不受外部或软件开始转换的影响。转换结束的结果也不会影响ADCI = 逻辑1;ADC在转换过程中系统将不能进入空闲或掉电模式。转换结束结果(ADCI = 逻辑1) 仍然不影响。 2.2 ADC 的编程实例 2.2.1 打开/关闭ADC 的电路 AUXR1.2(ADCEN)=1打开ADC 的电路,AUXR1.2(ADCEN)=0关闭ADC 的电路。 void EnableADC() { AUXR1|=0x04; //打开ADC 的电路,ADC 的电路开始工作 } void DisableADC() { AUXR1&=0xFB;// 关闭ADC 的电路,ADC 的电路停止工作 } 2.2.2 选择ADC 模拟输入通道 P0口的其中4只脚复用为ADC的模拟输入功能,首先把它设置为模拟输入,即P0M1.y=1; P0M1.y=0;ADCCON的低2位控制选择哪一路模拟信号输入。设置ADCCON的低两位必须在ADCI和ADCS都等于’0’的状态。具体程序如下: void ADC_Select(unsigned char ADC_C) { switch(ADC_C) { case 0:P0M1|=0x08;P0M2&=0xF7;ADCCON=0;break; case 1:P0M1|=0x10;P0M2&=0xef;ADCCON=1; break; case 2:P0M1|=0x20;P0M2&=0xdf;ADCCON=2; break; case 3:P0M1|=0x40;P0M2&=0xbf;ADCCON=4; break;
default: break; } } 2.2.3 启动ADC (1)、若ADCCON.5(ADCEX)=0;把ADCCON.3(ADCS)置’1’,就开始一次新的A-D转换。实例程序如下: void StartADC() { ADCCON|=0x08; } (2)、若ADCCON.5(ADCEX)=0,STADC(P1.4)上的上升沿,就开始一次新的A-D转换。 2.2.4 ADC 中断编程 (1)、打开ADC中断。 void EnableADC_INT() { EADC=1; EA=1; } (2)、编写ADC中断服务程序。 void ADC_ISR() interrupt 11 { / /用户程序 }
W79E825/W79E824 AD功能常用于温度控制器、电动自行车、智能家电、UPS、TPMS、仪器仪表等 |