以ADC作CMP+的STC15单片机的比较器程序怎样写?

以ADC作CMP+的STC15单片机的比较器程序怎样写?,第1张

我看了一下STC15系列的手册,的确这里语焉不详,说是PIS=1时就可以用ADCIS[2:0]所选中的通道作为比较器同相输入端了,然而查遍手册并无这个位域的相关定义。

就我个人来说,认为这个ADCIS[2:0]有可能指的就是ADC_CONTR寄存器的CHS[2:0]位域。你可以做一下试验:

① 在ADC_POWER=0的情况下,切换CHS[2:0]的值,看看对应的ADC通道有没有作为比较器的同相输入端作用;(理论上我们并不需要ADC模块真的供电工作,只是借用一下其模块前端的多路开关而已)

如果不行,就将ADC_POWER=1,看看此时的情况如何。

如果都不行,那就只能咨询STC的技术服务了。

首先配置它的时钟源

初始化比较器(可以设置成自动重载)

设置一个初始值

如果是向下计数的话就是从这个值开始一直减到0

开启中断

当减到0时条件满足产生比较中断

写程序的话按照这个步骤应该就可以调通了。

CMPCR1      =   0xE6  //比较器控制寄存器1

CMPCR2      =   0xE7  // 比较器控制寄存器2

使能比较器,即CMPEN置1即可

  ORL    CMPCR1,#80                            使能比较器,CMPEN=1

下面是一个比较器输入+端接P55,-接内部电压的配置例子

MOV   CMPCR1,#80H                        1000 0000使能比较器CMPEN=1

  MOV   CMPCR2,#3FH                        ,比较器输入+端接P55,-接内部电压


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8045206.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-12
下一篇2023-04-12

发表评论

登录后才能评论

评论列表(0条)

    保存