| STC8H4K64TL
 
 今天遇到1个ADC读取的问题。
 设置,ADCEXCFG,自动多次取平均:测内部1.19V正常,但是测外部ADC,数值一直不对。结果加个延时好了。
 实测:ADCEXCFG配置<-到->启动AD转换的时间间隔需加到60ms,读取数值才正常。
 
 复制代码ADCEXCFG |= 0x0F;//即16次采样后取平均值,
  Delay1ms(); Delay1ms(); Delay1ms(); Delay1ms(); Delay1ms(); Delay1ms(); Delay1ms(); Delay1ms(); Delay1ms(); Delay1ms();
  Delay1ms(); Delay1ms(); Delay1ms(); Delay1ms(); Delay1ms(); Delay1ms(); Delay1ms(); Delay1ms(); Delay1ms(); Delay1ms();
  Delay1ms(); Delay1ms(); Delay1ms(); Delay1ms(); Delay1ms(); Delay1ms(); Delay1ms(); Delay1ms(); Delay1ms(); Delay1ms();
  Delay1ms(); Delay1ms(); Delay1ms(); Delay1ms(); Delay1ms(); Delay1ms(); Delay1ms(); Delay1ms(); Delay1ms(); Delay1ms();
  Delay1ms(); Delay1ms(); Delay1ms(); Delay1ms(); Delay1ms(); Delay1ms(); Delay1ms(); Delay1ms(); Delay1ms(); Delay1ms();
  Delay1ms(); Delay1ms(); Delay1ms(); Delay1ms(); Delay1ms(); Delay1ms(); Delay1ms(); Delay1ms(); Delay1ms(); Delay1ms();
  Delay1ms(); Delay1ms(); Delay1ms(); Delay1ms(); Delay1ms(); Delay1ms(); Delay1ms(); Delay1ms(); Delay1ms(); Delay1ms();
// 启动AD转换
    ADC_CONTR |= 0x40; // ADC_START=1
    _nop_();
    _nop_();
    _nop_();
while (!(ADC_CONTR & 0x20)); // 查询ADC完成标志
    ADC_CONTR &= ~0x20;  // 清完成标志
 初始化
 
 复制代码//ADC初始化
    P_SW2 |= 0x80;   //使能访问XFR
    ADCTIM = 0x3f;                              //设置ADC内部时序  转换时间选择
    P_SW2 &= 0x7f;
    ADCCFG = 0x2f;                              //右对齐,设置ADC时钟为系统时钟/2/16
        ADC_CONTR = ADC_CONTR |0X80|8;        
 解决办法:在没用到ADC_ETR控制脚时,可以提前配置ADCEXCFG
 
   
 
 复制代码更新后的硬件选项为:
  . 系统ISP工作频率: 24.096MHz
  . 内部IRC振荡器的频率: 11.064MHz
  . 掉电唤醒定时器的频率: 35.625KHz
  . 振荡器放大增益使能
  . 用户EEPROM大小被设置为 0.5 K
  . P3.2和P3.3与下次下载无关
  . 上电复位时增加额外的复位延时
  . 复位引脚用作普通I/O口
  . 检测到低压时复位
  . 低压检测门槛电压 : 2.00 V
  . 上电复位时,硬件不启动内部看门狗
  . 上电自动启动内部看门狗时的预分频数为 : 256
  . 空闲状态时看门狗定时器停止计数
  . 下次下载用户程序时,将用户EEPROM区一并擦除
  . 下次下载用户程序时,没有相关的端口控制485
  . 下次下载时不需要校验下载口令
  . 内部参考电压: 1191 mV (参考范围: 1100~1300mV)
芯片出厂序列号 : F834C973009963
  单片机型号: STC8H4K64TL
  . 用户设定频率: 11.059MHz
  . 调节后的频率: 11.064MHz ( 主时钟分频系数 = 1; )
  . 频率调节误差: 0.043%
 
 
 
 
 |