;///////////////////////////////////////////////////////////////////////////////////////////////////;
; MOTORUNI.ASM ;
; CONTROL DE UN MOTOR PASO A PASO UNIPOLAR ;
; CON 2 TIPOS DE SECUENCIAS: HALF-STEP Y FULL STEP ;
;///////////////////////////////////////////////////////////////////////////////////////////////////;
LISTP = 16F84A
STATUS EQU 03H
PTOA EQU 05H
PTOB EQU 06H
TRISA EQU 85H
TRISB EQU 86H
W EQU 00H
Z EQU 02H
loops EQU 0cH
loops2 EQU 0dH
RESET ORG 0
GOTO INICIO
ORG 5
retardo ;subrutina de retardo de 100 milisegundos
movlw D'100' ;el registro loops contiene el n£mero
movwf loops ;de milisegundos del retardo
top2 movlw D'110' ;
movwf loops2 ;
top nop
nop
nop
nop
nop
nop
decfsz loops2 ;pregunta si termino 1 ms
goto top
decfsz loops ;pregunta si termina el retardo
goto top2
retlw 0
INICIO BSF STATUS,5
MOVLW B'00000111'
MOVWF TRISA
MOVLW B'11100000'
MOVWF TRISB
BCF STATUS,5
PREG_1 CLRF PTOB
BTFSS PTOA,0 ;QUE TIPO DE SECUENCIA SE VA A EFECTUAR(ES FULL STEP?)
GOTO PREG_2
BTFSS PTOA,1 ;ES HACIA LA IZQUIERDA?
GOTO INI_1
GOTO IZQUIERDA
INI_1 BTFSS PTOA,2 ;ES HACIA LA DERECHA?
GOTO PREG_1
GOTO DERECHA
IZQUIERDA CLRF PTOB ;CLAREA PUERTO B
BSF PTOB,0 ;EMPIEZA LA ROTACION DE LOS PUERTOS HACIA LA IZQUIERDA
CALL retardo
CALL retardo
RLF PTOB,1
CALL retardo
CALL retardo
RLF PTOB,1
CALL retardo
CALL retardo
RLF PTOB,1
CALL retardo
CALL retardo
GOTO PREG_1
DERECHA CLRF PTOB ;CLAREA AL PUERTO B
BSF PTOB,3 ;EMPIEZA LA ROTACION DE LOS PUERTOS HACIA LA DERECHA
CALL retardo
CALL retardo
RRF PTOB,1
CALL retardo
CALL retardo
RRF PTOB,1
CALL retardo
CALL retardo
RRF PTOB,1
CALL retardo
CALL retardo
GOTO PREG_1
PREG_2 CLRF PTOB ;CLAREA AL PUERTO B
BTFSS PTOB,7 ;QUE TIPO DE SECUENCIA SE VA A EFECTUAR(ES HALF-STEP?)
GOTO PREG_1
BTFSS PTOB,6 ;ES HACIA LA DERECHA?
GOTO INI_2
GOTO DERECHA_1
INI_2 BTFSS PTOB,5 ;ES HACIA LA IZQUIERDA?
GOTO PREG_2
GOTO IZQUIERDA_1
DERECHA_1 CLRF PTOB ;CLAREA AL PUERTO B
BSF PTOB,0 ;EMPIEZA LA ROTACION HACIA LA DERECHA
BSF PTOB,1
CALL retardo
CALL retardo
BCF PTOB,1
CALL retardo
CALL retardo
BSF PTOB,3
CALL retardo
CALL retardo
BCF PTOB,0
CALL retardo
CALL retardo
BSF PTOB,2
CALL retardo
CALL retardo
BCF PTOB,3
CALL retardo
CALL retardo
BSF PTOB,1
CALL retardo
CALL retardo
BCF PTOB,2
CALL retardo
CALL retardo
GOTO PREG_2
IZQUIERDA_1 CLRF PTOB ;CLAREA AL PUERTO B
BSF PTOB,0 ;EMPIEZA LA ROTACION HACIA LA IZQUIERDA
BSF PTOB,1
CALL retardo
CALL retardo
BCF PTOB,0
CALL retardo
CALL retardo
BCF PTOB,3
CALL retardo
CALL retardo
BSF PTOB,2
CALL retardo
CALL retardo
BCF PTOB,1
CALL retardo
CALL retardo
BSF PTOB,3
CALL retardo
CALL retardo
BCF PTOB,2
CALL retardo
CALL retardo
BSF PTOB,0
CALL retardo
CALL retardo
BCF PTOB,3
CALL retardo
CALL retardo
GOTO PREG_2
END ;FIN DEL PROGRAMA