📄 缝焊控制.asm
字号:
;---------------------------------------------------------
;特殊功能寄存器(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 + -