|
;調(diào)試注意門方向,電機(jī)正轉(zhuǎn)門順時(shí)鐘旋轉(zhuǎn)(俯視圖看門),電機(jī)反轉(zhuǎn)門逆時(shí)鐘旋轉(zhuǎn)(俯視圖看門)
110504ohi4huqhnqk77n4a.jpg (163.59 KB, 下載次數(shù): 1300)
下載附件
2020-8-3 18:05 上傳
list p=16F876A
#include p16f876a.inc
__CONFIG _CPD_OFF & _CP_ALL & _DEBUG_OFF & _BODEN_OFF & _LVP_OFF & _PWRTE_OFF & _WDT_OFF & _XT_OSC
PCL EQU 02H
STATUS EQU 3H
Z EQU 2H
INTCOM EQU 0BH
PORTC EQU 7H
TRISC EQU 87H
COU EQU 0X21 ; 脈沖1檢測輸入計(jì)數(shù)器
COUNTER EQU 0X22
COUNT1 EQU 0X23 ;電磁鐵抬起計(jì)數(shù)器
MC EQU 0X24 ;開始脈沖計(jì)數(shù)器
COUNTER2 EQU 0X25 ;延時(shí)計(jì)數(shù)器2
COUNT0 EQU 0X26 ;延時(shí)計(jì)數(shù)器2
COUNT EQU 0X27 ;EE_DELAY
ADDR EQU 0X28 ;EE
DAT EQU 0X29 ;EE
DATA1 EQU 0X2A ;EE
TEMP EQU 0X2B ;EE
LOCK_COUNT EQU 0X2C
COUNTER3 EQU 0X2D
COUNTER4 EQU 0X2E
COUNT3 EQU 0X2F
COUNTER0 EQU 0X30 ;延時(shí)計(jì)數(shù)器0 DEL_LO EQU 0X20
COUNTER1 EQU 0X31 ;延時(shí)計(jì)數(shù)器1
COUN4 EQU 0X32 ;延時(shí)計(jì)數(shù)器2
COUNT2 EQU 0X33
MCJS EQU 0X34 ;正反轉(zhuǎn)計(jì)數(shù)器
; EQU 0X78
;*********************************
;input
;PORTA,0 正轉(zhuǎn)_KEY
;PORTA,1 反轉(zhuǎn)_KEY
;PORTA,2 脈沖1檢測輸入
;PORTA,3 脈沖2檢測輸入
;PORTA,4 NO 輸出接上拉電阻方可
;PORTA,5 脈沖3檢測輸入
;*********************************
;input/OUTPUT
;PORTB,0 中斷處理
;PORTB,1 防夾傳感器 或者緊急停止
;PORTB,2 164 SPI
;PORTB,3 164 SPI
;PORTB,4 24C01 SCLK
;PORTB,5 24C01 SDA
;PORTB,6 原點(diǎn)檢測 光電
;PORTB,7 RUN LED FAS OUTPUT
;*****************************************
;OUTPUT
;#define PORTC,0 正轉(zhuǎn)磁鐵
;#define PORTC,1 反轉(zhuǎn)磁鐵
;#define PORTC,2 電機(jī)正轉(zhuǎn) AB 10 NE555邏輯
;#define PORTC,3 電機(jī)反轉(zhuǎn) AB 01 NE555邏輯
;#define PORTC,4 BBP OUT
;#define PORTC,5 低速度 AB 00 555邏輯
;#define PORTC,6 速度高 AB 11 555邏輯
;#define PORTC,7 剎車
;;********************************************
;LED_OUT
;*****************************************
#define SDA PORTB,5
#define SCLK PORTB,4
;*****************************************
;4052 邏輯
;*****************************************
ORG 000H
NOP
GOTO INTI
ORG 0004H ;中斷矢量入口
;初始化程序
INTI BSF STATUS,RP0 ;選項(xiàng)1塊
MOVLW 87H ;10000111
MOVWF ADCON1 ;設(shè)置RA口全部為數(shù)字IO口RA,4不變
MOVLW B'11111111' ;;ALL input. B6 B7 OUT
MOVWF TRISB ;PORTB,7為輸出
MOVLW B'11111111' ;PORTA ALL input
MOVWF TRISA
MOVLW B'00000000' ;PORTC_ALL_OUT
MOVWF TRISC
BCF STATUS,RP0 ;BLOCK0塊
MOVLW B'00000000'
MOVWF PORTA
MOVWF PORTB
CLRF PORTC
CLRF PORTB
CLRF MC ;自動計(jì)數(shù)器清另
;*****************************************************
;旋轉(zhuǎn)門在停止時(shí)自動復(fù)位程序如果有風(fēng)推動必須保證復(fù)位
; KEY SCAN
;8888888888888888888888888888888888888888888888888888888鍵盤掃描
MIN
BCF PORTB,3 ;電機(jī)反轉(zhuǎn)停
CLRF MC ;開始脈沖計(jì)數(shù)器清另
CLRF COUNTER0 ;延時(shí)計(jì)數(shù)器0清另
CLRF COUNTER1 ;延時(shí)計(jì)數(shù)器1清另
CLRF PORTB ;正轉(zhuǎn)磁鐵
CLRF PORTB ;反轉(zhuǎn)磁鐵
CLRF COU ;脈沖計(jì)數(shù)器清另 ;
SCAN_KEY BCF STATUS,Z ;用過后要清零后才能檢測LOCK_COUNT,
BCF PORTB,0 ;↑ 正轉(zhuǎn)電磁鐵不吸合
BCF PORTB,1 ;↑ 反轉(zhuǎn)電磁鐵不吸合
CLRF COU ;脈沖計(jì)數(shù)器清另
CLRF MCJS ;正反轉(zhuǎn)計(jì)數(shù)器
BSF PORTB,7 ;LED_FAS
CALL DELAY05S
BTFSS PORTA,0 ;正轉(zhuǎn)_KEY
GOTO ZZHUAN ;正轉(zhuǎn)
GOTO LOOP
LOOP BTFSS PORTA,1 ;反轉(zhuǎn)_KEY
GOTO FZZHUAN ;反轉(zhuǎn)
BTFSC PORTB,6 ;原點(diǎn) 測試一下是否在原點(diǎn)
GOTO STARTA_ZF ;轉(zhuǎn)防風(fēng)功能
BCF PORTB,7 ;LED_FAS
CALL DELAY05S
GOTO SCAN_KEY
;********88888888888888888888888888888888888888888888888鍵盤掃描
;防風(fēng)吹功能.子程序 脈沖pulse SCAN 改進(jìn)說明RA2脈沖 RA3方向判斷
;88888888888888888888888888888888888888888888888888888888
;旋轉(zhuǎn)門在停止時(shí)自動復(fù)位程序如果有風(fēng)推動必須保證復(fù)位
;00000000000000000000000000000000000000000 正反轉(zhuǎn)判斷程序
STARTA_ZF CALL DELAY
CALL DELAY
CALL DELAY
CALL DELAY
NOP
;*******************************************************************
STARTA_ZFA BTFSS PORTA,3 ;RA3方向判斷H為門逆時(shí)鐘旋轉(zhuǎn)
GOTO ZF_NEXTA ;MOTOR_ZZ ;再判斷一下
ZF_PD BTFSS PORTA,2 ;測試A相有↑脈沖
GOTO ZF_NEXT
GOTO STARTA_ZFA
;******************************
ZF_NEXT BTFSS PORTA,3 ;都如果高
GOTO STARTA_ZFA
GOTO ZC_PD
ZF_NEXTA BTFSS PORTA,2
GOTO STARTA_ZFA
GOTO ZC_PD ;還是為高
;*******************************************************************
ZC_PD BTFSS PORTA,2
GOTO ZF_NEXTZC
BTFSS PORTA,3
GOTO ZF_NEXTAZC
GOTO ZC_PD
;******************************
ZF_NEXTZC BTFSS PORTA,3
GOTO ZC_PD
GOTO S_PD ;ZZ_CL
ZF_NEXTAZC BTFSS PORTA,2
GOTO ZC_PD
GOTO S_PD ;FZ_CL
;*******************************************************************
S_PD BTFSS PORTA,3
GOTO S_PDB
S_PDA BTFSS PORTA,2
GOTO S_PDC
GOTO S_PD
;******************************
S_PDB BTFSS PORTA,2
GOTO S_PD
GOTO FZ_CL
S_PDC BTFSS PORTA,3
GOTO S_PD
GOTO ZZ_CL ;正轉(zhuǎn)判斷
;888888888888888888888888888888888888888 8888888888888888888888正反轉(zhuǎn)判斷程序
;A相有脈沖有多少脈沖處理.當(dāng)門不旋轉(zhuǎn)時(shí)延時(shí)后電機(jī)旋轉(zhuǎn). 防風(fēng)吹功能
;電機(jī)正轉(zhuǎn) 門逆時(shí)鐘旋轉(zhuǎn)(俯視圖看門)
;........................................................電機(jī)反轉(zhuǎn)處理
ZZ_CL ;正轉(zhuǎn)判斷
BTFSS PORTA,2 ;脈沖檢測輸入
GOTO TEXT_ZZ
LOOP_ZZ BTFSS PORTA,2 ;脈沖檢測輸入
GOTO MOTOR_ZZ
GOTO TEXT_ZZ ;如果沒有脈沖再測試N次
TEXT_ZZ ;CALL DELAY1S ;如果沒有脈沖再測試N次
INCF COU
MOVLW .8 ;.8
SUBWF COU ;
BTFSS STATUS,Z ;W=0 Z=1
GOTO ZZ_CL ;NO不到20
CLRF COU ;到了8脈沖
CALL DELAY
CALL DELAY
MOTOR_ZZ BCF PORTC,2 ;電反機(jī)轉(zhuǎn)
BSF PORTC,3 ;電機(jī)反轉(zhuǎn) AB = 0.1
BCF PORTC,2
BSF PORTC,3 ;電機(jī)反轉(zhuǎn) AB = 0 1
BSF PORTC,1 ;反轉(zhuǎn)磁鐵吸合
BCF PORTC,5 ;低速度 AB = 00
BCF PORTC,6 ;低速度 AB = 00
NOP
NOP
NOP
BTFSS PORTB,6 ;原點(diǎn)檢測 光電
GOTO ZMOR_TIN1 ;H回到原點(diǎn)
GOTO MOTOR_ZZ
;PORTC,2 電機(jī)正轉(zhuǎn)
;PORTC,3 電機(jī)反轉(zhuǎn)
;PORTC,0 正轉(zhuǎn)磁鐵
;PORTC,1 反轉(zhuǎn)磁鐵
;888888888888888888888888888888888888888888888電機(jī)反轉(zhuǎn)處理
;B相有脈沖有,多少脈沖處理 當(dāng)門不旋轉(zhuǎn)時(shí)延時(shí)后電機(jī)旋轉(zhuǎn). 防風(fēng)吹功能
;電機(jī)反轉(zhuǎn) 門順時(shí)鐘旋轉(zhuǎn)(俯視圖看門)
;當(dāng)門順時(shí)鐘旋轉(zhuǎn) 電機(jī)應(yīng)該使門逆轉(zhuǎn);PORTB,2 電機(jī)正轉(zhuǎn) 門逆時(shí)鐘旋轉(zhuǎn)
;.......................................................電機(jī)正轉(zhuǎn)處理
FZ_CL
BTFSS PORTA,2 ;脈沖檢測輸入,電機(jī)反轉(zhuǎn) 門順時(shí)鐘旋轉(zhuǎn) (俯視圖看門)
GOTO TEXT_FZ ;↓測試A相有脈沖再測試
LOOP_FZ BTFSS PORTA,2
GOTO MOTOR_FZ
GOTO TEXT_FZ ;如果沒有脈沖再測試N次
TEXT_FZ ;
;CALL DELAY1S ;如果沒有脈沖再測試N次
INCF COU
MOVLW .8 ;.8
SUBWF COU, ;??????
BTFSS STATUS,Z ;W=0 Z=1
GOTO FZ_CL ;NO不到20
CLRF COU ;到了8脈沖
MOTOR_FZ BSF PORTC,2
BCF PORTC,3 ;電機(jī)正轉(zhuǎn) AB = 1 0
BSF PORTC,0 ;正轉(zhuǎn)磁鐵吸合
BCF PORTC,5 ;低速度 AB = 00
BCF PORTC,6 ;低速度 AB = 00
NOP
NOP
NOP
BTFSS PORTA,6 ;原點(diǎn)檢測 光電
GOTO FMOR_TIN1 ;回到原點(diǎn)
GOTO MOTOR_FZ
;防風(fēng)吹功能.子程序 END ;PORTC,2 電機(jī)正轉(zhuǎn)
;PORTC,3 電機(jī)反轉(zhuǎn)
;PORTC,0 正轉(zhuǎn)磁鐵
;PORTC,1 反轉(zhuǎn)磁鐵 電機(jī)正轉(zhuǎn)處理
;8888888888888888888888888888888888888888888888888888888888888防風(fēng)吹復(fù)位功能.子程序 END
;到了10秒 沒有脈沖電磁鐵抬起,返回.SCAN_KEY 有脈沖開始記數(shù). 電機(jī)正轉(zhuǎn)等待
;0000000000000000000000000000000000000000000000000000000000000到了10秒 沒有脈沖電磁鐵抬起
ZZHUAN BSF PORTC,0 ;↑ 正轉(zhuǎn)電磁鐵吸合抬起
CALL DELAY05S
NOP
NOP
BTFSC PORTB,6 ;判斷門推動? 原點(diǎn)檢測
GOTO START1 ;YEI有人推
GOTO NO_MC ;NO 沒有人推,在原點(diǎn)
;***************************
NO_MC INCF COUNT1,1 ;延時(shí)10秒
MOVLW .60 ;.60
SUBWF COUNT1,0
BTFSS STATUS,Z ;W=0 Z=1
GOTO ZZHUAN ;NO不到6
CLRF COUNT1
GOTO SCAN_KEY ;到了10秒NO 沒有脈沖電磁鐵抬起
;**************************
CT_DELAY CALL DELAY3S
BCF PORTC,0 ;正轉(zhuǎn)電磁鐵
GOTO SCAN_KEY
;00000000000000000000000000000000000000000000000000000000000到了10秒 沒有脈沖電磁鐵抬起
;**A相有脈有開始記數(shù)沖 電機(jī)開始正轉(zhuǎn) 有8個(gè)脈沖? 低速度段 電機(jī)正轉(zhuǎn)
;PORTC,2 電機(jī)正轉(zhuǎn) AB 00 NE555邏輯
;PORTC,3 電機(jī)反轉(zhuǎn) AB 11 NE555邏輯
;********************************************************低速度段 電機(jī)正轉(zhuǎn)
START1 ;有脈沖
BSF PORTC,2 ;電機(jī)正轉(zhuǎn) AB 10 NE555邏輯
BCF PORTC,3 ;電機(jī)反轉(zhuǎn) AB 10 NE555邏輯
BCF PORTC,5 ;低速度 AB 00 555邏輯
BCF PORTC,6 ;速度 AB 00 555邏輯
NOP
NOP
NOP
NOP
NOP
BTFSS PORTA,2 ;測試A相有脈沖開開始計(jì)數(shù)
GOTO LOOP0 ;STRT_JS
GOTO START1
LOOP0 BTFSS PORTA,2
GOTO LOOP0
GOTO STRT_JS ; START1
NEXT BTFSS PORTA,2 ;測試A相有脈沖開開始計(jì)數(shù)
GOTO STRT_JS
GOTO START1
NEXT_A BTFSS PORTA,2
GOTO START1
GOTO STRT_JS
STRT_JS INCF COU
MOVLW .8 ;.8
SUBWF COU,0
BTFSS STATUS,Z ;W=0 Z=1
GOTO START1 ;NO不到20
CLRF COU
GOTO ZGAO_SDU ;到了20脈沖后轉(zhuǎn)高速度
;****************************************************低速度段 電機(jī)正轉(zhuǎn)
;**************A相有脈沖 有9個(gè)脈沖高速度運(yùn)轉(zhuǎn)********高速度段 電機(jī)開始正轉(zhuǎn)
;
;************************************************* 電機(jī)正轉(zhuǎn)高速度
;高速度電機(jī)開始正轉(zhuǎn)
ZGAO_SDU BSF PORTC,5 ;速度高 AB 1.1 555邏輯
BSF PORTC,6 ;速度高 AB 1.1 555邏輯
NOP
NOP
NOP
NOP
NOP
;CLRF COU
BTFSS PORTA,2 ;測試A相有脈沖開開始計(jì)數(shù)
GOTO LOOP1 ;STRT_J
GOTO ZGAO_SDU
LOOP1 BTFSS PORTA,2 ;測試A相有脈沖開開始計(jì)數(shù)
GOTO LOOP1
GOTO STRT_J
STRT_J BTFSS PORTB,1 ;急停00000000
GOTO ZMOR_TIN1
INCF COU
MOVLW .9 ;.9
SUBWF COU,0
BTFSS STATUS,Z ;W=0 Z=1
GOTO ZGAO_SDU ;NO不到9
CLRF COU
GOTO ZDI_SDU ;到了20脈沖后轉(zhuǎn)高速度
;********************************************************************* 電機(jī)正轉(zhuǎn)高速度
;開始低速度 *A相有脈沖 有 9個(gè)脈沖 低速度段 電機(jī)開始正轉(zhuǎn)
;*********************************************************************電機(jī)正轉(zhuǎn)低速度
ZDI_SDU BCF PORTC,5 ; A A B 0.0電機(jī)速度低
BCF PORTC,6 ; B A B 0.0電機(jī)速度低
NOP
NOP
NOP
NOP
NOP
NOP
BSF PORTA,7 ;速度低速度
BTFSS PORTA,2 ;測試A相有脈沖開開始計(jì)數(shù)
GOTO LOOP2
GOTO ZDI_SDU
LOOP2 BTFSS PORTA,2
GOTO LOOP2
STRT BTFSS PORTB,1 ;急停00000000
GOTO ZMOR_TIN1
INCF COU
MOVLW .8 ;.8
SUBWF COU,0
BTFSS STATUS,Z ;W=0 Z=1
GOTO ZDI_SDU ;NO不到.8
GOTO ZMOR_TIN ;到了20脈沖后轉(zhuǎn)高速度
;****************************************************************電機(jī)正轉(zhuǎn)低速度
;電機(jī)正轉(zhuǎn)低速度 ;是否到了原點(diǎn)電機(jī)電磁鐵停止
;****************************************************************電機(jī)正轉(zhuǎn)結(jié)束
ZMOR_TIN
BTFSS PORTB,6 ;原點(diǎn)檢測 光電
GOTO ZMOR_TIN1 ;H回到原點(diǎn)
GOTO ZMOR_TIN
ZMOR_TIN1
BCF PORTC,2 ;電機(jī)正轉(zhuǎn)停 A A B 0.0電機(jī)停
BCF PORTC,3 ;電機(jī)反轉(zhuǎn)停 B A B 0.0電機(jī)停
BCF PORTC,0 ;正轉(zhuǎn)磁鐵釋放
BCF PORTC,1 ;反轉(zhuǎn)磁鐵釋放
BSF PORTC,5 ;低速度 OUT A
BCF PORTC,6 ;高速度 OUT B A B 1.0速度停
NOP
NOP
NOP
NOP
BSF PORTC,7 ;剎車
CALL DELAY05S
BCF PORTC,7 ;剎車
GOTO SCAN_KEY
;;**********************************************************電機(jī)正轉(zhuǎn)結(jié)束
;電機(jī)反轉(zhuǎn)開始計(jì)數(shù) 電機(jī)反轉(zhuǎn)等待
;*FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
;到了10秒 沒有脈沖電磁鐵抬起,返回.SCAN_KEY 開始記數(shù)值.
;***********************************************到了10秒 沒有脈沖電磁鐵抬起
FZZHUAN BSF PORTC,1 ;↑ 反轉(zhuǎn)電磁鐵吸合抬起
CALL DELAY05S
NOP
NOP
BTFSC PORTB,6 ;判斷門推動? 原點(diǎn)檢測
GOTO FSTART1 ;YEI
GOTO FNO_MC ;NO
;***************************
FNO_MC INCF COUNT1,1 ;延時(shí)10秒
MOVLW .60 ;.60
SUBWF COUNT1,0
BTFSS STATUS,Z ;W=0 Z=1
GOTO FZZHUAN ;NO不到6
CLRF COUNT1
GOTO SCAN_KEY ;到了10秒NO 沒有脈沖電磁鐵抬起
;************************************
FCT_DELAY CALL DELAY3S
BCF PORTB,1 ;反轉(zhuǎn)電磁鐵
GOTO SCAN_KEY
;******************************************************到了10秒 沒有脈沖電磁鐵抬起
; ;PORTC,2 A 電機(jī)正轉(zhuǎn) A B 00 NE555邏輯
;PORTC,3 B 電機(jī)反轉(zhuǎn) A B 11 NE555邏輯
;***B相有脈沖 電機(jī)開始反轉(zhuǎn) 有20個(gè)脈沖?********速度低 電機(jī)反轉(zhuǎn)
;FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF電機(jī)開始反轉(zhuǎn)低速度段
FSTART1 BCF PORTC,2 ;電機(jī)反轉(zhuǎn)停 A A B 0.1電機(jī)反轉(zhuǎn)
BSF PORTC,3 ;電機(jī)反轉(zhuǎn)停 B A B 0.1電機(jī)反轉(zhuǎn)
BCF PORTC,5 ;低速度 OUT A
BCF PORTC,6 ;高速度 OUT B A B 0.0電機(jī)速度低
NOP
NOP
BTFSS PORTA,3 ;測試B相有脈沖開開始計(jì)數(shù)
GOTO FLOOP0
GOTO FSTART1
FLOOP0 BTFSS PORTA,3 ;測試B相有脈沖開開始計(jì)數(shù)
GOTO FLOOP0
GOTO FSTRT_JS ;START1
FNEXT BTFSS PORTA,3 ;測試B相有脈沖開開始計(jì)數(shù)
GOTO FSTRT_JS
GOTO FSTART1
FNEXT_A BTFSS PORTA,3
GOTO FSTART1
GOTO FSTRT_JS
FSTRT_JS INCF COU
MOVLW .8 ;.20
SUBWF COU,0
BTFSS STATUS,Z ;W=0 Z=1
GOTO FSTART1 ;NO不到20
CLRF COU
GOTO FGAO_SDU ;到了20脈沖后轉(zhuǎn)高速度
;************************************************** 電機(jī)反轉(zhuǎn)低速度段
;***B相有脈沖 有9個(gè)脈沖高速度運(yùn)轉(zhuǎn)*****速度高電機(jī)反轉(zhuǎn)門順時(shí)鐘旋轉(zhuǎn)(俯視圖看門) 電機(jī)反轉(zhuǎn)/
;************************************************* 電機(jī)反轉(zhuǎn)高速度段
;高速度
FGAO_SDU BSF PORTC,5 ;低速度 OUT A
BSF PORTC,6 ;高速度 OUT B A B 1.1電機(jī)速度高
NOP
NOP
NOP
NOP
;CLRF COU
BTFSS PORTA,3 ;測試B相有脈沖開開始計(jì)數(shù)
GOTO FLOOP1 ;FSTRT_J
GOTO FGAO_SDU
FLOOP1 BTFSS PORTA,3 ;測試B相有脈沖開開始計(jì)數(shù)
GOTO FLOOP1
GOTO FSTRT_J
FSTRT_J BTFSS PORTB,1 ;急停000
GOTO FMOR_TIN1
INCF COU
MOVLW .9 ;.9
SUBWF COU,0
BTFSS STATUS,Z ;W=0 Z=1
GOTO FGAO_SDU ;NO不到20
CLRF COU
GOTO FDI_SDU ;到了20脈沖后轉(zhuǎn)高速度
;********************************************* 電機(jī)反轉(zhuǎn)高速度段
;開始低速度 B相有脈沖 有 8個(gè)脈沖**********速度低 電機(jī)反轉(zhuǎn)
;********************************************* 電機(jī)反轉(zhuǎn)低速度段
FDI_SDU
BCF PORTC,5 ;低速度 OUT A
BCF PORTC,6 ;高速度 OUT B A B 0.0電機(jī)低速度段
NOP
NOP
NOP
BTFSS PORTA,3 ;測試B相有脈沖開開始計(jì)數(shù)
GOTO FLOOP2
GOTO FDI_SDU
FLOOP2 BTFSS PORTA,3 ;測試B相有脈沖開開始計(jì)數(shù)
GOTO FLOOP2
GOTO FSTRT
FSTRT BTFSS PORTB,1 ;急停000
GOTO FMOR_TIN1
INCF COU
MOVLW .8 ;.8
SUBWF COU,0
BTFSS STATUS,Z ;W=0 Z=1
GOTO FDI_SDU ;NO不到8
GOTO FMOR_TIN ;到了20脈沖后轉(zhuǎn)高速度
;***************************************************電機(jī)反轉(zhuǎn)低速度段
;電機(jī)反轉(zhuǎn)低速度;是否到了原點(diǎn)電機(jī)電磁鐵停止
;****************************************************電機(jī)反轉(zhuǎn)停止
FMOR_TIN ;速度變換低速度 減 SPI99 OUT
BTFSS PORTB,6 ;原點(diǎn)檢測 光電
GOTO FMOR_TIN1
GOTO FMOR_TIN
FMOR_TIN1 BCF PORTC,2 ;電機(jī)正轉(zhuǎn)停 A A B 0.0電機(jī)停
BCF PORTC,3 ;電機(jī)反轉(zhuǎn)停 B A B 0.0電機(jī)停
BCF PORTC,0 ;正轉(zhuǎn)磁鐵釋放
BCF PORTC,1 ;反轉(zhuǎn)磁鐵釋放
BSF PORTC,5 ;低速度 OUT A
BCF PORTC,6 ;高速度 OUT B A B 1.0電機(jī)停
NOP
NOP
NOP
NOP
BSF PORTC,7 ;剎車
CALL DELAY05S
BCF PORTC,7 ;剎車
GOTO SCAN_KEY
;*FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF電機(jī)反轉(zhuǎn)停止
DELAY3S MOVLW D'10' ;D'10=3S D'20=5S D'30=7S
MOVWF COUNT2 ;D'40=8S D'60=12S D'80=17
LOPB01 DECFSZ COUNT1,1 ;D'100=20S D'150=30S D'200=40S
GOTO LOPB01
DECFSZ COUNT0,1
GOTO LOPB01
DECFSZ COUNT2,1
GOTO LOPB01
RETURN
;****************************************************
DELAY MOVLW D'9'
MOVWF COUNTER0
LOPB DECFSZ COUNTER1,1
GOTO LOPB
DECFSZ COUNTER0,1
GOTO LOPB
RETURN
;*****************************************************
DELAY1S MOVLW D'5' ;DELAY 1S
MOVWF COUNTER3
LOPB1 DECFSZ COUNTER4,1
GOTO LOPB1
DECFSZ COUNTER3,1
GOTO LOPB1
RETURN
;******************************************************
DELAY05S MOVLW D'0' ;0.5S
MOVWF COUNT3
LOPB0 DECFSZ COUN4,1
GOTO LOPB0
DECFSZ COUNT3,1
GOTO LOPB0
RETURN
END
;*********************************************************************
|
|