一、比较器内部结构

STC15W408AS单片机内置比较器功能。的比较器内部规划如下图所示:

比较器正极输入端CMP+电平可以与比较器负极输入端CMP-的电平进行比较,也可以与内部BandGap参考电压(1.27V附近)进行比较。

二、STC15W系列与比较器相关的特殊功能寄存器

2.1 比较器控制寄存器1:CMPCR1

CMPCR1 : 比较器控制寄存器1

CMPEN:比较器模块使能位

CMPEN=1,使能比较器模块;

CMPEN=0,禁用比较器模块, 比较器的电源关闭。

在 CMPEN为1的情况下:

当比较器的比较结果由LOW变成HIGH时, 若是PIE被设置成1, 那么内建的某一个

叫做CMPIF_p的寄存器会被设置成1;

当比较器的比较结果由HIGH变成LOW时, 若是NIE被设置成1, 那么内建的某一个

叫做CMPIF_n的寄存器会被设置成1;

当CPU 去读取 CMPIF 的数值时, 会读到 (CMPIF_p || CMPIF_n);

当CPU对CMPIF写0后, CMPIF_p 以及 CMPIF_n 都会被清除为0 .

而中断产生的条件是 [ (EA==1) && (((PIE==1)&&(CMPIF_p==1)) || ((NIE==1)&&(CM

PIF_n==1))) ]CPU接受中断后, 并不会自动清除此CMPIF标志, 用户必须用软件写”0”去清除它。

PIE: 比较器上升沿中断使能位( Pos-edge Interrupt Enabling)

PIE = 1, 使能比较器由LOW变HIGH的事件 设定CMPIF_p/产生中断;

PIE = 0, 禁用比较器由LOW变HIGH的事件 设定CMPIF_p/产生中断。

NIE: 比较器下降沿中断使能位 ( Neg-edge Interrupt Enabling)

NIE = 1, 使能比较器由HIGH变LOW的事件 设定CMPIF_n/产生中断;

NIE = 0, 禁用比较器由HIGH变LOW的事件 设定CMPIF_n/产生中断。

PIS: 比较器正极选择位

PIS = 1, 选择ADCIS[2:0] 所选择到的 ADCIN 做为比较器的正极输入源

PIS = 0,选择外部P5.5为比较器的正极输入源

NIS: 比较器负极选择位

NIS = 1,选择外部管脚P5.4为比较器的负极输入源

NIS = 0,选择内部BandGap电压BGV为比较器的负极输入源

CMPOE:比较结果输出控制位

CMPOE = 1,使能比较器的比较结果输出到P1.2;

CMPOE = 0, 禁止比较器的比较结果输出

CMPRES:比较器比较结果 (Comparator Result)标志位

CMPRES = 1,CMP+的电平高于CMP-的电平(或内部BandGap参考电压的电平);

CMPRES = 0,CMP+的电平低于CMP-的电平(或内部BandGap参考电压的电平)

此 bit 是一个”只读(read-only)”的bit ; 软件对它做写入的动作没有任何意义。软件所读到的结果

是“经过ENLCCTL控制后的结果”, 而非Analog比较器的直接输出结果。

2.2 比较器控制寄存器2:CMPCR2

比较器控制寄存器2

INVCMPO:比较器输出取反控制位 (Inverse Comparator Output)

INVCMPO = 1,比较器取反后再输出到P1.2;

INVCMPO = 0,比较器正常输出。

比较器的输出, 采用“经过ENLCCTL控制后的结果”, 而非Analog比较器的直接输出结果。

DISFLT:去除比较器输出的 0.1uS Filter

DISFLT = 1, 关掉比较器的输出0.1uS Filter (可以让比较器速度有少许提升);

DISFLT = 0, 比较器的输出有0.1uS 的 Filter。

LCDTY[5:0]:比较器输出端 Level-Change control的 filter 长度(Duty)选择

bbbbbb:=

当比较器由LOW变HIGH, 必须侦测到该后来的HIGH持续至少bbbbbb个时钟, 此芯片线

路才认定比较器的输出是由LOW转成HIGH; 如果在bbbbbb个时钟内, Analog比较器的输

出又回复到LOW, 此芯片线路认为什么都没发生, 视同比较器的输出一直维持在LOW;

当比较器由HIGH变LOW, 必须侦测到该后来的LOW持续至少bbbbbb个时钟, 此芯片线

路才认定比较器的输出是由HIGH转成LOW; 如果在bbbbbb个时钟内, Analog比较器的输

出又回复到HIGH, 此芯片线路认为什么都没发生, 视同比较器的输出一直维持在HIGH.

若是设定成 000000, 代表没有 Level-Change Control。

三、比较器测试程序

#include "stc15.h"
void CmpInit();void main()
{CmpInit();EA = 1;    // CPU开放中断while (1);
}
// 初始化比较器模块
void CmpInit()
{
// P5.5为比较器正极
// P5.4为比较器的负极
// P1.2为比较器的结果输出口CMPCR1 = 0; // 初始化比较器CMPCR1 |= 0x80;  // 使能比较器模块CMPCR1 |= 0x02;     // 使能比较器的比较结果输出到P1.2CMPCR1 |= 0x20;     // 使能比较器的上升沿中断
}
// 比较器中断服务函数
void cmp_isr() interrupt 21 //比较器中断向量入口
{CMPCR1 &= ~0x40; // 清除完成标志P12 = CMPCR1 & 0x01; // 将比较器结果CMPRES输出到测试口显示
}

