⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 缝焊控制.asm

📁 这是我设计的一款缝焊机程序
💻 ASM
📖 第 1 页 / 共 5 页
字号:
		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 + -