圖片:
共用電控箱系統:以下為源代碼:
;通用電控多套程序(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重新編輯 ]