Descargar

Programa control de motor paso a paso con retardo (página 2)

Enviado por Nadia Villa


Partes: 1, 2

edu.red

MATERIALES UTILIZADOS

  • Microcontrolador PIC 16F877A

  • 2 LEDs

  • 2 Pulsadores

  • 1 Cristal de 4MHz

  • 2 Resistencias de 1KO

  • 1 Fuente dual DC

  • Protoboard

PROGRAMA CONTROL DE MOTOR PASO A PASO CON RETARDO

  • 1. Se definen los registros con cada una de las direcciones que correspondan en el mapa de memoria:

PORTB EQU H'0006'

PORTC EQU H'0007'

STATUS EQU H'0003'

TRISA EQU H'0085'

TRISB EQU H'0086'

TRISC EQU H'0087'

TRISD EQU H'0088'

TRISE EQU H'0089'

REG1 EQU 0CH

REG2 EQU 0DH

2 Se definen los bits a utilizar:

BIT0 EQU 00H

BIT1 EQU 01H

BIT2 EQU 02H

BIT3 EQU 03H

BIT4 EQU 04H

BIT5 EQU 05H

BIT6 EQU 06H

  • 3. Se inicia el programa. Configuramos los puertos como entrada o salida: El puerto B se configura como salida de datos, el puerto C como entrada y salida, y los puertos A, D y E como salidas para evitar interferencias.

ORG 00H ;Inicio del programa

BSF STATUS, RP0 ;Colocamos un 1 en el bit RP0 del registro STATUS

ORG 05H

MOVLW 00H ;Cargamos con FFH el registro de trabajo W

MOVWF TRISA ;Cargamos TRISA con lo que hay en W

MOVWF TRISB ;Cargamos TRISB con lo que hay en W

MOVWF TRISD ;Cargamos TRISD con lo que hay en W

MOVWF TRISE ;Cargamos TRISE con lo que hay en W

MOVLW 03H ;Cargamos con 03H el registro de trabajo W

MOVWF TRISC ;Cargamos TRISC con lo que hay en W

BCF STATUS, RP0 ;Colocamos un 0 en el bit RP0 del registro STATUS

  • 4. La parte de control: Se utilizan los bits 0 y 1 del puerto C como entrada de datos, por medio de dos pulsadores que enviarán 0 cada vez que sean oprimidos.

BTFSS PORTC, BIT0 ;Revisa el bit 0 del puerto C, si es 0 siga, si es 1 salte.

GOTO SEC1 ;Vaya a la secuencia 1

BTFSS PORTC, BIT1 ;Revisa el bit 1 del puerto C, si es 0 siga, si es 1 salte

GOTO SEC2 ;Vaya a la secuencia 2

GOTO INICIO ;Vaya a INICIO

  • 5. Secuencias:

SEC1 BSF PORTC, BIT2 ;Coloca un 1 en el bit 2 del puerto C

CALL TIEMPO ;Llama a la rutina tiempo.

MOVLW 08H ;Carga con 08H el registro W

MOVWF PORTB ;Carga el puerto B lo que hay en W

CALL TIEMPO ;Llama a la rutina tiempo

MOVLW 0CH ;Carga con 0CH el registro W

MOVWF PORTB ;Carga el puerto B lo que hay en W

CALL TIEMPO ;Llama a la rutina tiempo

MOVLW 04H ;Carga con 04H el registro W

MOVWF PORTB ;Carga el puerto B lo que hay en W

CALL TIEMPO ;Llama a la rutina tiempo

MOVLW 06H ;Carga con 06H el registro W

MOVWF PORTB ;Carga el puerto B lo que hay en W

CALL TIEMPO ;Llama a la rutina tiempo

MOVLW 02H ;Carga con 02H el registro W

MOVWF PORTB ;Carga el puerto B lo que hay en W

CALL TIEMPO ;Llama a la rutina tiempo

MOVLW 03H ;Carga con 03H el registro W

MOVWF PORTB ;Carga el puerto B lo que hay en W

CALL TIEMPO ;Llama a la rutina tiempo

MOVLW 09H ;Carga con 09H el registro W

MOVWF PORTB ;Carga el puerto B lo que hay en W

CALL TIEMPO ;Llama a la rutina tiempo

BCF PORTC, BIT2 ;Coloca un 0 en el bit 2 del puerto C

GOTO INICIO ;Vaya a INICIO

SEC2 BSF PORTC, BIT3 ;Coloca un 1 en el bit 3 del puerto C

CALL TIEMPO ;Llama a la rutina tiempo.

MOVLW 09H ;Carga con 09H el registro W

MOVWF PORTB ;Carga el puerto B lo que hay en W

CALL TIEMPO ;Llama a la rutina tiempo

MOVLW 03H ;Carga con 03H el registro W

MOVWF PORTB ;Carga el puerto B lo que hay en W

CALL TIEMPO ;Llama a la rutina tiempo

MOVLW 02H ;Carga con 02H el registro W

MOVWF PORTB ;Carga el puerto B lo que hay en W

CALL TIEMPO ;Llama a la rutina tiempo

MOVLW 06H ;Carga con 06H el registro W

MOVWF PORTB ;Carga el puerto B lo que hay en W

CALL TIEMPO ;Llama a la rutina tiempo

MOVLW 04H ;Carga con 04H el registro W

MOVWF PORTB ;Carga el puerto B lo que hay en W

CALL TIEMPO ;Llama a la rutina tiempo

MOVLW 0CH ;Carga con 0CH el registro W

MOVWF PORTB ;Carga el puerto B lo que hay en W

CALL TIEMPO ;Llama a la rutina tiempo

MOVLW 08H ;Carga con 08H el registro W

MOVWF PORTB ;Carga el puerto B lo que hay en W

CALL TIEMPO ;Llama a la rutina tiempo

MOVLW 09H ;Carga con 09H el registro W

MOVWF PORTB ;Carga el puerto B lo que hay en W

CALL TIEMPO ;Llama a la rutina tiempo

BCF PORTC, BIT3 ;Coloca un 0 en el bit 3 del puerto C

GOTO INICIO ;Vaya a INICIO

  • 6. Rutina de tiempo:

TIEMPO MOVLW 0FFH ;Carga con FFH el registro W

MOVWF REG1 ;Carga REG1 con lo que hay en W

CARGA2 MOVLW 6CH ;Carga con 06H el registro W

MOVWF REG2 ;Carga REG2 con lo que hay en W

DREG2 DECFSZ REG2, 1 ;Decrementa el valor que este en REG2 y el resultado lo deja en el mismo registro

GOTO DREG2 ;Vaya a DREG2

DECFSZ REG1, 1 ;Decrementa el valor que este en REG2 y el resultado lo deja en el mismo registro

GOTO CARGA2 ;Vaya a CARGA2

RETLW 0 ;Finaliza el llamado y continua donde fue llamada la instrucción.

  • 7. Fin del programa:

END Fin

ALGORITMO

Al conectar el circuito, el motor se mantiene apagado hasta que se oprime uno de los dos pulsadores. El pulsador conectado al bit 0 del puerto C hace que el motor realice un giro completo a la derecha y enciende un LED, y el otro pulsador hace que el motor realice un giro completo a la izquierda y enciende otro LED. Si se deja oprimido el pulsador el motor continua girando.

 

 

Autor:

Nadia Villa

Partes: 1, 2
 Página anterior Volver al principio del trabajoPágina siguiente