越学习问题越多:
STC的范例程序中:比较强初始化程序:
- //========================================================================
- // 函数: void CMP_config(void)
- // 描述: 比较器初始化函数。
- // 参数: 无.
- // 返回: 无.
- // 版本: V1.0, 2020-6-10
- //========================================================================
- void CMP_config(void)
- {
- CMPEXCFG = 0x00;
- // CMPEXCFG |= 0x40; //比较器DC迟滞输入选择,0:0mV; 0x40:10mV; 0x80:20mV; 0xc0:30mV
-
- // CMPEXCFG &= ~0x04; //P4.4为CMP-输入脚
- CMPEXCFG |= 0x04; //内部1.19V参考电压为CMP-输入脚
-
- CMPEXCFG &= ~0x03; //P4.6为CMP+输入脚
- // CMPEXCFG |= 0x01; //P5.0为CMP+输入脚
- // CMPEXCFG |= 0x02; //P5.1为CMP+输入脚
- // CMPEXCFG |= 0x03; //ADC输入脚为CMP+输入脚
-
- CMPCR2 = 0x00;
- INVCMPO = 0; //比较器正向输出
- // INVCMPO = 1; //比较器反向输出
- DISFLT = 0; //使能0.1us滤波
- // DISFLT = 1; //禁止0.1us滤波
- // CMPCR2 &= ~0x3f; //比较器结果直接输出
- CMPCR2 |= 0x10; //比较器结果经过16个去抖时钟后输出
-
- CMPCR1 = 0x00;
- // PIE = 0; //禁止比较器上升沿中断
- PIE = 1; //使能比较器上升沿中断
- // NIE = 0; //禁止比较器下降沿中断
- NIE = 1; //使能比较器下降沿中断
-
- // CMPOE = 0; //禁止比较器输出
- CMPOE = 1; //使能比较器输出
-
- CMPO_S = 0; //选择P4.5作为比较器输出脚
- // CMPO_S = 1; //选择P4.1作为比较器输出脚
- CMPEN = 1; //使能比较器模块
- }
复制代码
这2句是把P4.5脚作为比较器输出脚,我观察实验结果,调低W1电压后,掉电保存顺利执行,同时LED11也被点亮,但是从试验箱图纸上看:
|