;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;三個電機(jī)同時復(fù)位程序;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;送料電機(jī)先復(fù)位
SDFW:JB KA,$ ;復(fù)位開關(guān)按下后,3臺電機(jī)同時復(fù)位
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;左右電機(jī)M1開始復(fù)位 (M1、M2、M3同時復(fù)位) 2013.3.17更新
SDGFW:LCALL SONGLIAO
LCALL ZUOYOU
LCALL XUANZHUAN
;;;;;;;;;;;;;;;;;;;;;;;;;各電機(jī)各自復(fù)位檢測程序
KKM1:
JB TT1,KKM2 ;檢測送料電機(jī)M1探頭
MOV CPA0,#00H ;設(shè)定脈沖數(shù)
MOV CPA1,#00H ;設(shè)定脈沖數(shù)
MOV CPA2,#00H ;設(shè)定脈沖數(shù)
KKM2:
JB TT2,KKM3 ;檢測左右電機(jī)M2探頭
MOV CPB0,#00H ;設(shè)定脈沖數(shù)
MOV CPB1,#00H ;設(shè)定脈沖數(shù)
MOV CPB2,#00H ;設(shè)定脈沖數(shù)
KKM3:
JB TT3,FWWC ;檢測旋轉(zhuǎn)電機(jī)M3探頭
MOV CPC0,#00H ;設(shè)定脈沖數(shù)
MOV CPC1,#00H ;設(shè)定脈沖數(shù)
MOV CPC2,#00H ;設(shè)定脈沖數(shù)
FWWC:JB TT1,KKM1;手動復(fù)位完成
JB TT2,KKM2
JB TT3,KKM3
;**************************************************手動復(fù)位完成
;***********************************************************
; M1電機(jī)運行程序
;*************************************************************
MC:PUSH ACC
PUSH PSW
MOV TL0,TLAA ;時鐘定時器低位 A8 042H
MOV TH0,THAA ;時鐘定時器高位 0FFH
;;;;;;;;;;;;;;;M1電機(jī)運行程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV A,CPA2 ;判斷是否結(jié)束運轉(zhuǎn)
CJNE A,#00H,NEXTA ;不相等則轉(zhuǎn)移
MOV A,CPA1
CJNE A,#00H,NEXTA
MOV A,CPA0
CJNE A,#00H,NEXTA
SETB JSBZA
MOV TLAA,#30H ;恢復(fù)啟動速度500HZ
MOV THAA,#0F8H
LJMP NEXT
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
NEXTA:JNB JSBZA,KKJIANSA ;判斷是否加速
;***************************************
;步進(jìn)電機(jī)加速程序 ;
;***************************************
MOV A,THAA ;
CJNE A,THA,PDA ;判斷是否需要加速 ;
MOV A,TLAA ;
CJNE A,TLA,PDA ;判斷是否需要加速 ;
CLR JSBZA ;
LJMP DJAYX ;
PDA:JNC DJAYX ;電機(jī)A運行 ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DJAJS: ;加速斜率 ;
MOV A,TLAA ; ;
CLR C ;
ADDC A,XL1 ; ;
MOV TLAA,A ; ;
JNC DJAYX ;; ;
INC THAA ; ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
KKJIANSA:JB JSBZA,DJAYX;判斷是否減速
;***************************************
;步進(jìn)電機(jī)減速程序 ;
;***************************************
MOV A,CPA2 ;
CJNE A,#00H,PDAA ;判斷是否到達(dá)減速時刻; ;
MOV A,CPA1 ;
CJNE A,#00H,PDAA ;判斷是否到達(dá)減速時刻; ;
MOV A,CPA0 ;判斷是否到達(dá)減速時刻;
CJNE A,#0FFH,PDAA ; ;
LJMP DJAJIANS ; ;
PDAA:JNC DJAYX ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DJAJIANS: ;減速斜率 ; ;
CLR C ;
MOV A,TLAA ;
SUBB A,XL1 ;
MOV TLAA,A ;
JNC DJAYX ;;
DEC THAA ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DJAYX:CPL BJA ;輸出步進(jìn)電機(jī)M1的脈沖
NEXT:POP PSW
POP ACC
RETI
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;M2電機(jī)運行程序
;*************************************************************
NT0:
PUSH ACC
PUSH PSW
MOV TL1,TLBB ;定時器T0的中斷響應(yīng)程序
MOV TH1,THBB
;;;;;;;;;;;;;;;M2電機(jī)運行程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV A,CPB2 ;判斷是否結(jié)束運轉(zhuǎn)
CJNE A,#00H,NEXTB
MOV A,CPB1
CJNE A,#00H,NEXTB
MOV A,CPB0
CJNE A,#00H,NEXTB
SETB JSBZB
MOV TLBB,#00H ;恢復(fù)啟動速度,1000HZ
MOV THBB,#0FDH
LJMP NEXT2
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
NEXTB:JNB JSBZB,KKJIANSB ;判斷是否加速
;***************************************
;步進(jìn)電機(jī)加速程序 ;
;***************************************
MOV A,THBB ;
CJNE A,THB,PDB ;判斷是否需要加速 ;
MOV A,TLBB ;
CJNE A,TLB,PDB ;判斷是否需要加速 ;
CLR JSBZB ;
LJMP DJBYX ;
;
PDB:JNC DJBYX ;電機(jī)A運行 ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DJBJS: ;加速斜率 ;
MOV A,TLBB ; ;
CLR C ;
ADDC A,XL2 ; ;
MOV TLBB,A ; ;
JNC DJBYX ;; ;
INC THBB ; ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
KKJIANSB:JB JSBZB,DJBYX;判斷是否減速
;***************************************
;步進(jìn)電機(jī)減速程序 ;
;***************************************
MOV A,CPB2 ;
CJNE A,#00H,PDBB ;判斷是否到達(dá)減速時刻;
MOV A,CPB1 ;
CJNE A,#00H,PDBB ;判斷是否到達(dá)減速時刻;
MOV A,CPB0 ;判斷是否到達(dá)減速時刻;
CJNE A,#0FFH,PDBB; ;
LJMP DJBJIANS ;
PDBB:JNC DJBYX ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DJBJIANS: ;減速斜率 ; ;
CLR C ;
MOV A,TLBB ;
SUBB A,XL2 ;
MOV TLBB,A ;
JNC DJBYX ;;
DEC THBB ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DJBYX: ;電機(jī)B運行程序
CLR C
MOV A,CPB0 ;
SUBB A,#01H ; 脈沖低位減一
MOV CPB0,A
JNC BJWB ; 檢測是否有借位,借位向下
CLR C
MOV A,CPB1 ;;
SUBB A,#01H; 脈沖高位減一
MOV CPB1,A
JNC BJWB ; 檢測是否有借位,借位向下。
CLR C
MOV A,CPB2 ;;
SUBB A,#01H; 脈沖高位減一
MOV CPB2,A
JNC BJWB ; 檢測是否有借位,借位向下。
BJWB:CPL BJB ;輸出步進(jìn)電機(jī)M2的脈沖
NEXT2:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
JIES:
POP PSW
POP ACC
RETI ;中斷返回
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;PCA模塊中斷服務(wù)程序
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
PCA:
PUSH ACC
PUSH PSW
JNB CCF1,PCA0
CLR CCF1
MOV A,CCAP1L
ADD A,#20H
MOV CCAP1L,A
MOV A,CCAP1H
ADDC A,#10H
MOV CCAP1H,A
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;M3電機(jī)運行程序
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
PCA0:CLR CCF0;模塊0中斷標(biāo)志位清零
MOV A,CCAP0L;重新賦值
ADD A,TLCC
MOV CCAP0L,A
MOV A,CCAP0H
ADDC A,THCC
MOV CCAP0H,A
;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;M3電機(jī)運行程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV A,CPC2 ;判斷是否結(jié)束運轉(zhuǎn)
CJNE A,#00H,NEXTC
MOV A,CPC1
CJNE A,#00H,NEXTC
MOV A,CPC0
CJNE A,#00H,NEXTC
SETB JSBZC
MOV TLCC,#0D0H ;恢復(fù)啟動速度,500HZ
MOV THCC,#07H
LJMP NEXT3
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
NEXTC:JNB JSBZC,KKJIANSC ;判斷是否加速
;***************************************
;步進(jìn)電機(jī)加速程序 ;
;***************************************
MOV A,THC ;
CJNE A,THCC,PDC ;判斷是否需要加速 ; ;
MOV A,TLC ;
CJNE A,TLCC,PDC ;判斷是否需要加速 ;
PDCX:CLR JSBZC ;
LJMP DJCYX ; ;
PDC:JNC PDCX ;電機(jī)A運行 ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DJCJS: ;加速斜率 ;
CLR C ;
MOV A,TLCC ;
SUBB A,XL3 ;
MOV TLCC,A ;
JNC DJCYX ;
DEC THCC ;
LJMP DJCYX ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
KKJIANSC:JB JSBZC,DJCYX;判斷是否減速
;***************************************
;步進(jìn)電機(jī)減速程序 ;
;***************************************
MOV A,CPC2 ;
CJNE A,#00H,PDCC ;判斷是否到達(dá)減速時刻; ;
MOV A,CPC1 ;
CJNE A,#00H,PDCC ;判斷是否到達(dá)減速時刻; ;
MOV A,CPC0 ;判斷是否到達(dá)減速時刻;
CJNE A,#0FFH,PDCC; ;
LJMP DJCJIANS ; ;
PDCC:JNC DJCYX ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DJCJIANS: ;減速斜率 ; ;
MOV A,TLCC ; ;
CLR C ;
ADDC A,XL3 ; ;
MOV TLCC,A ; ;
JNC DJCYX ;; ;
INC THCC ; ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DJCYX: ;電機(jī)3運行程序
CLR C
MOV A,CPC0 ;
SUBB A,#01H ; 脈沖低位減一
MOV CPC0,A
JNC BJWBC ; 檢測是否有借位,借位向下
CLR C
MOV A,CPC1 ;;
SUBB A,#01H; 脈沖高位減一
MOV CPC1,A
JNC BJWBC ; 檢測是否有借位,借位向下。
CLR C
MOV A,CPC2 ;;
SUBB A,#01H; 脈沖高位減一
MOV CPC2,A
JNC BJWBC ; 檢測是否有借位,借位向下。
BJWBC:CPL BJC ;輸出步進(jìn)電機(jī)M2的脈沖
PCAW:
POP PSW
POP ACC
RETI
請高手幫我看看這個程序執(zhí)行三個電機(jī)復(fù)位的時候有時候檢測不到第一個接近開關(guān)第一個電機(jī)到達(dá)原點停不下來,有時候檢測不到第二個接近開關(guān),第二個電機(jī)到達(dá)原點停不下來。程序也不好怎么改了。但是單獨一個一個復(fù)位時是正常的。我用的是stc12c5a60s2的,誰能解釋一下,謝謝了,弄了很久了,還是不清楚問題在哪里。
| 歡迎光臨 (http://m.raoushi.com/bbs/) | Powered by Discuz! X3.1 |