T
Thayas
Guest
Hej alle,
Jeg fik en kode til at rotere 6 wire unipolar stepper motor fra internettet ..
Det fungerer fint i Proteus Simulator (Alle fire (RBO, RB1, RB2, RB3) stifter giver output)
Når jeg prøvet det i brød board.Only to knappenåle (RB0, RB1) give ud put.I ikke fik nogen signaler fra RB2, RB3.
kodning
LISTE p = 16F84; PIC16F844 er målet processor
#
include "P16F84.INC" Inkluder header fil
CBLOCK 0x10; Midlertidig oplagring
pos
dc1
dc2
ENDC
LISTE p = 16F84; PIC16F844 er målet processor
#
include "P16F84.INC" Inkluder header fil
CBLOCK 0x10; Midlertidig oplagring
ENDC
ORG 0
entrypoint goto start
ORG 4
intvector goto intvector
start
clrw; Zero.
movwf PORTB; Sikre PORTB er nul, før vi gør det i stand.
BSF STATUS, RP0; Vælg Bank 1
movlw 0xF0; Indstil port B bits 0-3 som output
movwf TRISB; Indstil TRISB register.
BCF STATUS, RP0; Vælg Bank 0
movlw 3; Initialiser motordrevne holdning
movwf
PO'ernemovwf PORTB
opkald forsinkelse
clrf PORTB; Motor køre off
; RETURN
PUSH BTFSC PORTA, 0
CALL STOP
BTFSC PORTA, 1
CALL stepcw
CALL stepccw
RETURN
; Roter et skridt med uret
stepcw
BCF STATUS, C; Ryd bære flag
btfsc PO'er, 3; Indstil bære hvis denne bit sæt
BSF STATUS, C
rlf PO'er, W; Afhentning og rotere motoren's nuværende position
andlw 0x0F; Mask til lavere gnaske
movwf
PO'ernemovwf PORTB; Drive udgangene
opkald forsinkelse; Vent
clrf PORTB
opkald forsinkelse
CALL forsinkelse
; Ryd output
CALL PUSH
tilbagevenden
STOP CLRF PORTB
GOTO PUSH; Roter et skridt mod uret
stepccw
BCF STATUS, C; Ryd bære flag
btfsc PO'er, 0
BSF PO'er, 4
rrf PO'er, W; Afhentning og rotere motoren's nuværende position
andlw 0x0F; Mask til lavere gnaske
movwf
PO'ernemovwf PORTB; Drive udgangene
opkald forsinkelse; Vent
clrf PORTB; Ryd output
opkald forsinkelse
CALL forsinkelse
goto PUSH
; Dette rutinemæssigt gennemfører forsinkelse mellem trin,
, Og dermed styrer motordrevne hastighed.
forsinkelse movlw 18; Outer loop iterationsprocedure count
movwf dc1
dl1 clrf dc2; Initialisere indvendige loop
DL2 NOP
NOP
decfsz dc2, F
goto DL2
decfsz dc1, F
goto dl1
tilbagevenden
SLUT
Plc nogen hjælpe mig snart ..........
Jeg fik en kode til at rotere 6 wire unipolar stepper motor fra internettet ..
Det fungerer fint i Proteus Simulator (Alle fire (RBO, RB1, RB2, RB3) stifter giver output)
Når jeg prøvet det i brød board.Only to knappenåle (RB0, RB1) give ud put.I ikke fik nogen signaler fra RB2, RB3.
kodning
LISTE p = 16F84; PIC16F844 er målet processor
#
include "P16F84.INC" Inkluder header fil
CBLOCK 0x10; Midlertidig oplagring
pos
dc1
dc2
ENDC
LISTE p = 16F84; PIC16F844 er målet processor
#
include "P16F84.INC" Inkluder header fil
CBLOCK 0x10; Midlertidig oplagring
ENDC
ORG 0
entrypoint goto start
ORG 4
intvector goto intvector
start
clrw; Zero.
movwf PORTB; Sikre PORTB er nul, før vi gør det i stand.
BSF STATUS, RP0; Vælg Bank 1
movlw 0xF0; Indstil port B bits 0-3 som output
movwf TRISB; Indstil TRISB register.
BCF STATUS, RP0; Vælg Bank 0
movlw 3; Initialiser motordrevne holdning
movwf
PO'ernemovwf PORTB
opkald forsinkelse
clrf PORTB; Motor køre off
; RETURN
PUSH BTFSC PORTA, 0
CALL STOP
BTFSC PORTA, 1
CALL stepcw
CALL stepccw
RETURN
; Roter et skridt med uret
stepcw
BCF STATUS, C; Ryd bære flag
btfsc PO'er, 3; Indstil bære hvis denne bit sæt
BSF STATUS, C
rlf PO'er, W; Afhentning og rotere motoren's nuværende position
andlw 0x0F; Mask til lavere gnaske
movwf
PO'ernemovwf PORTB; Drive udgangene
opkald forsinkelse; Vent
clrf PORTB
opkald forsinkelse
CALL forsinkelse
; Ryd output
CALL PUSH
tilbagevenden
STOP CLRF PORTB
GOTO PUSH; Roter et skridt mod uret
stepccw
BCF STATUS, C; Ryd bære flag
btfsc PO'er, 0
BSF PO'er, 4
rrf PO'er, W; Afhentning og rotere motoren's nuværende position
andlw 0x0F; Mask til lavere gnaske
movwf
PO'ernemovwf PORTB; Drive udgangene
opkald forsinkelse; Vent
clrf PORTB; Ryd output
opkald forsinkelse
CALL forsinkelse
goto PUSH
; Dette rutinemæssigt gennemfører forsinkelse mellem trin,
, Og dermed styrer motordrevne hastighed.
forsinkelse movlw 18; Outer loop iterationsprocedure count
movwf dc1
dl1 clrf dc2; Initialisere indvendige loop
DL2 NOP
NOP
decfsz dc2, F
goto DL2
decfsz dc1, F
goto dl1
tilbagevenden
SLUT
Plc nogen hjælpe mig snart ..........