Autor Tema: Motor paso a paso en ASM  (Leído 8131 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado golupic

  • PIC10
  • *
  • Mensajes: 9
Motor paso a paso en ASM
« en: 22 de Enero de 2007, 10:12:11 »
Hola a todos.
Estoy empezando en esto. Estoy buscando un programa que me sirva de ejemplo (16f87x) para controlar un motor paso a paso en ensamblador y no lo encuentro por ningún lado, a ver si alguiien me puede indicar alguno.
Saludos

Desconectado Chaly29

  • Moderador Global
  • DsPIC33
  • *****
  • Mensajes: 4315
Re: Motor paso a paso en ASM
« Respuesta #1 en: 22 de Enero de 2007, 12:21:43 »
Hola golupic, aquí te dejo un programita que realicé para los 16F628A, en si mismo el programa no es muy distinto a lo que quedaría si lo adaptamos a un 16F877, las diferencias solo estarían en la parte de configuración del micro.

Espero te sea de ayuda, un saludo.



;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;       Control de los motores para el movimiendo de los carros de la fresadora
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

   LIST      P = 16F628A
   INCLUDE      <P16F628A.INC>
   ERRORLEVEL   -302

;............................

   __CONFIG   _BODEN_OFF&_BOREN_OFF&_CP_OFF&_DATA_CP_OFF&_PWRTE_ON&_WDT_ON&_LVP_OFF&_MCLRE_ON&_HS_OSC

#DEFINE      PWM      FLAG,0
#DEFINE      LED1      PORTA,2
#DEFINE      LED2      PORTA,3

#DEFINE      DIRECC      PORTB,1

PASO      EQU      .32
SALIDA      EQU      .33
FLAG      EQU      .34

;............................

   ORG   0
    goto   INICIO

   ORG   4
   goto   PULSO

;............................
TABLA
   movf   PASO,W
   addwf   PCL,F
   nop
   retlw   B'11100000'   ;1
   retlw   B'11000000'   ;2
   retlw   B'11010000'   ;3
   retlw   B'10010000'   ;4
   retlw   B'10110000'   ;5
   retlw   B'00110000'   ;6
   retlw   B'01110000'   ;7
   retlw   B'01100000'   ;8

;............................
PULSO
   clrwdt
   btfss   INTCON,INTF
   goto   TIEMPO
   movlw   .130
   movwf   TMR1H
   clrf   TMR1L
   bsf   PWM
   bcf   INTCON,INTF      ;Se borra el flag de la interrupción usada BIT1 , int. en RB0
;............................
   btfsc   DIRECC
   goto   DERECHA

   bsf   LED1
   bcf   LED2
   incf   PASO,F
   movlw   .9
   subwf   PASO,W
   btfss   STATUS,Z
   goto   NO1
   movlw   .1
   movwf   PASO
NO1
   call   TABLA
   movwf   SALIDA
   clrf   PORTB
   iorwf   PORTB,F
   goto   SAL1

DERECHA
   bcf   LED1
   bsf   LED2
   decfsz   PASO,F
   goto   NO2
   movlw   .8
   movwf   PASO
NO2
   call   TABLA
   movwf   SALIDA
   clrf   PORTB
   iorwf   PORTB,F
;............................
SAL1
   retfie
;............................
TIEMPO
   btfsc   PWM
   goto   APAGA

   movlw   H'CF'
   movwf   TMR1L
   movlw   H'FF'
   movwf   TMR1H
   movf   SALIDA,W
   andwf   PORTB,F
   bsf   PWM
   goto   SAL2
APAGA
   movlw   H'E2'
   movwf   TMR1L
   movlw   H'FF'
   movwf   TMR1H
   movlw   B'11110000'
   movwf   PORTB
   bcf   PWM
SAL2
   bcf   LED1
   bcf   LED2
   bcf   PIR1,TMR1IF      ;Se borra el flag de la interrupción usada BIT1 , int. en RB0
   retfie

;............................
SACAR
   clrf   PORTB
   movf   SALIDA,W
   iorwf   PORTB,F
   return

;............................
INICIO               ;Inicio del programa principal

   clrwdt
   clrf   PORTA
   movlw   B'11110000'
   movwf   PORTB

   movlw   .7
   movwf   CMCON
   bcf   STATUS,RP1
   bsf   STATUS,RP0
   movlw   B'11011000'
   movwf   OPTION_REG
   movlw   B'11110011'
   movwf   TRISA
   movlw   B'00001111'
   movwf   TRISB
   bcf   STATUS,RP0

   movlw   B'11010000'
   movwf   INTCON
   clrf   TMR1L
   movlw   .130
   movwf   TMR1H
   bsf   STATUS,RP0
   movlw   B'00000001'
   movwf   PIE1
   bcf   STATUS,RP0
   movlw   B'00000001'
   movwf   T1CON

   movlw   .1
   movwf   PASO
   call   TABLA
   movwf   SALIDA
   call   SACAR
   bsf   PWM
RET
   nop
   goto   RET

;............................
   end
La teoría es cuando se sabe todo y nada funciona. La práctica es cuando todo funciona y nadie sabe por qué.

Desconectado golupic

  • PIC10
  • *
  • Mensajes: 9
Re: Motor paso a paso en ASM
« Respuesta #2 en: 22 de Enero de 2007, 15:02:46 »
Gracias Charly29, es lo que estaba buscando.

Saludos

Desconectado Chaly29

  • Moderador Global
  • DsPIC33
  • *****
  • Mensajes: 4315
Re: Motor paso a paso en ASM
« Respuesta #3 en: 22 de Enero de 2007, 22:29:02 »
Hola golupic, me e olvidado de aclararte que el programa anterior trabaja con el sistema de medio paso, por lo que a un motor de 200 pasos lo "transforma" en uno de 400, pero si tu necesitas solo el sistema de pasos normal de seguro te costará poco trabajo modificar el programa para conseguirlo.

Me alegra de que te haya sido de utilidad, un saludo.

Atte. CARLOS.
La teoría es cuando se sabe todo y nada funciona. La práctica es cuando todo funciona y nadie sabe por qué.

Desconectado golupic

  • PIC10
  • *
  • Mensajes: 9
Re: Motor paso a paso en ASM
« Respuesta #4 en: 23 de Enero de 2007, 09:21:54 »
Ok

Gracias