12.STC15W408AS单片机比较器相关推荐

  1. 11.STC15W408AS单片机CCP/PCA/PWM应用

    STC15W408AS单片机集成了3路可编程计数器阵列(CCP/PCA)模块可用于软件定时器.外部脉冲的捕捉.高速脉冲输出以及脉宽调制(PWM)输出. 一.与CCP/PWM/PCA应用有关的特殊功能寄 ...

  2. 10.STC15W408AS单片机A/D转换器

    10.STC15W408AS单片机A/D转换器 STC15系列单片机内部集成了8路10位高速A/D转换器.STC15系列单片机的A/D转换口在P1口(P1.7-P1.0),有8路10位高速A/D转换器 ...

  3. STC15W408AS单片机通过ADC端口采集模拟量并从串口打印数值

    STC15W408AS单片机通过ADC端口采集模拟量并从串口打印数值 0-1023数据采集 STC15W408AS引脚功能图 STC15系列单片机的A/D转换器 A/D转换器的结构 STC15系列单片 ...

  4. 基于STC15W408AS单片机的陀螺仪显示器设计

    提示:本文属于技术的交流,如有抄袭请联系删除. 文章目录 前言 一.STC15W408AS单片机 二.总体设计 1.硬件设计 (1)原理图设计 a.MCU设计 b.传感器接口设计 c.液晶显示 d.电 ...

  5. 6.STC15W408AS单片机外部中断

    一.外部中断简介 STC15W408AS单片机有4个外部中断,它们分别是:外部中断0(INT0).外部中断1(INT1).外部中断2(INT2).外部中断3(INT3). 外部中断0(INT0)和外部 ...

  6. 2.STC15W408AS单片机时钟

    STC15W408AS单片机有两个时钟源:内部高精度R/C时钟和外部时钟(外部输入时钟或外部晶体振荡器产生的时钟).内部高精度R/C时钟(±0.3%),±1%温漂,常温下温漂±0.6%(-20℃~+6 ...

  7. STC15W408AS单片机串口切换与下载问题

    STC15W408AS单片机串口切换与下载问题 STC15W408AS这款单片机支持串口的引脚切换功能.但是在配置过程中,发现从默认引脚P3.0和P3.1切换到P3.6和P3.7切换不成功. 官方推荐 ...

  8. STC15W408AS单片机IIC驱动0.96寸OLED显示

    STC15W408AS单片机IIC驱动0.96寸OLED显示 不同页的滚动效果() 全页的滚动效果 STC15W408AS最新系统板 注意图片上的0欧姆电阻贴错了位置,应该是与GND相连的,图片上是P ...

  9. 4.STC15W408AS单片机点亮第一个LED

    STC15W408AS单片机有14个I/O口.其所有I/O口均可由软件配置成4种类型.4种类型分别为:准双向口/弱上拉(标准8051输出模式).推挽输出/强上拉.高阻输入(电流既不能流入也不能流出)或 ...

  10. 应广PFS122单片机比较器测供电电源VDD电压

    应广PFS122单片机比较器测供电电源VDD电压,VDD电源调至3V的时候LED灯亮起,偶尔会有点抖动现象,可以在VDD电压3V的时候做判断,消抖处理,本例程实现功能,不清楚的请联系博主,上代码: # ...

最新文章

  1. Mac下使用crontab来实现定时任务
  2. python 将counter 的结果转换为字典
  3. Bigtable 论文翻译
  4. 将k8s制作成3D射击游戏,好玩到停不下来,附源码
  5. 双离合档把上按钮作用_英特尔展示双屏幕概念笔记本:带有双铰链
  6. openstack ice版文档horizon整理(页面resize)
  7. 8 | Spatial-based GNN/convolution模型之GAT(受欢迎)
  8. java 3dm_3dm游戏运行库合集安装包-游戏运行库合集安装包下载v3.0DM整理-西西软件下载...
  9. 3D视觉点云数据处理十大方法
  10. Javaweb面试题(一)———更新中
  11. 汇川AM系列Modbus通信设置
  12. 一只蒟蒻的树形DP学习笔记
  13. Torah RVP Claiming Tutorial
  14. 计算机考证忘记密码了怎么办,计算机忘记开机密码怎么办?
  15. Keras实现小数量集图片分类——6类别Birds数据集分类
  16. Quorum 机制(分布式系统)
  17. 一起来找茬:记一起 clang 开启 -Oz 选项引发的血案
  18. 机器人中的yaw/pitch/roll
  19. MySQL数据库实验(四):E-R图实例讲解
  20. wincc做皮带动画_WINCC中制作管道流体流动动画的一种方法

热门文章

  1. 新手使用PHPCUSTOM打开php文件变下载的原因分析
  2. matlab画三维图如何更改颜色,MATLAB画三维图像
  3. 颜色空间:RGB,CMY,HSV,HSL,Lab,YUV详解
  4. JSP页面只显示源代码不显示网页内容
  5. 解决python运行selenium程序执行完后,Chrome浏览器自动关闭的问题
  6. ASP.NET设置背景图案
  7. 计算机网络基础知识之应用层篇
  8. 【操作系统】CPU是如何执行程序的?
  9. java public aspect_spring aop的两种写法aspect和advisor
  10. RMAN备份恢复Oracle_wuli大世界_新浪博客