;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;三個(gè)電機(jī)同時(shí)復(fù)位程序;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;送料電機(jī)先復(fù)位 SDFW:JB KA,$ ;復(fù)位開(kāi)關(guān)按下后,3臺(tái)電機(jī)同時(shí)復(fù)位 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;左右電機(jī)M1開(kāi)始復(fù)位 (M1、M2、M3同時(shí)復(fù)位) 2013.3.17更新 SDGFW:LCALL SONGLIAO LCALL ZUOYOU LCALL XUANZHUAN ;;;;;;;;;;;;;;;;;;;;;;;;;各電機(jī)各自復(fù)位檢測(cè)程序 KKM1: JB TT1,KKM2 ;檢測(cè)送料電機(jī)M1探頭 MOV CPA0,#00H ;設(shè)定脈沖數(shù) MOV CPA1,#00H ;設(shè)定脈沖數(shù) MOV CPA2,#00H ;設(shè)定脈沖數(shù)
KKM2: JB TT2,KKM3 ;檢測(cè)左右電機(jī)M2探頭 MOV CPB0,#00H ;設(shè)定脈沖數(shù) MOV CPB1,#00H ;設(shè)定脈沖數(shù) MOV CPB2,#00H ;設(shè)定脈沖數(shù)
KKM3: JB TT3,FWWC ;檢測(cè)旋轉(zhuǎn)電機(jī)M3探頭 MOV CPC0,#00H ;設(shè)定脈沖數(shù) MOV CPC1,#00H ;設(shè)定脈沖數(shù) MOV CPC2,#00H ;設(shè)定脈沖數(shù)
FWWC:JB TT1,KKM1;手動(dòng)復(fù)位完成 JB TT2,KKM2 JB TT3,KKM3 ;**************************************************手動(dòng)復(fù)位完成
;*********************************************************** ; M1電機(jī)運(yùn)行程序 ;************************************************************* MC:PUSH ACC PUSH PSW MOV TL0,TLAA ;時(shí)鐘定時(shí)器低位 A8 042H MOV TH0,THAA ;時(shí)鐘定時(shí)器高位 0FFH ;;;;;;;;;;;;;;;M1電機(jī)運(yùn)行程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; MOV A,CPA2 ;判斷是否結(jié)束運(yùn)轉(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ù)啟動(dòng)速度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運(yùn)行 ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 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á)減速時(shí)刻; ; MOV A,CPA1 ; CJNE A,#00H,PDAA ;判斷是否到達(dá)減速時(shí)刻; ; MOV A,CPA0 ;判斷是否到達(dá)減速時(shí)刻; 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ī)運(yùn)行程序 ;************************************************************* NT0: PUSH ACC PUSH PSW MOV TL1,TLBB ;定時(shí)器T0的中斷響應(yīng)程序 MOV TH1,THBB ;;;;;;;;;;;;;;;M2電機(jī)運(yùn)行程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; MOV A,CPB2 ;判斷是否結(jié)束運(yùn)轉(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ù)啟動(dòng)速度,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運(yùn)行 ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 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á)減速時(shí)刻; MOV A,CPB1 ; CJNE A,#00H,PDBB ;判斷是否到達(dá)減速時(shí)刻; MOV A,CPB0 ;判斷是否到達(dá)減速時(shí)刻; 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運(yùn)行程序 CLR C MOV A,CPB0 ; SUBB A,#01H ; 脈沖低位減一 MOV CPB0,A JNC BJWB ; 檢測(cè)是否有借位,借位向下 CLR C MOV A,CPB1 ;; SUBB A,#01H; 脈沖高位減一 MOV CPB1,A JNC BJWB ; 檢測(cè)是否有借位,借位向下。 CLR C MOV A,CPB2 ;; SUBB A,#01H; 脈沖高位減一 MOV CPB2,A JNC BJWB ; 檢測(cè)是否有借位,借位向下。 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ī)運(yùn)行程序 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 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ī)運(yùn)行程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; MOV A,CPC2 ;判斷是否結(jié)束運(yùn)轉(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ù)啟動(dòng)速度,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運(yùn)行 ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 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á)減速時(shí)刻; ; MOV A,CPC1 ; CJNE A,#00H,PDCC ;判斷是否到達(dá)減速時(shí)刻; ; MOV A,CPC0 ;判斷是否到達(dá)減速時(shí)刻; 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運(yùn)行程序 CLR C MOV A,CPC0 ; SUBB A,#01H ; 脈沖低位減一 MOV CPC0,A JNC BJWBC ; 檢測(cè)是否有借位,借位向下 CLR C MOV A,CPC1 ;; SUBB A,#01H; 脈沖高位減一 MOV CPC1,A JNC BJWBC ; 檢測(cè)是否有借位,借位向下。 CLR C MOV A,CPC2 ;; SUBB A,#01H; 脈沖高位減一 MOV CPC2,A JNC BJWBC ; 檢測(cè)是否有借位,借位向下。 BJWBC:CPL BJC ;輸出步進(jìn)電機(jī)M2的脈沖 PCAW: POP PSW POP ACC RETI
請(qǐng)高手幫我看看這個(gè)程序執(zhí)行三個(gè)電機(jī)復(fù)位的時(shí)候有時(shí)候檢測(cè)不到第一個(gè)接近開(kāi)關(guān)第一個(gè)電機(jī)到達(dá)原點(diǎn)停不下來(lái),有時(shí)候檢測(cè)不到第二個(gè)接近開(kāi)關(guān),第二個(gè)電機(jī)到達(dá)原點(diǎn)停不下來(lái)。程序也不好怎么改了。但是單獨(dú)一個(gè)一個(gè)復(fù)位時(shí)是正常的。我用的是stc12c5a60s2的,誰(shuí)能解釋一下,謝謝了,弄了很久了,還是不清楚問(wèn)題在哪里。
[此貼子已經(jīng)被作者于2013-4-21 17:42:57編輯過(guò)]
|