//测试工作频率为11.0592MHz #include "stc8h.h"#include "intrins.h" void main(){ P_SW2 |= 0x80; //使能访问XFR P0M0 = 0x00; P0M1 = 0x00; P1M0 = 0x00; P1M1 = 0x00; P2M0 = 0x00; P2M1 = 0x00; P3M0 = 0x00; P3M1 = 0x00; P4M0 = 0x00; P4M1 = 0x00; P5M0 = 0x00; P5M1 = 0x00; P1M0 &= 0xfe; //设置P1.0为输入口 P1M1 |= 0x01; ADC_CONTR = 0x80; //使能ADC模块并选择P1.0为ADC输入脚 CMPEXCFG = 0x00;// CMPEXCFG &= ~0x03; //P3.7为CMP+输入脚// CMPEXCFG |= 0x01; //P5.0为CMP+输入脚// CMPEXCFG |= 0x02; //P5.1为CMP+输入脚 CMPEXCFG |= 0x03; //ADC输入脚为CMP+输入脚 CMPEXCFG &= ~0x04; //P3.6为CMP-输入脚// CMPEXCFG |= 0x04; //内部1.19V参考电压为CMP-输入脚 CMPCR2 = 0x00; CMPCR1 = 0x00; CMPCR1 |= 0x02; //使能比较器输出 CMPCR1 |= 0x80; //使能比较器模块 while (1);}
汇编代码
;测试工作频率为11.0592MHz P_SW2 DATA 0BAHCMPCR1 DATA 0E6HCMPCR2 DATA 0E7HADC_CONTR DATA 0BCH P1M1 DATA 091HP1M0 DATA 092HP0M1 DATA 093HP0M0 DATA 094HP2M1 DATA 095HP2M0 DATA 096HP3M1 DATA 0B1HP3M0 DATA 0B2HP4M1 DATA 0B3HP4M0 DATA 0B4HP5M1 DATA 0C9HP5M0 DATA 0CAH CMPEXCFG XDATA 0FEAEH ORG 0000H LJMP MAIN ORG 0100HMAIN: MOV SP, #5FH ORL P_SW2,#80H ;使能访问XFR MOV P0M0, #00H MOV P0M1, #00H MOV P1M0, #00H MOV P1M1, #00H MOV P2M0, #00H MOV P2M1, #00H MOV P3M0, #00H MOV P3M1, #00H MOV P4M0, #00H MOV P4M1, #00H MOV P5M0, #00H MOV P5M1, #00H ANL P1M0,#0FEH ;设置P1.0为输入口 ORL P1M1,#01H MOV ADC_CONTR,#80H ;使能ADC模块并选择P1.0为ADC输入脚 MOV DPTR,# CMPEXCFG CLR A; ANL A,#NOT 03H ; P3.7为CMP+输入脚; ORL A,#01H ; P5.0为CMP+输入脚; ORL A,#02H ; P5.1为CMP+输入脚 ORL A,#03H ;ADC输入脚为CMP+输入脚 ANL A,#NOT 04H ; P3.6为CMP-输入脚; ORL A,# 04H ;内部1.19V参考信号源为CMP-输入脚 MOVX @DPTR,A MOV CMPCR2,#00H MOV CMPCR1,#00H ORL CMPCR1,#02H ;使能比较器输出 ORL CMPCR1,#80H ;使能比较器模块 LOOP: JMP LOOP END
17.4.7 比较器作外部掉电检测(掉电过程中应及时保存用户数据到EEPROM中)
上图中电阻R1和R2对稳压块7805的前端电压进行分压,分压后的电压作为比较器CMP+的外部输入与内部1.19V参考信号源进行比较。一般当交流电在220V时,稳压块7805前端的直流电压为11V,但当交流电压降到160V时,稳压块7805前端的直流电压为8.5V。当稳压块7805前端的直流电压低于或等于8.5V时,该前端输入的直流电压被电阻R1和R2分压到比较器正极输入端CMP+,CMP+端输入电压低于内部1.19V参考信号源,此时可产生比较器中断,这样在掉电检测时就有充足的时间将数据保存到EEPROM中。当稳压块7805前端的直流电压高于8.5V时,该前端输入的直流电压被电阻R1和R2分压到比较器正极输入端CMP+,CMP+端输入电压高于内部1.19V参考信号源,此时CPU可继续正常工作。内部1.19V参考信号源即为内部BandGap经过OP后的电压REFV(芯片在出厂时,内部参考信号源调整为1.19V)。具体的数值要通过读取内部1.19V参考信号源在内部RAM区或者Flash 程序存储器(ROM)区所占用的地址的值获得。对于STC8系列,内部1.19V参考信号源值在RAM和Flash 程序存储器(ROM)中的存储地址请参考 “存储器中的特殊参数”章节
要保证时间足够,就是调整外部电压偏低检测中断的提前量,如
1, 交流220V, 7805稳压电路前端输入是 11V;
2, 交流210V, 7805稳压电路前端输入是 10.5V;
3, 交流200V, 7805稳压电路前端输入是 10V;
4, 交流190V, 7805稳压电路前端输入是 9.5V;
5, 交流180V, 7805稳压电路前端输入是 9V;
6, 交流170V, 7805稳压电路前端输入是 8.5V;
7, 交流160V, 7805稳压电路前端输入是 8V;
===你这个要提前的量放在 11V/10.5V/10V/9.5V/9V/8.5V ?
===哪个电压点产生外部电压偏低检测中断时间充分的一个实践测试选择
先占个高层楼层,好补充内容
先占个高层楼层,好补充内容 本帖最后由 萌芽MENGYA 于 2024-1-14 11:52 编辑
感觉比较器,不是很容易上手。{:lol:} STC8H4K64TL,没旧版,只有 新版
神农鼎 发表于 2024-1-14 11:43
STC8H4K64TL,没旧版,只有 新版
好。一时间忘记了,型号直接区分新版旧版。之前以为是同一个型号区分新旧版{:lol:} CHYS这个怎么用 把这个能连到负端最好
{:4_174:}
页:
1
[2]