📄 缝焊控制.asm
字号:
;--------------------------------------------------
;减法处理
;--------------------------------------------------
DO_DEC: NOP
MOV A,FLASH2
CJNE A,#0FFH,DO_DEC8
RET
DO_DEC8: SETB SETTING
DO_DEC9: JB FLASH2.1,DO_DEC10
DEC NUM_1
MOV A,NUM_1
LCALL BZJ_ADJUST
MOV NUM_1,A
MOV LED9,NUM_1
SJMP DEC_END
DO_DEC10: JB FLASH2.2,DO_DEC11
DEC NUM_2
MOV A,NUM_2
LCALL BZJ_ADJUST
MOV NUM_2,A
MOV LEDA,NUM_2
SJMP DEC_END
DO_DEC11: JB FLASH2.3,DO_DEC12
DEC NUM_3
MOV A,NUM_3
LCALL BZJ_ADJUST
MOV NUM_3,A
MOV LEDB,NUM_3
SJMP DEC_END
DO_DEC12: JB FLASH2.4,DEC_END
DEC NUM_4
MOV A,NUM_4
LCALL BZJ_ADJUST
MOV NUM_4,A
MOV LEDC,NUM_4
DEC_END: LJMP ADD_WORK
;---------------------------------------------
;修改程序号
;---------------------------------------------
DO_PRO_NUM: INC PRO_NUM
MOV A,PRO_NUM
CJNE A,#10H,DO_PRO_NUM1
DO_PRO_NUM1: JNC DO_PRO_NUM2
SJMP DO_PRO_NUM3
DO_PRO_NUM2: MOV PRO_NUM,#01H
DO_PRO_NUM3: LCALL RDFR2401
MOV DISP_BUFF,PRO_NUM
LCALL DIS_CODE_PRO
MOV LED0,DISP_CODEL
MOV LED1,DISP_CODEH
MOV A,TSU
LCALL TIME_DISPLAY
LCALL SPOT_DISPLAY
LCALL HEAT_RD_DISP
LCALL WORK_NOW_DISP
RET
;---------------------------------------------
;程序变换以及显示代码
;---------------------------------------------
DIS_CODE_PRO: MOV R2,DISP_BUFF
LCALL HEXTOBCD
MOV A,R2
SWAP A
ANL A,#0FH
JZ DIS_CODE_PRO1
MOV DISP_CODEH,A
SJMP DIS_CODE_PRO2
DIS_CODE_PRO1: MOV DISP_CODEH,#20H
DIS_CODE_PRO2: MOV A,R2
ANL A,#0FH
MOV DISP_CODEL,A
RET
;---------------------------------------------
;附加功能按键
;---------------------------------------------
DO_SPF_NUM: INC SPF_NUM
MOV A,SPF_NUM
CJNE A,#20H,DO_SPF_NUM1
DO_SPF_NUM1: JNC DO_SPF_NUM2
SJMP DO_SPF_NUM3
DO_SPF_NUM2: MOV SPF_NUM,#01H
DO_SPF_NUM3: MOV DISP_BUFF,SPF_NUM
LCALL DIS_CODE_PRO
MOV LED7,DISP_CODEL
MOV LED8,DISP_CODEH
DO_SPF_NUM6: MOV R3,#05H
MOV R0,#52H
MOV A,#20H
DO_SPF_NUM4: MOV @R0,A
INC R0
DJNZ R3,DO_SPF_NUM4
LCALL DISPLAY
RET
DO_SPF_NUM5: MOV LED8,#20H
AJMP DO_SPF_NUM6
;---------------------------------------------
;DOWELD,此功能键的作用是焊接/试验/加压按键之用
;---------------------------------------------
DOWELD: JNB REG_WELD,DO_TEST
CLR REG_WELD
SETB REG_TEST
AJMP DO_KEY_WELDEND
DO_TEST: JNB REG_TEST,DO_PRESS
CLR REG_TEST
SETB REG_WELD
AJMP DO_KEY_WELDEND
DO_PRESS: SETB REG_WELD
CLR REG_TEST
DO_KEY_WELDEND: CALL DISPLAY_LED
RET
;------------------------------------------
;DOCNT,设定显示是焊接时间还是计数器
;------------------------------------------
COUNTER1: MOV A,#00H
MOV NOW_SCL,A
MOV NOW_SCH,A
; SETB REG_WORK_NOW
CLR WORK_UP
RST_COUNT_COM: LCALL WRTO2401
LCALL DISP_N_SPOT
CALL DISP_N_WORK
CALL DD_SC_DISP
RET
DO_CNT: ; LCALL BAO_RET
JB WORK_UP,COUNTER1
DO_CNT_COM: JNB REG_SPOT_NOW,COUNTER1
MOV A,#00H
MOV NOW_SPOT,A
CALL WRTO2401
SJMP RST_COUNT_COM
;------------------------------------------
;将设定的焊接参数进行判断是否在允许环围之内
;------------------------------------------
DATA_JUST:
MOV A,PRO_NUM
LCALL PRONUM_JUST
MOV PRO_NUM,A
MOV HEAT_L,HEAT1_L ;热量1检查
MOV HEAT_H,HEAT1_H
LCALL HEAT_JUST
MOV HEAT1_L,HEAT_L
MOV HEAT1_H,HEAT_H
MOV R7,#04H
MOV R0,#TSU
CYC_JUST: MOV A,@R0
LCALL SJ_JUST
MOV @R0,A
INC R0
DJNZ R7,CYC_JUST
COUNTER_JUST: MOV A,SET_SPOT
CJNE A,#00H,CNT_JUST1
SETB SPOT_UP
MOV A,SET_SCH
CJNE A,#00H,CNT_JUST2
MOV A,SET_SCH
CJNE A,#00H,CNT_JUST2
CLR BIT_DOCNT
RET
CNT_JUST1: CLR SPOT_UP
CNT_JUST2: SETB BIT_DOCNT
RET
;---------------------------------------
TCL1_JUST: CJNE A,#0FFH,TCL1_JUST1
CLR A
RET
TCL1_JUST1: CJNE A,#09H,TCL1_JUST2
TCL1_JUST2: JC TCL1_JUST3
MOV A,#09H
TCL1_JUST3: RET
;-----------------------------------------
;规范判断
;-----------------------------------------
PRONUM_JUST: CJNE A,#01H,PRONUM_JUST1
PRONUM_JUST2: MOV A,#01H
RET
PRONUM_JUST1: JC PRONUM_JUST2
CJNE A,#10H,PRONUM_JUST3
PRONUM_JUST3: JC PRONUM_JUST4
MOV A,#0FH
PRONUM_JUST4: RET
;--------------------------------------------
;设定热量比较程序
;--------------------------------------------
HEAT_JUST: CLR C
MOV A,HEAT_L
SUBB A,#0C8H ;下限比较,200
MOV A,HEAT_H
SUBB A,#00H
JC SET_HEAT_ERR
CLR C
MOV A,HEAT_L
SUBB A,#0E7H ;上限比较,999
MOV A,HEAT_H
SUBB A,#03H
JNC SET_HEAT_ERR2
; CALL WRTO2401
RET
SET_HEAT_ERR: MOV HEAT_L,#0C8H
MOV HEAT_H,#00H
AJMP SET_HEAT_ERR3
SET_HEAT_ERR2: MOV HEAT_L,#0E7H
MOV HEAT_H,#03H
SET_HEAT_ERR3: SETB REG_ERR
RET
;------------------------------------------
;时间参数设定判断
;------------------------------------------
SJ_JUST: CJNE A,#0FFH,SJ_JUST1
CLR A
RET
SJ_JUST1: CJNE A,#63H,SJ_JUST2
SJ_JUST2: JC SJ_JUST3
MOV A,#63H
SJ_JUST3: RET
;------------------------------------
;中断用程序
;------------------------------------
QI: NOP
NOP
CALL WTDRST
CLR WELDING
MOV P1,OUTFLAG ;触发脉冲关断
MOV TL0,#00H
MOV TH0,#00H
CLR TR0
; SETB TR0 ;TIMER0 RUN
CLR EX0
CLR ET0
MOV R7,TSTATE
CJNE R7,#TW1,QI24
LCALL WC
LJMP QI13
QI24: NOP
NOP
CLR TR0
CJNE R7,#TSU,QI14
QI14: CLR QI_SIGAL
CJNE R7,#TOFF,QI12
LCALL GESOL
QI_LS1: MOV R6,#08H
QI_LS2: CALL DIGIN
CALL WTDRST
CJNE A,#00H,QI_LS1
DJNZ R6,QI_LS2
; CALL DIGIN
; JB FT_IN_BIT,QI14
; JB WORK_UP,QIEND
LJMP QI54
QIEND: CLR FOOTSTART
LJMP QI95
QI12: JNC QIY4
LJMP QI54
QIY4: LJMP EEE
QI13: SETB TR0
SETB QI_SIGAL ;12H是焊接程序段标志位
MOV A,R2
CLR TR0 ;根据设定焊接热量控制可控硅
MOV A,R2
ADD A,TL0
MOV TL0,A
MOV A,R3
ADDC A,TH0
JNC QII1
SETB _ANGLE_BIT ;34H电流控制角太小标志位
MOV TL0,#0FFH
MOV TH0,#0FFH
SJMP QII3
QII1: MOV TH0,A
CLR _ANGLE_BIT
QII3: SETB TR0
QI54: DEC TIME
MOV A,TIME
MOV R0,TSTATE
CJNE A,#00H,QI88 ;判断程序段是否已经完成
SJMP QI57 ;YES,JUMP QI57
QI88: MOV A,TSTATE
CJNE A,#TOFF,QI89 ;判断程序段是否已经走到休止工步
MOV A,TOFF
ADD A,TOFF
DEC A
CJNE A,TIME,QI90
SJMP QI89
QI90: CALL FOOT_TEST
CJNE A,#00H,QI92
CLR FOOTSTART
SJMP QIW5
QI92: CJNE @R0,#00H,QI89
LJMP QIW5
QI89: LJMP QI51
QI57: ;-------------------------------------------------
;缝焊程序2007/3/27
;-------------------------------------------------
CJNE R0,#TCL1,QI57_1
CALL FT_TS1
JB OFF_W_M_BIT,QI57_1
MOV R0,#TSU
SJMP QI82
;-------------------------------------------------
QI57_1: ;CLR OFF_W_M_BIT
; CLR ON_W_M_BIT
CJNE R0,#TOFF,QI82
MOV A,TOFF
CJNE A,#01H,QI93
CALL DIGIN
JZ QI81 ;无启动信号时,程序到QI81
SJMP QI92
CJNE A,#0FH,QI92
SJMP QI81
QI93: CJNE @R0,#00H,QI81
LJMP QIW5
QI82: INC R0
SJMP QI1
QI81: MOV R0,#TSU
QI1: CLR A
ADD A,@R0
JNZ QI6
CJNE R0,#TOFF,QI91
MOV TSTATE,R0
MOV TIME,#02H
SETB UNREAPT
SJMP QI94
QI91: INC R0
SJMP QI1
QI6: CLR UNREAPT
CLR A
ADD A,@R0
ADD A,@R0
MOV TSTATE,R0
MOV TIME,A
QI94: LCALL QIA
QI51: SETB EA
SETB EX0
MOV A,TSTATE
LJMP QI95
QIW5: LCALL GESOL
CLR FOOTSTART
CLR TR0
CLR A
MOV TCON,A
MOV IE,A
MOV TMOD,A
MOV IP,A
JNB UNREAPT,QI95
QIX8: MOV R6,#08H
QIX7: CALL DIGIN
CJNE A,#00H,QIX8
DJNZ R6,QIX7
CLR FOOTSTART
QI95: MOV SP,#STACK+02H
MOV 09H,#00H
MOV 08H,#33H
JNB QI_SIGAL,QIE4
SETB ET0
CLR EX0
SJMP QIF8
QIE4: MOV A,#80H
QIE8: DEC A
CJNE A,#00H,QIE8
CLR IE0
QIF8: CLR TF0
CLR EX1
RETI
;----------------------------------------
WC: MOV HEAT_L,HEAT1_L
MOV HEAT_H,HEAT1_H
LCALL WW
LCALL WU2
RET
;---------------------------------------------------------
;以下程序是变更后的程序,入口减去200,再进行查表处理
;出口依然是R3(H)R2(L)
;---------------------------------------------------------
WW: JNB FACDC,WW1
MOV DPTR,#TAB1
SJMP WW2
WW1: MOV DPTR,#TAB2
WW2: CLR C
MOV A,HEAT_L
SUBB A,#CHABIAO_L
MOV HEAT_L,A
MOV A,HEAT_H
SUBB A,#CHABIAO_H
MOV HEAT_H,A
CLR C
MOV A,HEAT_L
RLC A
MOV HEAT_L,A
MOV A,HEAT_H
RLC A
MOV HEAT_H,A
MOV A,HEAT_L
ADD A,DPL
MOV DPL,A
MOV A,HEAT_H
ADDC A,DPH
MOV DPH,A
CLR A
MOVC A,@A+DPTR
MOV R3,A
INC DPTR
CLR A
MOVC A,@A+DPTR
MOV R2,A
RET
;---------------------------------------------------------
;查表之后,进行极限判断
;---------------------------------------------------------
WU2: CJNE R3,#0E3H,WU3
WU3: JC WU4
CJNE R3,#0FBH,WU5
CJNE R2,#0C0H,WU5
WU5: JC WU6
WU8: MOV R3,#0FBH
MOV R2,#0B3H
SJMP WU6
WU4: CJNE R3,#10H,WU7
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -