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

📄 缝焊控制.asm

📁 这是我设计的一款缝焊机程序
💻 ASM
📖 第 1 页 / 共 5 页
字号:
;---------------------------------------------------------
;特殊功能寄存器(CPU)内部定义
;---------------------------------------------------------
;	T2CON		EQU	0C8H
;	TH2		EQU	0CCH
;	TL2		EQU	0CDH
;	T2MOD		EQU	0C9H
;	RCAP2H		EQU	0CBH
;	RCAP2L		EQU	0CAH
;	TR2		BIT	0CAH
        WDT_CR		DATA	0E1H
        STACK           EQU     07H
        CHABIAO_L       EQU     0C8H
        CHABIAO_H       EQU     00H
;---------------------------------------------------------
	SET_WINDOW0	EQU	30H	;个位设定窗口
	SET_WINDOW1	EQU	31H	;十位设定窗口
	SET_WINDOW2	EQU	32H	;百位设定窗口
	SET_WINDOW3	EQU	33H	;千位设定窗口
	UPDW_WORD1	EQU	34H
	UPDW_WORD2	EQU	35H
	DISP_BUFF	EQU	36H
	DISP_CODEL	EQU	37H
	DISP_CODEH	EQU	38H
        PRE_SCALE_WORD	EQU	39H
        HEAT_L          EQU	3AH    ;公共处理查表底字节
	HEAT_H          EQU	3BH    ;公共处理查表高程序
	R5_1            EQU	3CH
	NOW_PLUSE       EQU	3DH        ;现在脉冲数
	TSTATE		EQU	3FH	;状态寄存器
	TIME		EQU	3EH	;时间寄存器
	BIT_COUNT	EQU	40H
	SLA		EQU	41H
	SUBA		EQU	42H
	TEMP		EQU	43H
	NUMBYTE		EQU	44H
	SET_ADDR	EQU	45H	;设定地址
	SET_DATAL	EQU	46H	;显示设定内容
	SET_DATAH	EQU	47H
	DISP_NUM	EQU	48H	;显示递增次数
	PRO_NUM		EQU	49H	;程序号寄存器
	SPF_NUM		EQU	4AH	;附加功能寄存器
	NUM_1		EQU	4BH	;个位
	NUM_2		EQU	4CH	;十位
	NUM_3		EQU	4DH	;百位
	NUM_4		EQU	4EH	;千位
	NUM_5		EQU	4FH	;万位
;---------------------------------------------------------
;以下定义显示缓冲单元
;---------------------------------------------------------
	LED0		EQU	50H	;第1位数码管
	LED1		EQU	51H	;第2位数码管
	LED2		EQU	52H	;第3位数码管
	LED3		EQU	53H	;第4位数码管
	LED4		EQU	54H	;第5位数码管

        LED5		EQU	55H	;第6位数码管
	LED6		EQU	56H	;第7位数码管
	LED8		EQU	57H	;第8位数码管
	LED7		EQU	58H	;第9位数码管
	LED9		EQU	59H	;第10位数码管
	LEDA		EQU	5AH	;第11位数码管
	LEDB		EQU	5BH	;第12位数码管
	LEDC		EQU	5CH	;第13位数码管
	LED13		EQU	5DH	;第14位数码管
	LED14		EQU	5EH	;第15位数码管
	LED15		EQU	5FH	;第16位数码管
;---------------------------------------------------------
	R2_WB         	EQU	60H
	R6_WB		EQU	61H     ;
	R7_WB		EQU	62H     ;
        FOOT_TIMES	EQU	63H     ;脚踏开关踩下次数
	LOOP_TIMES	EQU	64H     ;循环次数
        R2_DLY          EQU     65H
        R3_DLY          EQU     66H
        SET_LP_TIMES    EQU     05H
        MBUF_ADDR	EQU	70H
	SET_SPOT	EQU	73H	;打点数设定值
	NOW_SPOT	EQU	74H	;打点数实际植
	SET_SCL		EQU	75H	;生产数设定值L
	SET_SCH		EQU	76H	;生产数设定值H
	NOW_SCL		EQU	77H	;生产数H
	NOW_SCH		EQU	78H	;生产数L
	HEAT1_L		EQU	79H     ;焊接热量低位
	HEAT1_H		EQU	7AH     ;焊接热量高位
	TSU		EQU	7BH	;加压时间
	TW1		EQU	7CH	;焊接时间
        TCL1            EQU     7DH     ;冷却时间
        TCL2            EQU     7DH     ;冷却2
	THOLD		EQU	7EH	;维持时间
	TOFF		EQU	7FH	;休止时间
;-------------------------------------------------------
;硬件I/O定义
;-------------------------------------------------------
        CLK		BIT	P0.1     ;728X时钟线3.5	;0.1
	DAT		BIT	P0.0     ;728X数据线3.7	;0.0
	KEY		BIT	P0.2     ;728X键盘线3.3	;0.2
	SDA  		BIT  	P0.7	 ;IIC 数据线2.0	;0.7
	SCL  		BIT  	P0.6     ;IIC 时钟线2.1	;0.6
	AD_CLK		BIT	P3.4	 ;AD转换器时钟信号
	AD_OUT		BIT	P0.4	 ;AD数据输出
	AD_CS		BIT	P0.3	 ;AD片选信号
	AD_IN		BIT	P0.5	 ;AD数据输入
;-------------------------------------------------------
;位址定义及分配
;-------------------------------------------------------
	REG_ZT		EQU	20H
        REG_HEAT        BIT     REG_ZT.0        ;热量设定标志
        SETTING         BIT     REG_ZT.1        ;设定参数标志
        WENBIAO	        BIT	REG_ZT.2
        SHUIBIAO	BIT	REG_ZT.3
        XBIAO           BIT     REG_ZT.4
;			EQU	21H
;			EQU	22H
;			EQU	23H
;			EQU	24H
	FOOTSTART	BIT	24H.0		;脚踏开关启动信号
	QI_SIGAL	BIT	24H.1		;中断用标志
	_ANGLE_BIT	BIT	24H.2		;导通角标志
	UNREAPT		BIT	24H.3		;单点焊接标志位
        ST_PRESS_BIT    BIT     24H.4           ;第一次踩脚踏标志
        ON_W_M_BIT      BIT     24H.5           ;第二次踩脚踏标志
        OFF_W_M_BIT     BIT     24H.6           ;第三次踩脚踏标志
        DONE_BIT        BIT     24H.7           ;信号已经处理标志
	OUTFLAG		EQU	25H		;输出寄存器
	FWELD		BIT	OUTFLAG.4	;通电信号位
	FEND		BIT	OUTFLAG.5	;通电结束
	WELDING		BIT	OUTFLAG.3	;可控硅触发信号
	SOL1		BIT	OUTFLAG.2	;SOL1
	SOL2		BIT	OUTFLAG.7	;SOL2
	WRNBEEP		BIT	OUTFLAG.1	;报警封鸣器
	FDRLY		BIT	OUTFLAG.6	;放电继电器
	MOTOR_RUN	BIT	OUTFLAG.0	;电机转动

	STATE_BIT1	EQU	26H		;内部标志位
	FACDC		BIT	STATE_BIT1.0	;交直流切换开关
	FSDZD		BIT	STATE_BIT1.1	;手动/自动切换开关
	FMLTFOOT	BIT	STATE_BIT1.2	;多个脚踏控制
	BIT_CNT		BIT	STATE_BIT1.3	;计数器标志位
	BIT_COUNTER	BIT	STATE_BIT1.4
	TEMP_BIT	BIT	STATE_BIT1.5
	FT_IN_BIT	BIT	STATE_BIT1.6     ;有效的输入标志
	BIT_DOCNT	BIT	STATE_BIT1.7


	STATE_BIT2	EQU	27H		;用户设定标志
	SPOT_UP		BIT	STATE_BIT2.0	;打点数计数器到
	WORK_UP		BIT	STATE_BIT2.1	;生产数计数器到
	UP_DOWN_BIT	BIT	STATE_BIT2.6

	FLASH2		EQU	28H		;闪烁位2
	FLASH1		EQU	29H		;闪烁位1
	DATA_OUT	EQU	2AH		;数据输出
	DATA_IN		EQU	2BH		;数据读入
	REG_STA1	EQU	2CH		;状态寄存器1
	REG_STA2	EQU	2DH		;状态寄存器2
	REG_STA3	EQU	2EH		;状态寄存器3
	REG_STA4	EQU	2FH		;状态寄存器4
	REG_SV1		BIT	REG_STA1.0	;SOL1		,LED1
	REG_SV2		BIT	REG_STA1.1	;SQL2		,LED2
	REG_RUN		BIT	REG_STA1.2	;运行		,LED3
	REG_ERR		BIT	REG_STA1.3	;故障		,LED4

	REG_SU		BIT	REG_STA1.4	;加压时间	,LED5
        REG_W1          BIT     REG_STA1.6      ;               ,LED6
	REG_H1		BIT	REG_STA1.5	;焊接时间1	,LED7
        REG_CL1         BIT     REG_STA1.7
        ;---------------------------------------------------------------
        REG_HO		BIT	REG_STA2.0	;维持时间	,LED13
	REG_RP		BIT	REG_STA2.1	;休止时间	,LED14
        REG_WORK_SET	BIT	REG_STA2.3	;打点数		,led15
	REG_WORK_NOW	BIT	REG_STA2.2	;生产数		,LED16
	REG_SPOT_SET	BIT	REG_STA2.5	;设定值		,LED17
	REG_SPOT_NOW	BIT	REG_STA2.4	;现在值		,LED18
	REG_TEST	BIT	REG_STA2.6	;试验		,LED21
	REG_WELD	BIT	REG_STA2.7	;焊接		,LED19
        ;---------------------------------------------------------------------

	REG_SPFUN	BIT	REG_STA3.1	;特殊功能	,LED22
	REG_CNT		BIT	REG_STA3.2	;计数器		,LED23
	REG_SV3		BIT	REG_STA3.3	;SOL3		,LED24
	REG_PRO		BIT	REG_STA3.4	;程序号
	REG_START	BIT	REG_STA3.5	;开始选择位
	ACK		BIT	REG_STA3.6
	REG_SET_HEAT	BIT	REG_STA3.7	;热量设定
;-------------------------------------------------------------
;主程序,程序不断再此循环扫描
;-------------------------------------------------------------
	ORG	0000H
	LJMP	ZC
	ORG	0003H
	LJMP	QI
	ORG	000BH
	LJMP	TA
	ORG	0023H
	LJMP	SINT

	ORG	0030H
ZC: 	LCALL 	RCX	;初始化子程序
ZC4: 	JB 	footstart,ZC30
	SJMP	ZC2
ZC30:	JNB 	QI_SIGAL,ZC2
     	SETB 	ET0
ZC2: 	JNB 	footstart,ZC1
	NOP
	NOP
ZC8:    CALL    WTDRST
	NOP
	SJMP	ZC4
ZC1: 	LCALL 	ZC3
     	SJMP 	ZC2
     	NOP
     	NOP
     	NOP
     	LJMP 	EEE
     	NOP
     	NOP
     	NOP
     	LJMP	EEE
;---------------------------------------------
;ZC3,程序扫描外部信号程序
;---------------------------------------------
ZC3:	        JB	FSDZD,ZC3B
	        CLR	A
	        MOV	TCON,A
	        MOV	IE,A
                CALL    WTDRST
WELD_YES:       NOP
                NOP
                CALL    BAO_DISP
                LCALL	DOKEY
                LCALL	SCANFOOT
	        RET
ZC3B:	        CLR	A
	        MOV	TCON,A
	        MOV	IE,A
	        LCALL	BRR		;串口检查
	        LCALL	DATA_JUST
	        CALL	EXT_TEST		;焊接/实验开关检测
                JB      ACC.6,WELD_YES1
                CLR     REG_WELD
WELD_YES1:      LCALL	SCANFOOT
	        RET

;----------------------------------------------
;SCANFOOT脚踏开关扫描程序
;----------------------------------------------
SCANFOOT:	JB	FOOTSTART,IA4
		JB	WORK_UP,IA4
		CLR	QI_SIGAL
		MOV	IE,#00H
		MOV	TCON,#05H
		MOV	IP,#00H
		MOV	TMOD,#11H
                CALL    DIGIN       ;脚踏信号检测
                JB      FT_IN_BIT,IA5
                SJMP    IA4
IA5:  ;          SETB    FOOTSTART       ;取消此标志
                CALL    EXT_TEST
                JB      ACC.7,IA8_FN
                SETB    TEMP_BIT
                CALL    BAO_DISP
                AJMP    IA4
;-------------------------------------------------------------------
;缝焊程序第一次脚踏判断
;-------------------------------------------------------------------
IA8_FN:         JB      ST_PRESS_BIT,FN_START
IA8_WAIT_LP:    CALL    DIGIN
                JB      FT_IN_BIT,IA8_WAIT
                INC     LOOP_TIMES
                CLR     C
                MOV     A,LOOP_TIMES
                SUBB    A,#SET_LP_TIMES+5H
                JC      IA8_WAIT_LP
                MOV     LOOP_TIMES,#00H
                INC     FOOT_TIMES
                RET
IA8_WAIT:       MOV     LOOP_TIMES,#00H
                CALL    WTDRST
                SETB    ST_PRESS_BIT
                CLR     SOL1
                CLR     FDRLY
                SETB    REG_RUN
                SETB    REG_SV1
                MOV     P1,OUTFLAG
                SJMP    IA8_WAIT_LP
IA4:            MOV     LOOP_TIMES,#00H
                RET
FN_START:       CALL    DIGIN
                JNB      FT_IN_BIT,IA4
                INC      LOOP_TIMES
                CLR      C
                MOV      A,LOOP_TIMES
                SUBB     A,#SET_LP_TIMES+5H
                JC       FN_START
                INC      FOOT_TIMES
                MOV      LOOP_TIMES,#00H
;                SETB     ON_W_M_BIT
                SETB     FOOTSTART
