标题:
关于STC15W408AS的比较器问题
[打印本页]
作者:
新乡家电维修
时间:
2018-8-29 12:24
标题:
关于STC15W408AS的比较器问题
本帖最后由 新乡家电维修 于 2018-8-30 12:20 编辑
P5.5是比较器正输入端,
P5.4是比较器负输入端,
如果比较器负端选择了内部的参考电压1.27V,那么P5.4现在还能作为一个正常IO口使用吗?
有高人用过吗,回答下
解决了,经过实验程序测试,负端选择内部参考电压,不影响P5.4口作为正常IO口使用,
;汇编比较器使用(中断方式,中断入口00ABH)
CMPCR1 DATA 0E6H ;比较器控制寄存器1
CMPEN EQU 080H ;B7,比较模块使能位,1允许,0禁用
CMPIF EQU 040H ;B6,中断标志位,1是有中断,必须手动清零(有中断此位置1,需要手动清零)
PIE EQU 020H ;B5,上升沿使能位,1允许,0禁用
NIE EQU 010H ;B4,下降沿使能位,1允许,0禁用
PIS EQU 008H ;B3,+极选择位,1选ADCIS,0选P5.5+
NIS EQU 004H ;B2,-极选择位,1选P5.4,0选内部BGV
CMPOE EQU 002H ;B1,1输出P1.2,0禁止到P1.2
CMPRES EQU 001H ;B0,比较结果,只读(+端高于-端输出1,+端低于-端输出0,直接反应比较器结果,不受软件控制,只读)
CMPCR2 DATA 0E7H ; 比较器控制寄存器2
INVCMPO EQU 080H ;B7,1取反后输出到P1.2,0正常输出
DISFLT EQU 040H ;B6,1无0.1us延时输出,0有0.1us延时输出
LCDTY EQU 03FH ;B5-B0,输出抖动时间控制(防止误触发)00000表示没有延时
附上我的测试程序,修改过的,官网推荐程序复杂繁琐,下面是我修改过的,只有短短几行,
稍加改动就能实际应用,我打算用于停机保存数据到EEPROM。
测试成功程序:
ORG 00H
LJMP MAIN
ORG 00ABH ;比较器中断入口
LJMP INT_8
;===============================
ORG 0100H
MAIN:
MOV 0E6H, #10010000B
MOV 0E7H,#0
SETB EA
SJMP $
;===========================================
INT_8:
MOV A,0E6H
MOV P1,A
RETI
END
作者:
sxhwdz
时间:
2018-8-29 19:42
P5.4口默认是正常IO口,如果要作为比较器负输入端,需要预先配置特殊寄存器CMPCR1。该寄存器的BIT2是NIS, 复位后NIS=0,P5.4是正常IO口, NIS置1后,P5.4口是比较器负输入端。
CMPCR1 : 比较器控制寄存器1
SFR name Address bit B7 B6 B5 B4 B3 B2 B1 B0
CMPCR1 E6H name CMPEN CMPIF PIE NIE PIS NIS CMPOE CMPRES
NIS: 比较器负极选择位
NIS = 1, 选择内部管脚P5.4为比较器的负极输入源; ;
NIS = 0, 选择内部BandGap电压BGV为比较器的负极输入源。
作者:
新乡家电维修
时间:
2018-8-30 12:09
sxhwdz 发表于 2018-8-29 19:42
P5.4口默认是正常IO口,如果要作为比较器负输入端,需要预先配置特殊寄存器CMPCR1。该寄存器的BIT2是NIS, ...
解决了,我将在主贴上回复说明
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1