;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;三个电机同时复位程序;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;送料电机先复位 SDFW:JB KA,$ ;复位开关按下后,3台电机同时复位 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;左右电机M1开始复位 (M1、M2、M3同时复位) 2013.3.17更新 SDGFW:LCALL SONGLIAO LCALL ZUOYOU LCALL XUANZHUAN ;;;;;;;;;;;;;;;;;;;;;;;;;各电机各自复位检测程序 KKM1: JB TT1,KKM2 ;检测送料电机M1探头 MOV CPA0,#00H ;设定脉冲数 MOV CPA1,#00H ;设定脉冲数 MOV CPA2,#00H ;设定脉冲数
KKM2: JB TT2,KKM3 ;检测左右电机M2探头 MOV CPB0,#00H ;设定脉冲数 MOV CPB1,#00H ;设定脉冲数 MOV CPB2,#00H ;设定脉冲数
KKM3: JB TT3,FWWC ;检测旋转电机M3探头 MOV CPC0,#00H ;设定脉冲数 MOV CPC1,#00H ;设定脉冲数 MOV CPC2,#00H ;设定脉冲数
FWWC:JB TT1,KKM1;手动复位完成 JB TT2,KKM2 JB TT3,KKM3 ;**************************************************手动复位完成
;*********************************************************** ; M1电机运行程序 ;************************************************************* MC:PUSH ACC PUSH PSW MOV TL0,TLAA ;时钟定时器低位 A8 042H MOV TH0,THAA ;时钟定时器高位 0FFH ;;;;;;;;;;;;;;;M1电机运行程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; MOV A,CPA2 ;判断是否结束运转 CJNE A,#00H,NEXTA ;不相等则转移 MOV A,CPA1 CJNE A,#00H,NEXTA MOV A,CPA0 CJNE A,#00H,NEXTA SETB JSBZA MOV TLAA,#30H ;恢复启动速度500HZ MOV THAA,#0F8H LJMP NEXT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; NEXTA:JNB JSBZA,KKJIANSA ;判断是否加速 ;*************************************** ;步进电机加速程序 ; ;*************************************** MOV A,THAA ; CJNE A,THA,PDA ;判断是否需要加速 ; MOV A,TLAA ; CJNE A,TLA,PDA ;判断是否需要加速 ; CLR JSBZA ; LJMP DJAYX ; PDA:JNC DJAYX ;电机A运行 ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; DJAJS: ;加速斜率 ; MOV A,TLAA ; ; CLR C ; ADDC A,XL1 ; ; MOV TLAA,A ; ; JNC DJAYX ;; ; INC THAA ; ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; KKJIANSA:JB JSBZA,DJAYX;判断是否减速 ;*************************************** ;步进电机减速程序 ; ;*************************************** MOV A,CPA2 ; CJNE A,#00H,PDAA ;判断是否到达减速时刻; ; MOV A,CPA1 ; CJNE A,#00H,PDAA ;判断是否到达减速时刻; ; MOV A,CPA0 ;判断是否到达减速时刻; 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 ;输出步进电机M1的脉冲 NEXT:POP PSW POP ACC RETI ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;M2电机运行程序 ;************************************************************* NT0: PUSH ACC PUSH PSW MOV TL1,TLBB ;定时器T0的中断响应程序 MOV TH1,THBB ;;;;;;;;;;;;;;;M2电机运行程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; MOV A,CPB2 ;判断是否结束运转 CJNE A,#00H,NEXTB MOV A,CPB1 CJNE A,#00H,NEXTB MOV A,CPB0 CJNE A,#00H,NEXTB SETB JSBZB MOV TLBB,#00H ;恢复启动速度,1000HZ MOV THBB,#0FDH LJMP NEXT2 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; NEXTB:JNB JSBZB,KKJIANSB ;判断是否加速 ;*************************************** ;步进电机加速程序 ; ;*************************************** MOV A,THBB ; CJNE A,THB,PDB ;判断是否需要加速 ; MOV A,TLBB ; CJNE A,TLB,PDB ;判断是否需要加速 ; CLR JSBZB ; LJMP DJBYX ; ; PDB:JNC DJBYX ;电机A运行 ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; DJBJS: ;加速斜率 ; MOV A,TLBB ; ; CLR C ; ADDC A,XL2 ; ; MOV TLBB,A ; ; JNC DJBYX ;; ; INC THBB ; ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; KKJIANSB:JB JSBZB,DJBYX;判断是否减速 ;*************************************** ;步进电机减速程序 ; ;*************************************** MOV A,CPB2 ; CJNE A,#00H,PDBB ;判断是否到达减速时刻; MOV A,CPB1 ; CJNE A,#00H,PDBB ;判断是否到达减速时刻; MOV A,CPB0 ;判断是否到达减速时刻; 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: ;电机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 ;输出步进电机M2的脉冲 NEXT2: ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; JIES: POP PSW POP ACC RETI ;中断返回 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;PCA模块中断服务程序 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 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电机运行程序 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; PCA0:CLR CCF0;模块0中断标志位清零 MOV A,CCAP0L;重新赋值 ADD A,TLCC MOV CCAP0L,A MOV A,CCAP0H ADDC A,THCC MOV CCAP0H,A ;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;M3电机运行程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; MOV A,CPC2 ;判断是否结束运转 CJNE A,#00H,NEXTC MOV A,CPC1 CJNE A,#00H,NEXTC MOV A,CPC0 CJNE A,#00H,NEXTC SETB JSBZC MOV TLCC,#0D0H ;恢复启动速度,500HZ MOV THCC,#07H LJMP NEXT3 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; NEXTC:JNB JSBZC,KKJIANSC ;判断是否加速 ;*************************************** ;步进电机加速程序 ; ;*************************************** MOV A,THC ; CJNE A,THCC,PDC ;判断是否需要加速 ; ; MOV A,TLC ; CJNE A,TLCC,PDC ;判断是否需要加速 ; PDCX:CLR JSBZC ; LJMP DJCYX ; ; PDC:JNC PDCX ;电机A运行 ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; DJCJS: ;加速斜率 ; CLR C ; MOV A,TLCC ; SUBB A,XL3 ; MOV TLCC,A ; JNC DJCYX ; DEC THCC ; LJMP DJCYX ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; KKJIANSC:JB JSBZC,DJCYX;判断是否减速 ;*************************************** ;步进电机减速程序 ; ;*************************************** MOV A,CPC2 ; CJNE A,#00H,PDCC ;判断是否到达减速时刻; ; MOV A,CPC1 ; CJNE A,#00H,PDCC ;判断是否到达减速时刻; ; MOV A,CPC0 ;判断是否到达减速时刻; 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: ;电机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 ;输出步进电机M2的脉冲 PCAW: POP PSW POP ACC RETI
请高手帮我看看这个程序执行三个电机复位的时候有时候检测不到第一个接近开关第一个电机到达原点停不下来,有时候检测不到第二个接近开关,第二个电机到达原点停不下来。程序也不好怎么改了。但是单独一个一个复位时是正常的。我用的是stc12c5a60s2的,谁能解释一下,谢谢了,弄了很久了,还是不清楚问题在哪里。
[此贴子已经被作者于2013-4-21 17:42:57编辑过]
|