首页 > 代码库 > 用IO检测方式判断交流220V与110V(松瀚汇编程序)

用IO检测方式判断交流220V与110V(松瀚汇编程序)


;-----------------------代码------------------------------------------

;---220V/110V检测--------------------
V_CH220NUM EQU 10 ;检测上半波的个数
;150V-0 180V-80  220V-120
V_220VNUM EQU 60 ;电压信号为高的总个数

//***************************************
// 函数名称: DLY500US
// 函数功能: 16MRC 下耗时500US
//***************************************
DLY500US:
 MOV A,#250
 MOV I,A
L_DLY500US:
 NOP
 NOP
 NOP
 NOP
 DECMS I
 JMP L_DLY500US
 RET
//***************************************
// 函数名称: CHECKAC220V
// 函数功能: 检测输出电压为110V 或 220V
//***************************************
CHECKAC220V:
/*   
 // 测试用
 CALL DLY500US
 MOV A, #0X04
 XOR P2, A
 JMP CHECKAC220V
*/
;------------检测前延时 等待电压稳定-------------------
 MOV A, #200 ;1ms*200=200ms
 MOV X0, A
L_PWLDY:
 CALL DLY500US ;1ms
 CALL DLY500US
 MOV A, #0X5A
 B0MOV WDTR, A
 DECMS X0
 JMP L_PWLDY 
;-------------------------------------------------------
 
 MOV A, #V_CH220NUM ;检测上半波的个数
 MOV X0, A
 CLR X1
L_CHACVOG: 
 B0BTS1 P_ZERO
 JMP L_CHACVOG
 JMP $+1
 JMP $+1
 JMP $+1
 B0BTS1 P_ZERO
 JMP L_CHACVOG
 JMP $+1
 JMP $+1
 JMP $+1
 MOV A, #0X5A
 B0MOV WDTR, A
L_CHACVOG2:
 B0BTS0 P_ACV
 INCMS X1
 NOP
 CALL DLY500US
 
 B0BTS0 P_ZERO
 JMP L_CHACVOG2 
 JMP $+1
 JMP $+1
 B0BTS0 P_ZERO
 JMP L_CHACVOG2 
 ;上半波结束
 DECMS X0 
 JMP L_CHACVOG
 MOV A, X1
 SUB A, #V_220VNUM
 BSET F_220V
 B0BTS1 FC
 BCLR F_220V
 RET