;******************************************************** ; ; 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