Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

01/02/2007 #1


Ayuda con un programa PIC 16f84a
Hola a todos! tengo un código de un programa, supuestamente lo que hace es que cuando dejas presionado un boton un motor paso a paso gira para un lado, cuando dejas pulsado otro boton gira para el sentido contrario. El problema es que estoy intentando traducir lo que hace y no lo consigo, mira que vienen indicaciones en ingles pero ni con esas. Alguien me pude ayudar?. Un saludo:

El código del programa es el siguiente:
LIST p=16F84 ;
#include "P16F84.INC" ; Include header file
CBLOCK 0x10 ; almacenamiento temporal
pos
dc1
dc2
ENDC
LIST p=16F84 ; PIC16F84A es el procesador designado
#include "P16F84.INC" ; Archivo de cabecera
CBLOCK 0x10 ; almacenamiento temporal
ENDC
ORG 0
entrypoint goto start
ORG 4
intvector goto intvector
start clrw ; Ponemos a cero w
movwf PORTB ; Ponemos PORTB a cero antes de habilitarlo
bsf STATUS,RP0 ; Seleccionamos Bank 1
movlw 0xF0 ; port B bits 0-3 como salidas
movwf TRISB ; Movemos datos de w a TRISTB
bcf STATUS,RP0 ; Seleccionamos Bank 0
movlw 3 ; Inicializamos la posición de motor
movwf pos
movwf PORTB
call delay
clrf PORTB ;Motor parado

;Main loop
loop btfss PORTA,0 ;Pruebe el botón en el sentido de las agujas del reloj
call stepcw
btfss PORTA,1 ; Prueba el boton en sentido antiorario
call stepccw
goto loop
;Rotate one step clockwise
stepcw bcf STATUS,C ; Clear the carry flag
btfsc pos,3 ; Set carry if this bit set
bsf STATUS,C
rlf pos,W ; Pick up and rotate the motor's current position
andlw 0x0F ; Mask to lower nibble
movwf pos
movwf PORTB ; Drive the outputs
call delay ; Wait
clrf PORTB ; Clear the output
return
;Rotate one step counter clockwise
stepccw bcf STATUS,C ; Clear the carry flag
btfsc pos,0
bsf pos,4
rrf pos,W ; Pick up and rotate the motor's current position
andlw 0x0F ; Mask to lower nibble
movwf pos
movwf PORTB ; Drive the outputs
call delay ; Wait
clrf PORTB ; Clear the output
return
; This routine implements the delay between steps,
; and thus controls the motor speed.
delay movlw 18 ; Outer loop iteration count
movwf dc1
dl1 clrf dc2 ; Initialize inner loop
dl2 nop
nop
decfsz dc2,F
goto dl2
decfsz dc1,F
goto dl1
return
END
03/04/2007 #2


Acabo de leer tu mensaje, aún requieres ayuda con este programa?

Saludos
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.