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

📄 缝焊控制.asm

📁 这是我设计的一款缝焊机程序
💻 ASM
📖 第 1 页 / 共 5 页
字号:
;--------------------------------------------------
;减法处理
;--------------------------------------------------

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 + -