;-------------------------------------------------------------------
IA8:            CLR     TEMP_BIT
                JNB	FMLTFOOT,IA10B              ;工作模式
		MOV	PRO_NUM,R2_WB               ;根据启动序列,调用相应程序
		LCALL	RDFR2401
		CALL	DATA_JUST
IA10B:        	SETB	REG_RUN
		CLR	REG_ERR
		LCALL	START_DISPLAY
		MOV	R0,#TSU
IA7:		CLR	A		;判断设定的时间参数
		ADD	A,@R0
		ADD	A,@R0
		CJNE	A,#00H,IA6
		INC	R0
		CJNE	R0,#TOFF,IA7
		SJMP	IA4
IA6:		MOV	TSTATE,R0
		MOV	TIME,A
		LJMP	QIA
IA20:		SETB	REG_SV1
		SETB	REG_RUN
		SETB	SOL1
		MOV	P1,OUTFLAG
;		LCALL	DISPLAY_LED
	        CALL    FOOT_TEST
                CJNE	A,#00H,IA20
		CLR	REG_SV1
		CLR	REG_RUN
		LCALL	DISPLAY_LED
		CLR	SOL1
		MOV	P1,OUTFLAG
		SJMP    IA4
;-----------------------------------------------------------------
;初始化程序,其作用是读出EEPROM数据,初始化显示程序,确定显示芯片的工作状态
;------------------------------------------------------------------
RCX:    MOV	SP,#STACK+02H
	MOV	P1,#0F7H
	MOV	R1,#20H
	MOV	R2,#80H
	CLR	A
RCX1:	MOV	@R1,A
	INC	R1
	DJNZ	R2,RCX1
        MOV     FOOT_TIMES,A
        CLR     DONE_BIT
	LCALL	WKMD		;调用工作模式
	JB	FSDZD,RCXB
	CLR	FOOTSTART
	CLR	WORK_UP
	MOV	OUTFLAG,#0F7H	;禁止所有信号输出
	SETB	REG_WELD
	MOV	FLASH1,#0FFH
	MOV	FLASH2,#0FFH    ;关闭所有闪烁
	LCALL	INIT728X	;初始化BC728X芯片
	MOV	PRO_NUM,#01H
	LCALL	RDFR2401	;从EEPROM中读取设定参数
	LCALL	DATA_JUST	;数据校对
        MOV	REG_STA1,#00H
	MOV	REG_STA2,#10010100B
        SETB    REG_H1
        SETB    REG_WELD
	LCALL	START_DISPLAY		;参数显示
	RET
RCXB:	MOV	FLASH1,#0FFH	;NO
	MOV	FLASH2,#0FFH	;NO
	LCALL	INIT728X	;NO
	LCALL	RDFR2401	;NO
	LCALL	DATA_JUST	;NO
	LCALL	DISPLAY		;NO
	LCALL	BSTART		;初始化串口程序
	CLR	FOOTSTART
	CLR	WORK_UP
	SETB	REG_SV3		;设定在运行状态下
	SETB	REG_WELD
	MOV	OUTFLAG,#0FFH	;禁止所有信号输出
	MOV	P1,OUTFLAG
	LCALL	DATA_JUST
	RET
;------------------------------------------------------------------
;工作模式选择判断
;------------------------------------------------------------------
WKMD:	MOV	R7,#010H
WKMD1:	MOV	P3,#0FFH
	NOP
	NOP
	MOV	A,P3
	NOP
	DJNZ	R7,WKMD1
WORKDC:	JB	0E7H,WORKAC
	CLR	FACDC		;次级整流
	SJMP	WORKML
WORKAC:	SETB	FACDC		;工频交流
WORKML:	JB	0E6H,WORKSL
	SETB	FMLTFOOT
	SJMP	WRMDEND
WORKSL:	CLR	FMLTFOOT
WRMDEND:RET
;------------------------------------
;初始化728X
;------------------------------------
INIT728X:	MOV     R6,#50
INIT728X1:	MOV     R7,#255		;延时以确保BC728X完成复位
INIT728X2:	DJNZ    R7,INIT728X2
		DJNZ    R6,INIT728X1
		MOV     DATA_OUT,#12H	;BC728X初始化
		CALL    SEND
		MOV     DATA_OUT,#88H	;设定为164模式, 不反相
		CALL    SEND
		MOV	DATA_OUT,#11H
		CALL	SEND
		MOV	DATA_OUT,#080H
		CALL	SEND
		RET
;-------------------------------------------------------------
;是否有按键,响应相应的功能键处理
;-------------------------------------------------------------
;-------------------------------------------------------------
;是否有按键,响应相应的功能键处理
;-------------------------------------------------------------
DOKEY:		JB   	KEY,DOKEYEND	;等待按键
		CLR	EA

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -