# Robot esquiva obstaculos duda



## Betosnake (Abr 12, 2009)

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


----------



## karl (Abr 14, 2009)

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.


----------



## rogerca (Feb 16, 2010)

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


----------

