;********************************************************
;
; Movimiento de un motor de pasos,
; MOTOR DE 48 PASOS POR VUELTA
; 1 PASO CADA 1.25SEG A 32768KHz
;
; RB3 RB2 RB1 RB0
;
; 1 0 1 0
; 1 0 0 1 AVANCE, LOS 1 SON ON
; 0 1 0 1 SE SUPONE A TRAVÉS DE ULN2003
; 0 1 1 0
;
;*******************************************************
IND0 EQU 0X00
RTCC EQU 0X01
PCL EQU 0X02
STATUS EQU 0X03 ;LOS 8 BITS DE STATUS
IRP EQU 7
RP1 EQU 6
RP0 EQU 5
TO EQU 4
PD EQU 3
Z EQU 2
DC EQU 1
C EQU 0
FSR EQU 0X04
PORTA EQU 0X05
PORTB EQU 0X06
EEDATA EQU 0X08
EEADR EQU 0X09
PCLATCH EQU 0X0A
INTCON EQU 0X0B
GIE EQU 7
EEIE EQU 6
T0IE EQU 5
INTE EQU 4
RBIE EQU 3
T0IF EQU 2
INTF EQU 1
RBIF EQU 0
OPT EQU 0X81
RBPU EQU 7
INTEDG EQU 6
T0CS EQU 5
T0SE EQU 4
PSA EQU 3
PS2 EQU 2
PS1 EQU 1
PS0 EQU 0
TRIA EQU 0X85
TRIB EQU 0X86
EECON1 EQU 0X88
EEIF EQU 4
WRERR EQU 3
WREN EQU 2
WR EQU 1
RD EQU 0
;*******************************
; DEFINICIÓN DE REGISTROS
;********************************
POS EQU 0X0C ;Aquí va el número de paso de 1 a 4
CUENTA EQU 0X0D ;Cuenta cada interrupción de 0.25 segundos, a las 5 dá un paso
RETARDO EQU 0X0E
ORG 0X0000
GOTO SETEOS
ORG 0X0004
GOTO INTERR
ORG 0X0008
SETEOS BSF STATUS, RP0 ;TRABAJO BANCO 1
MOVLW B'11110000' ;BITS BAJOS = SALIDA
MOVWF TRIB
MOVLW B'11111111'
MOVWF TRIA
BCF OPT, T0CS
BCF OPT, PSA
BCF OPT, PS2
BSF OPT, PS1 ; PREESCALER DIVIDE POR 8
BCF OPT, PS0
BCF STATUS, RP0
BCF INTCON, GIE
BSF INTCON, T0IE
BCF INTCON, T0IF
MOVLW .1
MOVWF POS
CLRF CUENTA
;**************************************ESPERA 1 BOTÓN************************
ESPERA BTFSS PORTA, 0
GOTO ADEL
BTFSS PORTA, 1
GOTO ATRAS
BTFSS PORTA, 2
GOTO AVANCE
CLRF PORTB ;APAGA TODO PUES ESTÁ EN REPOSO
GOTO ESPERA
;****************************************ADELANTE****************************
; MUEVE UN PASO Y VUELVE
;****************************************************************************
ADEL CALL TIEMPO
BTFSC PORTA, 0
GOTO ESPERA ;RUIDO
INCF POS
MOVLW .5
SUBWF POS,0
BTFSS STATUS, Z
GOTO NA
MOVLW .1
MOVWF POS
NA CALL PULSOS
CALL TIEMPO
CALL TIEMPO ;ESPERA ESTABILIZARSE
GOTO ESPERA
;****************************************ATRAS****************************
; MUEVE UN PASO Y VUELVE
;****************************************************************************
ATRAS CALL TIEMPO
BTFSC PORTA, 1
GOTO ESPERA ;RUIDO
DECF POS
BTFSS STATUS, Z ;controlo no baje de 1, si es 0 va a 4
GOTO NT
MOVLW .4
MOVWF POS
NT CALL PULSOS
CALL TIEMPO ;ESPERA ESTABILIZARSE
CALL TIEMPO
GOTO ESPERA
;****************************************AVANCE********************************
; SOLO SE SALE CON STOP
;******************************************************************************
AVANCE CLRF RTCC
NOP
NOP
BCF INTCON, T0IF
BSF INTCON, GIE
BSF INTCON, T0IE
QUEDA BTFSS PORTA, 3
GOTO PARA
GOTO QUEDA
;****************************************PARA**********************************
PARA CALL TIEMPO
BTFSC PORTA, 3
GOTO QUEDA ;SI FUE UN RUIDO VUELVO
CLRF PORTB
BCF INTCON, GIE
BCF INTCON, T0IF
GOTO ESPERA
;********************************************************************************
;**************************************TIEMPO RETARDO REBOTES*****************************
TIEMPO MOVLW .50
MOVWF RETARDO
TI DECFSZ RETARDO ;RETARDO PARA REBOTES
GOTO TI
RETURN
;*****************************************************************************************
;***************************************PULSOS*************************************
PULSOS MOVLW .1
SUBWF POS, 0
BTFSS STATUS, Z
GOTO SEG
MOVLW B'00001010' ;1 CODIGO
MOVWF PORTB
RETURN
SEG MOVLW .2
SUBWF POS, 0
BTFSS STATUS, Z
GOTO TER
MOVLW B'00001001' ;2 CODIGO
MOVWF PORTB
RETURN
TER MOVLW .3
SUBWF POS, 0
BTFSS STATUS, Z
GOTO CUAT
MOVLW B'00000101' ;3 CODIGO
MOVWF PORTB
CUAT MOVLW .4
SUBWF POS, 0
BTFSS STATUS, Z
GOTO FINAL
MOVLW B'00000110' ;4 CODIGO
MOVWF PORTB
FINAL RETURN
;************************************INTERR***********************************
; CADA .25 DE SEGUNDO VIENE AQUÍ
;*****************************************************************************
INTERR INCF CUENTA
MOVLW .5
SUBWF CUENTA, 0
BTFSS STATUS, Z
GOTO VOLVER ; SI NO LLEGÓ A 5
CLRF CUENTA ; SI LLEGÓ A 5/4 AVANZO
INCF POS
MOVLW .5
SUBWF POS,0
BTFSS STATUS, Z
GOTO NIN
MOVLW .1
MOVWF POS
NIN CALL PULSOS
CALL TIEMPO
VOLVER BCF INTCON, T0IF ;BOORO BANDERA
RETFIE
END