Robot esquiva obstaculos duda

Estoy realizando un proyecto escolar donde tengo que hacer que un carro esquive obstaculos tengo el diagrama y la programacion pero tengo dudas sobre la programacion estoy utilizando un motor de directa , un pic18 y un puente h para el motor las entradas que le estoy dando son entrada logica de 1 y 0 para factor de simulacion ya que esas entradas serian los sensores de proximidad aqui les dejo la programacion de el pic ara ver si alguien me puede ayudar ya que cuando lo simulo el motor no se mueve con ninguna de las combinaciones que le doy
gracias

LIST P=18F452
#include <p18f452.inc>



#DEFINE DERECHA PORTD,0 ;
#DEFINE IZQUIERDA PORTD,1 ;
#DEFINE SINTRACCION PORTD,2 ;


ORG 0 ;Empieza desde resposo
GOTO PRINCIPAL ;Nos vamos a la funcion 'PRINCIPAL'

; Establecimiento de constantes

STATUS equ 0XFD8 ; Damos nombre al registro del stetus del PIC18
TRISA equ 0XF92
PORTA equ 0XF80
TRISD equ 0XF95
PORTD equ 0XF83

SETF TRISA
SETF TRISD
;
;/////////////////////////////////////////dECLARA sALIDAS Y eNTRADAS
PRINCIPAL
bsf STATUS,Z
movlw b'00000000'
movwf TRISD
movlw b'11111111'
movwf TRISA
bcf STATUS,Z

INICIO
movlw B'00000001'
XORWF PORTA,W
BTFSC STATUS,Z
GOTO MOVERDERECHA


movlw B'00000010'
XORWF PORTA,W
BTFSC STATUS,Z
GOTO MOVERIZQUIERDA


movlw B'00000000'
XORWF PORTA,W
BTFSC STATUS,Z
GOTO MOVERSINTRACCION


movlw B'00000011'
XORWF PORTA,W
BTFSC STATUS,Z
GOTO MOVERSINTRACCION
goto INICIO

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

MOVERDERECHA

bsf DERECHA
bcf IZQUIERDA
bcf SINTRACCION
goto INICIO

MOVERIZQUIERDA

bsf IZQUIERDA
bcf DERECHA
bcf SINTRACCION
goto INICIO

MOVERSINTRACCION

bcf IZQUIERDA
bcf DERECHA
bsf SINTRACCION
goto INICIO
end
 
como funciona tu puente H?
que esperas que haga el motor?
con que estas simulando tu circuito?
por ejemplo, el L293D (el mejor amigo del roboticista que empieza) necesita un valor alto en Enable, el cual puede ser tu registro "SINTRACCION", en caso de estar usando este integrado u otro similar, estarias apagando el puente a la hora de decirle que gire, ya que pones el Enable en 0 cuando debe estar en 1
Considera el armar el cerebro (pic y accesorios) en un proto o en una entrenadora, y ve si los pines de izquierda y derecha prenden los leds que se supone deben prender.
Otra idea, yo normalmente uso los registros port (05h,06h,07h) para manejar el TRIS, ya que al cambiar de banco, el PORT direcciona al TRIS, (admito no haber manejado un pic de la serie 18, pero todos son compatibles mas o menos), tal vez estas llamando al PORT al hacer un direccionado a un registro "movido".
Y finalmente recuerda, los simuladores no representan todos los comportamientos reales de los elementos, por lo que puede que un motor solo sea un cable para el simulador.
 
supongo que no se te esta dando el salto en el comando btfsc. Lo uqe tienes que hacer es declarar una variable con su correspondiente codigo.
ejm movlw B'00000001'
movwf cod1

esa variable usala en el programa principal
AVISANOS QUE TAL TE FUE
 
Atrás
Arriba