图片:
共用电控箱系统:以下为源代码:
;通用电控多套程序(designed by tone.lei at 10:33 11/27/2008)
;(I/O点定义) p0.0 p0.1 p0.2 p0.3 接拨码开关 R2:拨码开关暂存器
S1 EQU P1.0 ;第1个信号
S2 EQU P1.1 ;第2个信号
S3 EQU P1.2 ;第3个信号
S4 EQU P1.3 ;第4个信号
S5 EQU P1.4 ;第5个信号
S6 EQU P1.5 ;第6个信号
S7 EQU P1.6 ;第7个信号
S8 EQU P1.7 ;第8个信号
S9 EQU P3.4 ;第9个信号
S10 EQU P3.5 ;第10个信号
S11 EQU P3.6 ;第11个信号
S12 EQU P3.7 ;第12个信号
START EQU P3.0 ;启动信号
RESET EQU P3.1 ;复位信号
INT0 EQU P3.2 ;中断0信号
INT1 EQU P3.3 ;中断1信号
ONE0 EQU P2.4 ;拨码开关码1
ONE1 EQU P2.5 ;拨码开关码2
ONE2 EQU P2.6 ;拨码开关码4
ONE3 EQU P2.7 ;拨码开关码8
STEP1 EQU P0.0 ;第1个输出点
STEP2 EQU P0.1 ;第2个输出点
STEP3 EQU P0.2 ;第3个输出点
STEP4 EQU P0.3 ;第4个输出点
STEP5 EQU P0.4 ;第5个输出点
STEP6 EQU P0.5 ;第6个输出点
STEP7 EQU P0.6 ;第7个输出点
STEP8 EQU P0.7 ;第8个输出点
;(主程序开始)
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP INTER0
ORG 0013H
LJMP INTER1
ORG 0030H
MAIN: JB ONE0, NEXT1
JB ONE1, NEXT2
JB ONE2, NEXT3
MOV R2, #07H
LJMP PRO7
NEXT3: MOV R2, #03H
LJMP PRO3
NEXT2: JB ONE2, NEXT20
MOV R2, #05H
LJMP PRO5
NEXT20: JB ONE3, NEXT21
MOV R2, #09H
LJMP PRO9
NEXT21: MOV R2, #01H
LJMP PRO1
NEXT1: JB ONE1, NEXT10
JB ONE2, NEXT11
MOV R2, #06H
LJMP PRO6
NEXT11: MOV R2, #02H
LJMP PRO2
NEXT10: JB ONE2, NEXT12
MOV R2, #04H
LJMP PRO4
NEXT12: JB ONE3, NEXT13
MOV R2, #08H
LJMP PRO8
NEXT13: MOV R2, #00H
LJMP PRO0
;(程序0执行 [电测机程序])
PRO0: ACALL UP
CLR STEP1 ;启动压入气缸
ACALL DELAY
ACALL DELAY
ACALL DELAY
ACALL DELAY
CLR STEP2 ;启动折弯气缸
ACALL DELAY ;延时0.1秒
ACALL DELAY ;延时0.1秒
ACALL DELAY
SETB STEP1 ;断开探针气缸
ACALL DELAY
ACALL DELAY
ACALL DELAY
SETB STEP2 ;断开舌片气缸
AJMP PRO0 ;返回
;(程序1执行 [张强之 连线机程序])
PRO1: ACALL UP
CLR STEP1 ;启动推料气缸
ACALL S1DEL ;推料气缸动点延时
CLR STEP2 ;启动压料气缸
ACALL S2DEL ;压料气缸动点延时
ACALL S2DEL ;压料气缸动点延时
SETB STEP1 ;断开推料气缸
SETB STEP2 ;断开压料气缸
ACALL DELAY
ACALL DELAY
ACALL DELAY
LJMP PRO1 ;返回
;(程序2执行 [郭金武之PJD电测机程序])
PRO2: ACALL UP
CLR STEP2 ;启动压料气缸
ACALL DELAY ;压料气缸动点延时
ACALL DELAY
ACALL DELAY
JB INT1,LEDNG ;LED1 TEST
JB S10,LEDNG ;LED2 TEST
CLR P2.0
CLR P2.1
CLR P2.2
CLR P2.3
ACALL DELAY
MOV A,P1 ;将P1口的值读入暂存器ACC
XRL A,#55H
JNZ SHNG ;检测有无短路
SETB P2.0
SETB P2.1
SETB P2.2
SETB P2.3
ACALL DELAY
CLR STEP1
ACALL DELAY
ACALL DELAY
ACALL DELAY
JB S1,OPENNG ;开始检测导通
ACALL DEL10
JB S2,OPENNG
ACALL DEL10
JB S3,OPENNG
ACALL DEL10
JB S4,OPENNG
ACALL DEL10
JB S5,OPENNG
ACALL DEL10
JB S6,OPENNG
ACALL DEL10
JB S7,OPENNG
ACALL DEL10
JB S8,OPENNG
AJMP PRO2GO
LEDNG: CLR STEP6
AJMP PRO2NG
SHNG: CLR STEP4
AJMP PRO2NG
OPENNG: CLR STEP3
PRO2NG: JB RESET,PRO2NG
AJMP RRSETQ
PRO2GO: CLR STEP5
RRSETQ: SETB STEP1
SETB STEP3
SETB STEP4
SETB STEP6
SETB P2.0
SETB P2.1
SETB P2.2
SETB P2.3
ACALL DELAY
ACALL DELAY
SETB STEP2
ACALL DELAY
ACALL DELAY
SETB STEP5
AJMP PRO2 ;返回
;(程序3执行 [张强之SLS-13SR1B 电测机程序])
PRO3: JNB P3.3,PRO3
PRO3K: JB P3.3,PRO3K
ACALL DEL10
JB P3.3,PRO3K
CLR P0.1
ACALL DELAY
ACALL DELAY
ACALL DELAY
ACALL DELAY
CLR P2.0 ;开启短路测试
CLR P2.1
CLR P2.2
CLR P2.3
ACALL DELAY
MOV A,P1 ;将P1口的值读入暂存器ACC
XRL A,#55H
JNZ PRO3SH ;检测7PIN有无短路
JB P3.0,PRO3SH
JNB P3.1,PRO3SH
JB P3.4,PRO3SH
JNB P3.5,PRO3SH
JB P3.6,PRO3SH
JNB P3.7,PRO3SH
SETB P2.0
SETB P2.1
SETB P2.2
SETB P2.3
CLR P0.0 ;开始断路测试
ACALL DELAY
ACALL DELAY
ACALL DELAY
ACALL DELAY
JB P1.0,PRO3SO
JB P1.1,PRO3SO
JB P1.2,PRO3SO
JB P1.3,PRO3SO
JB P1.4,PRO3SO
JB P1.5,PRO3SO
JB P1.7,PRO3SO
JB P3.0,PRO3SO
JB P3.1,PRO3SO
JB P3.4,PRO3SO
JB P3.5,PRO3SO
JB P3.6,PRO3SO
JB P3.7,PRO3SO
AJMP PRO3OK
PRO3SH: CLR P0.2
AJMP PRO3RS
PRO3SO: CLR P0.4
AJMP PRO3RS
PRO3RS: JB P3.2,PRO3RS
SETB P0.2
SETB P0.4
SETB P2.0
SETB P2.1
SETB P2.2
SETB P2.3
AJMP PRO3GO
PRO3OK: CLR P0.3
PRO3GO: SETB P0.0
ACALL DELAY
SETB P0.1
ACALL DELAY
ACALL DELAY
SETB P0.3
AJMP PRO3 ;返回
;(程序4执行 [杨道军之SIM-06HA扫料带程序])
PRO4: JNB P1.0,PRO4
MOV P0,#0FFH
PRO4OR1:JB P1.2,PRO4OR1
PRO4OR2:JB P1.4,PRO4OR2
PRO4OR3:JB P1.6,PRO4OR3
PRO4S: JB P1.0,PRO4S
ACALL DEL10
JB P1.0,PRO4S
CLR P0.2 ;启动推入气缸
PRO4TR: JB P1.3,PRO4TR
ACALL DELAY
ACALL DELAY
CLR P0.1 ;启动压气缸
ACALL DELAY
CLR P0.0 ;启动扫料支撑气缸
ACALL DELAY
ACALL DELAY
ACALL DELAY
MOV R0,#00H
PRO4A: CPL P0.3 ;启动扫料气缸
JB P0.3,PRO4B
PRO4C: jb p1.5,PRO4C
PRO4CC: jb p1.7,PRO4CC
ajmp PRO4D
PRO4B: jb p1.4,PRO4B
PRO4BB: jb p1.6,PRO4BB
inc R0
PRO4D: cjne R0,#7,PRO4A;检测扫料次数如果不够则继续扫料
SETB P0.3 ;复位扫料气缸
ACALL DELAY
SETB P0.1 ;复位压气缸
ACALL DELAY
SETB P0.0 ;复位支撑气缸
ACALL DELAY
ACALL DELAY
SETB P0.2 ;复位压气缸
AJMP PRO4 ;返回
;(程序5执行 [杨道军之BTP-02SC连线机程序])
pro5: jnb p1.0,pro5
pro5s: jb p1.0,pro5s ;检测启动按钮是否按下如不是则反复侦测状态
lcall del10
jb p1.0,pro5s
clr p0.0 ;1 启动推料气缸
acall delay
acall delay
clr p0.1 ;2 启动压合气缸
acall delay
clr p0.3 ;3 启动舌片气缸/复位推料.压合气缸
setb p0.0
setb p0.1
acall delay
clr p0.2 ;4 启动探针气缸
acall delay
acall delay
acall delay
jb p1.2,pro5q1
ajmp pro5ng
pro5q1: acall delay
setb p0.3 ;5 复位舌片气缸
acall delay
jnb p1.2,pro5q2
ajmp pro5ng
pro5q2: setb p0.2 ;6 复位探针气缸
acall delay
ajmp pro5ok
pro5ng: setb p0.2
setb p0.3
acall delay
clr p0.4 ;7 NG 排除气缸
inc r4
ajmp pro5rs
pro5ok: mov r4,#00h
pro5rs: acall delay
acall delay
acall delay
setb p0.4
cjne r4,#3,pro5fu
pro5uf: jb p1.1,pro5uf
mov r4,#00h
pro5fu: ajmp main ;返回
;(程序6执行 [XX之 连线机程序])
PRO6: ACALL UP
LJMP MAIN ;返回
;(程序7执行 [XX之 连线机程序])
PRO7: ACALL UP
LJMP MAIN ;返回
;(程序8执行 [XX之 连线机程序])
PRO8: ACALL UP
LJMP MAIN ;返回
;(程序9执行 [XX之 连线机程序])
PRO9: ACALL UP
LJMP MAIN ;返回
;(中断0程序)
INTER0: JNB INT0,INTER0
ACALL DEL10
JNB INT0,INTER0
TEST0: JB RESET,TEST0
RETI
;(中断1程序)
INTER1: JNB INT1,INTER0
ACALL DEL10
JNB INT1,INTER0
TEST1: JB RESET,TEST1
RETI
;(启动开关程序)
UP: JNB START,UP
TEST: JB START,TEST
ACALL DEL10
JB START,TEST
RET
;(0.1S延时程序)
DELAY: MOV R5,#200
DELT1: MOV R6,#250
DJNZ R6,$
DJNZ R5,DELT1
RET
;(0.01S延时程序)
DEL10: MOV R5,#20
DELT2: MOV R6,#250
DJNZ R6,$
DJNZ R5,DELT2
RET
;(S1信号延迟输入)
S1DEL: JB S1,S1DEL
ACALL DELAY
JB S1,S1DEL
RET
;(S2信号延迟输入)
S2DEL: JB S2,S2DEL
ACALL DELAY
JB S2,S2DEL
RET
;(S3信号延迟输入)
S3DEL: JB S3,S3DEL
ACALL DELAY
JB S3,S3DEL
RET
;(S4信号延迟输入)
S4DEL: JB S4,S4DEL
ACALL DELAY
JB S4,S4DEL
RET
;(S5信号延迟输入)
S5DEL: JB S5,S5DEL
ACALL DELAY
JB S5,S5DEL
RET
;(S6信号延迟输入)
S6DEL: JB S6,S6DEL
ACALL DELAY
JB S6,S6DEL
RET
;(S7信号延迟输入)
S7DEL: JB S7,S7DEL
ACALL DELAY
JB S7,S7DEL
RET
;(S8信号延迟输入)
S8DEL: JB S8,S8DEL
ACALL DELAY
JB S8,S8DEL
RET
;(S9信号延迟输入)
S9DEL: JB S9,S9DEL
ACALL DELAY
JB S9,S9DEL
RET
;(S10信号延迟输入)
S10DEL: JB S4,S4DEL
ACALL DELAY
JB S4,S4DEL
RET
;(S11信号延迟输入)
S11DEL: JB S11,S11DEL
ACALL DELAY
JB S11,S11DEL
RET
;(S12信号延迟输入)
S12DEL: JB S12,S12DEL
ACALL DELAY
JB S12,S12DEL
RET
END
[ 此帖被阿少杰在2009-04-20 20:03重新编辑 ]