📄 rsr_hbs.asm
字号:
;==========================================================================
USER_F1 BIT PSW.1H
GUN_TOUCH BIT P3.2 ;焊枪接触
HAND_SWITCH EQU P3.3 ;焊枪启动焊接
TOUCH EQU P3.4
READY EQU P3.5 ;充电完成
CHARGE EQU P1.5
DIS_CHARGE EQU P1.3
ERR_LED EQU P1.2
GRN_LED EQU P1.1
RLY_DIS_CHARGE EQU P1.0
;==========================================================================
ORG 000H
MAIN: NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
MOV P1,#0FFH ;禁止所有信号输出
MOV P3,#0FFH
CLR ERR_LED
MOV SP,#40H
MOV R6,#0FFH
CLR F0
CLR F1
MOV R2,#0FFH
LCALL DELAY_1MS
SETB ERR_LED
LCALL TEST_PRO
CLR RLY_DIS_CHARGE
MAIN_LOOP: LCALL Q00A5
JB GUN_TOUCH,MAIN_LP1
LCALL Q0173
MAIN_LP1: JNB P1.6,MAIN_LP2
JNB TOUCH,MAIN_LP3
SJMP MAIN_LOOP
MAIN_LP3: JNB HAND_SWITCH,MAIN_LOOP
MOV R2,#32H
LCALL DELAY_1MS
MOV A,#64H
MAIN_LP4: JB TOUCH,MAIN_LOOP
JNB HAND_SWITCH,MAIN_LP2
MOV R2,#64H
LCALL DELAY_1MS
DEC A
JNZ MAIN_LP4
SJMP MAIN_LOOP
MAIN_LP2: JNB HAND_SWITCH,MAIN_LP5
SJMP MAIN_LOOP
MAIN_LP5: MOV A,R6
JZ MAIN_LP6
SJMP MAIN_LOOP
MAIN_LP6: JB TOUCH,MAIN_LOOP
LCALL Q00FE
LJMP MAIN_LOOP
;=====================================================
;测试程序
;=====================================================
TEST_PRO: CLR ERR_LED
MOV R2,#0FFH
LCALL DELAY_1MS
CLR HAND_SWITCH
MOV R2,#0FFH
LCALL DELAY_1MS
SETB HAND_SWITCH
CLR GRN_LED
MOV R2,#0FFH
LCALL DELAY_1MS
SETB GRN_LED
MOV R2,#0FFH
LCALL DELAY_1MS
SETB ERR_LED
MOV R2,#0FFH
LCALL DELAY_1MS
CLR ERR_LED
MOV R2,#0FFH
LCALL DELAY_1MS
SETB ERR_LED
MOV R2,#0FFH
LCALL DELAY_1MS
CLR ERR_LED
MOV R2,#0FFH
LCALL DELAY_1MS
SETB ERR_LED
RET
;=====================================================
Q00A5: MOV R3,#0FFH
MOV R4,#34H
MOV 0AH,#0FFH
Q00AC: JB GUN_TOUCH,Q00B2
LCALL Q0173
Q00B2: CLR C
MOV A,R3
SUBB A,#01H
MOV R3,A
MOV A,R4
SUBB A,#00H
MOV R4,A
JNZ Q00C4
MOV A,R3
JNZ Q00C4
LCALL Q01C1
RET
;=====================================================
Q00C4: DJNZ 0AH,Q00CF
MOV 0AH,#0FFH
MOV A,R6
JZ Q00CF
CPL GRN_LED
Q00CF: JNB READY,Q00DD
SETB CHARGE
CLR GRN_LED
MOV R6,#00H
SETB F1
CLR F0
RET
;=====================================================
Q00DD: JB GUN_TOUCH,Q00E3
LCALL Q0173
Q00E3: CLR CHARGE
MOV R2,#01H
LCALL DELAY_1MS
MOV A,R6
JZ Q00EF
SJMP Q00AC
Q00EF: JNB P1.6,Q00F8
JB TOUCH,Q00AC
SETB CHARGE
RET
;=====================================================
Q00F8: JB HAND_SWITCH,Q00AC
SETB CHARGE
RET
;=====================================================
Q00FE: CLR ERR_LED
JB P1.7,Q010A
CLR P1.4
MOV R2,#64H
LCALL DELAY_1MS
Q010A: CLR DIS_CHARGE
SETB P1.4
MOV R2,#64H
LCALL DELAY_1MS
SETB DIS_CHARGE
MOV R2,#64H
LCALL DELAY_1MS
SETB GRN_LED
MOV R6,#0FFH
JB GUN_TOUCH,Q0138
JNB GUN_TOUCH,$
MOV R2,#0FFH
LCALL DELAY_1MS
MOV R2,#0FFH
LCALL DELAY_1MS
MOV R2,#0FFH
LCALL DELAY_1MS
MOV R2,#64H
LCALL DELAY_1MS
Q0138: MOV R2,#0FFH
LCALL DELAY_1MS
MOV R2,#0FFH
LCALL DELAY_1MS
JB P1.6,Q014A
JNB HAND_SWITCH,$
SJMP Q0154
Q014A: JNB TOUCH,$
SETB HAND_SWITCH
MOV R2,#0FFH
LCALL DELAY_1MS
Q0154: JNB HAND_SWITCH,Q014A
JNB TOUCH,Q014A
JNB HAND_SWITCH,Q014A
CLR F1
JNB TOUCH,Q014A
JNB HAND_SWITCH,Q014A
SETB ERR_LED
RET
;=====================================================
DELAY_1MS: MOV R1,#02H
Q016A: MOV R0,#0E1H
DJNZ R0,$
DJNZ R1,Q016A
DJNZ R2,DELAY_1MS
RET
;=====================================================
Q0173: MOV B,P1
SETB CHARGE
SETB DIS_CHARGE
SETB P1.4
CLR ERR_LED
MOV A,#0FFH
Q0180: DEC A
JZ Q0195
JNB GUN_TOUCH,Q0180
MOV R2,#0AH
LCALL DELAY_1MS
JNB GUN_TOUCH,Q0195
ORL B,#0C0H
MOV P1,B
RET
;=====================================================
Q0195: CLR ERR_LED ;死循环
SETB GRN_LED
SETB RLY_DIS_CHARGE
MOV R2,#0FFH
LCALL DELAY_1MS
MOV R2,#0FFH
LCALL DELAY_1MS
MOV R2,#0FFH
LCALL DELAY_1MS
SETB ERR_LED
MOV R2,#0FFH
LCALL DELAY_1MS
CLR ERR_LED
MOV R2,#0FFH
LCALL DELAY_1MS
SETB ERR_LED
MOV R2,#0FFH
LCALL DELAY_1MS
SJMP Q0195
;================================================================
Q01C1: MOV B,P1
MOV 0CH,#02H
MOV 0BH,#0FFH
Q01CA: SETB RLY_DIS_CHARGE
SETB GRN_LED
SETB CHARGE
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -