📄 缝焊控制.asm
字号:
MOV DATA_OUT,#93H ;读键值锁存器指令(地址13H)
LCALL SEND
LCALL RECEIVE ;读出数据
MOV TEMP,DATA_IN
MOV A,#0FH
ANL A,TEMP
ADD A,ACC
ADD A,TEMP
MOV DPTR,#TAB3
JMP @A+DPTR
TAB3: LJMP DO_SELECT ;项目选择键
LJMP DO_POINT ;光标键
LJMP DO_ADD ;加法按
LJMP DO_DEC ;减法键
LJMP DO_PRO_NUM ;程序号按键
LJMP DO_CNT ;计数器
; LJMP DO_CHARGE
LJMP DO_ENTER ;输入确认
LJMP DOWELD ;焊接/实验/加压按键
; LJMP DO_ANGLE ;改变触发角度,观察充电电压
;从而得出控制表格
LJMP DO_SPF_NUM ;附加功能按键
DOKEYEND: RET ;LJMP DOKEY
NOP
NOP
NOP
RET
LJMP EEE
NOP
NOP
NOP
LJMP EEE
NOP
NOP
NOP
LJMP EEE
ORG 0300H
NOP
NOP
NOP
;---------------------------------------------
;程序号校验
;---------------------------------------------
BZJ_ADJUSTK: CJNE A,#00H,BZJ_JUSTK1
BZJ_JUSTK2: MOV A,#01H
RET
BZJ_JUSTK1: JC BZJ_JUSTK2
CJNE A,#0FH,BZJ_JUSTK3
BZJ_JUSTK3: JC BZJ_JUSTK4
MOV A,#0FH
BZJ_JUSTK4: RET
;-------------------------------------------------------------
;项目选择按键
;加压—上升-焊接1-电流1-冷却1-焊接2-电流2-冷却2-重复次数-
;焊接3-电流3-下降——维持——休止
;打点数——生产数
;-------------------------------------------------------------
DO_SELECT: MOV A,REG_STA1
ORL A,#00H
MOV B,A
MOV A,REG_STA2
ORL A,#03FH
ORL A,B
JNZ SELECT_SU
SETB REG_START
NOP
SELECT_SU: JNB REG_START,SELECT_H1
CLR REG_START
SETB REG_SU
CLR REG_SPOT_NOW
CLR REG_WORK_NOW
MOV SET_ADDR,#TSU ;加压时间
AJMP SELECT_END_TIME
SELECT_H1: JNB REG_SU,SELECT_W1
CLR REG_SU
SETB REG_H1
CLR REG_W1
CLR REG_SPOT_NOW
CLR REG_WORK_NOW
MOV SET_ADDR,#TW1 ;焊接1时间
AJMP SELECT_END_TIME
SELECT_W1: JNB REG_H1,SELECT_CL1
JB REG_W1,SELECT_CL1
SETB REG_W1
SETB REG_HEAT
CLR REG_SPOT_NOW
CLR REG_WORK_NOW
MOV SET_ADDR,#HEAT1_L ;热量1
AJMP SELECT_END_HEAT
SELECT_CL1: CLR REG_HEAT
JNB REG_W1,SELECT_HO
CLR REG_W1
CLR REG_H1
SETB REG_CL1
MOV SET_ADDR,#TCL1
AJMP SELECT_END_TIME
SELECT_HO: JNB REG_CL1,SELECTRP
CLR REG_CL1
CLR REG_H1
SETB REG_HO
CLR REG_SPOT_NOW
CLR REG_WORK_NOW
MOV SET_ADDR,#THOLD ;维持时间
AJMP SELECT_END_TIME
SELECTRP: JNB REG_HO,SELECT_SET_SPOT
CLR REG_HO
SETB REG_RP
CLR REG_SPOT_NOW
CLR REG_WORK_NOW
MOV SET_ADDR,#TOFF ;休止时间
AJMP SELECT_END_TIME
;-----------------------------------------------------------
;1、打点数设定2、打点数实际3、生产数设定4、生产数实际
;-----------------------------------------------------------
SELECT_SET_SPOT:SETB BIT_CNT
JNB REG_RP,SELECT_NOW_SPOT
CLR REG_RP
SETB REG_SPOT_SET
MOV FLASH1,#0FFH
MOV FLASH2,#0F9H
CALL DISP_SET_SPOT
MOV SET_ADDR,#SET_SPOT
LJMP SELECT_END1
SELECT_NOW_SPOT:JNB REG_SPOT_SET,SELECT_WORK_SET
CLR REG_SPOT_SET
SETB REG_SPOT_NOW
MOV FLASH1,#0FFH
MOV FLASH2,#0FFH
LCALL RDFR2401
CALL DISP_N_SPOT
CALL DD_SC_DISP
CALL DISPLAY
RET
SELECT_WORK_SET:JNB REG_SPOT_NOW,SELECT_WORK_NOW
CLR REG_SPOT_NOW
SETB REG_WORK_SET
CALL DISP_SET_WORK
MOV NUM_1,LED9
MOV NUM_2,LEDA
MOV NUM_3,LEDB
MOV NUM_4,LEDC
MOV FLASH1,#0FFH
MOV FLASH2,#0E1H
CALL DISPLAY
RET
SELECT_WORK_NOW:JNB REG_WORK_SET,SELECT_REPEAT
CLR REG_WORK_SET
SETB REG_WORK_NOW
MOV FLASH1,#0FFH
MOV FLASH2,#0FFH
CALL DISP_N_WORK
CALL DD_SC_DISP
CALL DISPLAY
RET
SELECT_REPEAT: CLR REG_START
SETB REG_SU
CLR REG_SPOT_NOW
CLR REG_WORK_NOW
MOV SET_ADDR,#TSU
AJMP SELECT_END_TIME
;-----------------------------------------------------------
SELECTERR: MOV A,#0FFH
MOV FLASH1,A
MOV FLASH2,A
AJMP WORK_SET_DISP
SELECT_END_TIME:MOV FLASH1,#0FFH
MOV FLASH2,#0F9H
MOV R1,SET_ADDR
MOV A,@R1
AJMP TIME_DISPLAY
SELECT_END_HEAT:MOV FLASH1,#0FFH
MOV FLASH2,#0F1H
LCALL HEAT_RD_DISP ;设定电压显示程序
SELECT_END1: LCALL DATA_JUST
MOV A,#00H
MOV NUM_1,A
MOV NUM_2,A
MOV NUM_3,A
MOV NUM_4,A
MOV A,#21H ;显示"_"
MOV LEDC,A
MOV LEDB,A
MOV LED9,A
MOV LEDA,A
LCALL DISPLAY
NOP
NOP
RET
;-------------------------------------------------
;设定生产数显示程序
;-------------------------------------------------
WORK_SET_DISP: MOV SET_SCL,SET_DATAL
MOV SET_SCH,SET_DATAH
CALL WRTO2401
WORK_NOW_DISP: MOV R2,SET_SCL
MOV R3,SET_SCH
CALL WORK_DISP_COM
CALL DISPLAY
AJMP SELECT_END1
;---------------------------------------------
;DO_ENTER输入确认键
;---------------------------------------------
DO_ENTER: JNB SETTING,PRO_ENTER_RTN
CLR SETTING
JB REG_HEAT,HEAT_SETDISPLAY ;热量设定显示程序
JB REG_SPOT_SET,SPOT_DISPLAY ;打点计数器设定值显示程序
JB REG_WORK_SET,WORK_SET_DISP;生产数设定值显示程序
CALL WRTO2401
MOV R0,SET_ADDR
MOV A,@R0
AJMP TIME_DISPLAY
NOP
NOP
NOP
PRO_ENTER_RTN: RET
;-----------------------------------------------
;时间显示程序
;-----------------------------------------------
TIME_DISPLAY: MOV DISP_BUFF,A
CALL TIME_DIS
AJMP SELECT_END1
;------------------------------------------------
;焊接程序调用时显示时间程序
;------------------------------------------------
DIS_TIME: MOV DISP_BUFF,TSU
TIME_DIS: LCALL DIS_CODE_PRO
MOV LED2,DISP_CODEL
MOV LED3,DISP_CODEH
RET
;-----------------------------------------------
;设定打点数显示程序
;-----------------------------------------------
SPOT_DISPLAY: MOV A,SET_SPOT
CALL SPOT_DISP_COM
CALL WRTO2401
CALL DISPLAY
AJMP SELECT_END1
;-----------------------------------------------
;设定焊接电压显示程序
;-----------------------------------------------
HEAT_SETDISPLAY:MOV HEAT1_L,SET_DATAL
MOV HEAT1_H,SET_DATAH
HEAT_WR_COM: CALL WRTO2401
HEAT_RD_DISP: CALL DIS_SET_HEAT
MOV FLASH2,#0F1H
AJMP SELECT_END1
;------------------------------------------------
;DIS_HEAT,电容电压设定值显示程序,将16进制代码转换成BCD码,
;并送入显示缓冲区
;------------------------------------------------
DIS_SET_HEAT:
MOV R2,HEAT1_L
MOV R3,HEAT1_H
DISP_HEAT_COM: LCALL HEX16TOBCD
MOV A,R5
ANL A,#0FH
JZ NHEAT_DISP1
MOV LED6,A
MOV A,R4
SWAP A
ANL A,#0FH
NHEAT_DISP2: MOV LED5,A
MOV A,LED5
ADD A,#10H
MOV LED5,A
NHEAT_DISP3: MOV A,R4
ANL A,#0FH
MOV LED4,A
DIS_SET_HEAT_ERR:RET
NHEAT_DISP1: MOV LED6,#20H
MOV A,R4
SWAP A
ANL A,#0FH
JNZ NHEAT_DISP2
MOV LED5,#20H
SJMP NHEAT_DISP3
;---------------------------------------------
;DO_POINT,光标选择键,用于设定参数
;---------------------------------------------
DO_POINT: MOV A,FLASH2
SETB C
RRC A
CPL A
JB REG_HEAT,DO_POINT4
JNB BIT_CNT,DO_POINT2
JB REG_WORK_SET,DO_POINT1
DO_POINT2: MOV DPTR,#TAB_TIME
DO_POINT3: MOVC A,@A+DPTR
CLR C
RLC A
CPL A
MOV FLASH2,A
MOV A,NUM_1
ORL A,NUM_2
ORL A,NUM_3
ORL A,NUM_4
JNZ DO_POINT10
DO_POINT13: JB FLASH2.1,DO_POINT11
CLR A
SUBB A,NUM_1
JNZ DO_POINT10
MOV LED9,#00H
MOV A,#21H
MOV LEDA,A
MOV LEDB,A
MOV LEDC,A
SJMP DO_POINT10
DO_POINT11: JB FLASH2.2,DO_POINT12
CLR A
SUBB A,NUM_2
JNZ DO_POINT12
MOV LEDA,#00H
MOV A,#21H
MOV LEDB,A
MOV LEDC,A
SJMP DO_POINT10
DO_POINT12: JB FLASH2.3,DO_POINT14
CLR A
SUBB A,NUM_3
JNZ DO_POINT10
MOV LEDB,#00H
MOV LEDC,#21H
SJMP DO_POINT10
DO_POINT14: JB FLASH2.4,DO_POINT10
MOV LEDC,#00H
DO_POINT10: LCALL DISPLAY
RET
DO_POINT1: MOV DPTR,#TAB_WORK
AJMP DO_POINT3
DO_POINT4: MOV DPTR,#TAB_HEAT
AJMP DO_POINT3
;-------------------------------------------------------
TAB_WORK: DB 00H,02H,04H,00H,08H,00H,00H,00H
DB 0FH,00H,00H,00H,00H,00H,00H,01H
;-------------------------------------------------------
TAB_TIME: DB 00H,02H,03H,01H,00H,01H,00H,00H
DB 0FH,00H,00H,00H,00H,00H,00H,00H
;-------------------------------------------------------
TAB_HEAT: DB 00H,02H,04H,00H,07H,00H,00H,01H
DB 07H,00H,00H,00H,00H,00H,00H,00H
;----------------------------------------------------------
;加法按键
;----------------------------------------------------------
DO_ADD: NOP
MOV A,FLASH2
CJNE A,#0FFH,DO_ADD8
RET
DO_ADD8: SETB SETTING
DO_ADD9: JB FLASH2.1,DO_ADD10
INC NUM_1
MOV A,NUM_1
LCALL BZJ_ADJUST
MOV NUM_1,A
MOV LED9,NUM_1
SJMP ADD_WORK
DO_ADD10: JB FLASH2.2,DO_ADD11
INC NUM_2
MOV A,NUM_2
LCALL BZJ_ADJUST
MOV NUM_2,A
MOV LEDA,NUM_2
SJMP ADD_WORK
DO_ADD11: JB FLASH2.3,DO_ADD12
INC NUM_3
MOV A,NUM_3
LCALL BZJ_ADJUST
MOV NUM_3,A
MOV LEDB,NUM_3
SJMP ADD_WORK
DO_ADD12: JB FLASH2.4,ADD_WORK
INC NUM_4
MOV A,NUM_4
LCALL BZJ_ADJUST
MOV NUM_4,A
MOV LEDC,NUM_4
ADD_WORK: JB REG_HEAT,ADD_HEAT
JNB BIT_CNT,ADD_TIME
JB REG_WORK_SET,ADD_DO_SC
;-----------------------------------------------------
;时间设定处理
;-----------------------------------------------------
ADD_TIME: MOV R1,#NUM_1
LCALL BZJ_HBIN
LCALL BCDTOHEX
MOV A,R2
MOV SET_DATAL,A
MOV R1,SET_ADDR
MOV @R1,A
LCALL DISPLAY
RET
;-----------------------------------------------------
;热量设定范围20。0到99。9
;-----------------------------------------------------
ADD_HEAT: MOV R1,#NUM_1
LCALL BZJ_HBIN
MOV R4,02H
MOV R1,#NUM_3
LCALL BZJ_HBIN
MOV R5,02H
LCALL TWO_BCDTOHEX
MOV SET_DATAL,R4
MOV SET_DATAH,R5
LCALL DISPLAY
RET
;-----------------------------------------------------
;生产数设定0-9999
;-----------------------------------------------------
ADD_DO_SC: MOV R1,#NUM_1
LCALL BZJ_HBIN
MOV R4,02H
MOV R1,#NUM_3
LCALL BZJ_HBIN
MOV R5,02H
LCALL TWO_BCDTOHEX
MOV SET_DATAL,R4
MOV SET_DATAH,R5
LCALL DISPLAY
RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -