;******************************************************************************************* ; MOTORES PASO A PASO 2 ; ;Este programa sirve para regular la velcidad de giro de un motor paso a paso. El motor girará ;más deprisa o más despacio, de pendiendo del valor que el usuario introduzca en la variable ;VELOCIDAD. ; ; Autor: Iván Trueba ; (c) Microsystems Engineering ; c/ Gral. Concha Nº39 - 8º ; 48012 Bilbao Tfno. 4223263 ; ;********************************************************************************************* list p = 16f84 ;Elección del modelo del PIC RADIX HEX ;Sistema de numeración hexadecimal. include "Regx84.inc" ;Se incluye la definición de registros para el PIC 16F84. TEMP1 EQU 0x0c VELOCIDAD EQU 0x0d org 0 goto INICIO org 5 ;********************************************************************************************* ;DELAY: Rutina de temporización que se usa entre cada paso del motor. DELAY: MOVLW 0X07 MOVWF TEMP1 DELAY_1: decfsz VELOCIDAD, F goto DELAY_1 decfsz TEMP1, F goto DELAY_1 RETURN ;********************************************************************************************** ;Dependiendo del valor que se introduzca en la variable giro el motor girará a diferentes ;velocidades. Cuanto mayor sea el valor de VELOCIDAD (0-255), más despacio girará el motor. GIRO: movlw .255 movwf VELOCIDAD RETURN ;********************************************************************************************** ;PROGRAMA PRINCIPAL. INICIO: bsf STATUS, RP0 movlw b'00010000' ;Se configura RA4 como entrada y el resto de la movwf PORTA ;puertaA como salida. clrf PORTB bcf STATUS, RP0 clrf INTCON ;Se anulan las interrupciones. BUCLE: call GIRO ;Se carga el valor de la variable VELOCIDAD movlw b'00001100' ;Primer paso para el giro hacia la derecha. movwf PORTA call DELAY ;Temporización antes del siguiente paso. CALL GIRO movlw b'00001110' ;Segundo paso. movwf PORTA call DELAY CALL GIRO movlw b'00001111' ;Tercer paso. movwf PORTA call DELAY CALL GIRO movlw b'00001101' ;Último paso. movwf PORTA call DELAY goto BUCLE ;Se vuelve a BUCLE para mirar el estado del interruptor ;RA4. END ;Final del programa. ;***********************************************************************************************