按用户手册第1158页ADC基本操作示例程序稍做修改,下载到擎天柱AI8051核心板测试,缓慢旋转电位器,ADC结果在P2的LED显示完全正常,没有发现突跳现象。
- #include "Ai8051U.H" //头文件见下载软件
- #include "intrins.h" //使用_nop_()函数所必须要包含的头文件,
-
-
- void Delay20ms(void) //@12.000MHz
- {
- unsigned char data i, j, k;
-
- i = 2;
- j = 56;
- k = 172;
- do
- {
- do
- {
- while (--k);
- } while (--j);
- } while (--i);
- }
-
- void main()
- {
- P_SW2 |= 0x80; //允许访问扩展的特殊寄存器,XFR
- WTST = 0; //设置取程序代码等待时间,
- CKCON = 0; //设置访问片内的 xdata 速度,
- P0M0 = 0x00;P0M1 = 0x00;
- P1M0 = 0x00;P1M1 = 0x20; //设置 P1.5 为 ADC 口
- P2M0 = 0x00;P2M1 = 0x00;
- P3M0 = 0x00;P3M1 = 0x00;
- P4M0 = 0x00;P4M1 = 0x00;
- P5M0 = 0x00;P5M1 = 0x00;
- ADCTIM = 0x3f; //设置 ADC 内部时序
- ADCCFG = 0x0f; //设置 ADC 时钟为系统时钟/2/16/16
- Delay20ms();
- while (1)
- {
- ADC_CONTR=ADC_POWER|ADC_START|0x05;//启动转换1100 1000
- _nop_();_nop_(); //小延时
- while (!(ADC_CONTR & ADC_FLAG)); //等待ADC转换完成标志置位 1010 0000
- ADC_CONTR &=~ADC_FLAG; //清完成标志
- P2 = ~ADC_RES; //读取 ADC 结果
- }
- }
复制代码
|