Pic 16F84 Motores

Tengo este programa para mover un motor en dos sentidos....esta bien en MPLAB, pero por ahi lei que habia algo mal en esto, y era que en lugar de poner clrf PORTB, debia poner clrf TRISB, PARA Que LAS LINEAS SE PUDIERAN CONFIGURAR COMO SALIDA...PERO...CUAL ES EL CORRECTO?

****************************************************************


_CONFIG_CP_OFFand_WDT_OFFand_PWRTE_ONand_XT_OSC


list p =16F84A
INCLUDE<p16f84A.inc>


#define EntradaMarcha PORTA,0 ;interruptor puesta en marcha
#define EntradaSentido PORTA,4 ;interruptor de sentido de giro


ORG 0


inicio
bsf STATUS,RP0
bsf EntradaMarcha ;configura las lineas de entrada
bsf EntradaSentido
clrf PORTB ;Las lineas del puerto configuradas como salida
bcf STATUS,RP0
principal
clrw ; con esta combinacions e detiene el motor
btfsc EntradaMarcha ;comprueba el estado del interruptor funcionamiento

goto ActivaSalida

movlw b'00010010' ;Gira en un sentido
btfsc EntradaSentido ;Comprueba el sentido de giro deseado
movlw b'00010001' ;Gira en el otro sentido

ActivaSalida
movwf PORTB

goto principal

END



list p =16F84A
INCLUDE<p16f84A.inc>


#define EntradaMarcha PORTA,0 ;interruptor puesta en marcha
#define EntradaSentido PORTA,4 ;interruptor de sentido de giro


ORG 0


inicio
bsf STATUS,RP0
bsf EntradaMarcha ;configura las lineas de entrada
bsf EntradaSentido
clrf PORTB ;Las lineas del puerto configuradas como salida
bcf STATUS,RP0
principal
clrw ; con esta combinacions e detiene el motor
btfsc EntradaMarcha ;comprueba el estado del interruptor funcionamiento

goto ActivaSalida

movlw b'00010010' ;Gira en un sentido
btfsc EntradaSentido ;Comprueba el sentido de giro deseado
movlw b'00010001' ;Gira en el otro sentido

ActivaSalida
movwf PORTB

goto principal

END
 
Última edición por un moderador:
A ver si te puedo ayudar... TrisA=PortA y TrisB=PortB. La difernecia es que los Port estan en el banco 0 si no me equivoco y los Tris en el banco 1. Los Tris es el registro donde vos configuras los puertos como entradas(con un 1) o salidas (con un 0) y se encuentran en el banco 1 y los Port son los registros donde vos lees o escribis los datos.

Ahora cuando vos queres leer un bit o poner un valor en algun puerto tenes que ir al banco 0 y escribirlo en el puerto. Se entiende?

Entonses si vos queres poner tu PortB como salida vas al banco 1, pones tu PortB en 0(es decir el TrisB en 0) y ya te queda como salida. Si vos queres poner algo en PortB vas al banco 0 y le cargas al PortB con algun valor.

Espero que se clara mi explicacion. Si no pregunta de nuevo. Suerte y saludos.
 
Atrás
Arriba