TODOPIC

Mecatrónica => Robótica => Mensaje iniciado por: Kardia en 12 de Diciembre de 2008, 02:23:25

Título: Mi Primer Proyecto
Publicado por: Kardia en 12 de Diciembre de 2008, 02:23:25
Primeramente soy nuevo en el foro  :), inicio mi primer tema para encontrar los errores que estoy cometiendo, ya que uno no nace aprendiendo de la noche a la mañana  :lol: :lol:
Les explico en que consiste lo que quiero implementar; pero antes yo siempre empiezo por una previa simulacion de cualquier diagrama antes de implementarlo. Pues consta de un brazo robotico de 2 grados; ya se que hay muchos por la red (5 a 6 grados) pero muy pocos trabajan con el lenguaje ASM, es por ello que quiero empezar yo con este diseño; me defiendo en el ASM, pero mi problema ahora es que no he trabajado mucho con los LCD; un LCD por que??? en si solo para poder visualizar una serie de mensajes que seran activados por unos pulsadores que permiten girar los motores paso a paso.
Empeze primeramente con el programa en MPLAB para el giro de los motores  8) 8) pero cuando empeze a insertar el codigo del LCD no me cuadra donde tiene que ir  :shock: :shock: y veo que estoy cometiendo errores muy altos y no se en donde????
Citar
he aqui mi codigo, porsiaca no uso las rutinas retardos.inc ni otra que conosca, esta rutina es la que mayormente usan algunos.

LIST       P=16F84A
INCLUDE    <P16F84A.inc>
RADIX      HEX

STATUS       EQU 03h ; REGISTRO ESTADO
PORTA       EQU 05h ; PUERTO A
PORTB       EQU 06h ; PUERTO B
OPTION_REG    EQU 81h ; REGISTRO DE INTERRUPCION
INTCON       EQU 0bh
TRISA       EQU 85h ; REGISTRO CONFIGURACION PUERTO A
TRISB       EQU 86h ; REGISTRO CONFIGURACION PUERTO B
CONTA       EQU 0X0D   ;Damos el nombre de CONTA a dir. 0Dh(USO GENERAL)
CONTB       EQU 0X0E   ;Damos el nombre de CONTB a dir. 0Eh(USO GENERAL)
CONTC       EQU 0X0F   ;Damos el nombre de CONTC a dir. 0Fh(USO GENERAL)

         ORG 00h ; INDICA AL COMPILADOR DONDE COMIENZA EL PROGRAMA
         GOTO INICIO ; VA A SUBRUTINA INICIO
         ORG 04h

INICIO
         BSF STATUS,5
         MOVLW B'11111' ; CARGA '11111' EN EL REGISTRO DE TRABAJO 'W'
         MOVWF TRISA ; CARGA 'W' EN EL PUERTO A
         MOVLW B'00000000' ; CARGA '00000000' EN EL REGISTRO DE TRABAJO 'W'
         MOVWF TRISB ; CARGA 'W' EN EL PUERTO B
         MOVLW B'00000111' ; CARGA '00000111' EN EL REGISTRO DE TRABAJO 'W'
         MOVWF OPTION_REG ; CONFIGURAMOS TMR0 COMO CONTADOR DESCENDENTE
         BCF STATUS,5 ; VUELVE A 0
         CLRF PORTA
         CLRF PORTB

GIRO
         BTFSC PORTA,0 ; EN ESTE PUERTO DA EL GIRO A LA IZQUIERDA
         GOTO GIRO1
         GOTO IZQUIERDA
GIRO1
         BTFSC PORTA,1 ; EN ESTE PUERTO DA EL GIRO A LA DERECHA
         GOTO GIRO2
         GOTO DERECHA
GIRO2
         BTFSC PORTA,2 ; EN ESTE PUERTO ABRE
         GOTO GIRO3
         GOTO ABRE
GIRO3
         BTFSC PORTA,3 ; EN ESTE PUERTO CIERRA
         GOTO GIRO
         GOTO CIERRA
DERECHA
         MOVLW B'00001100' ; PRIMER PASO.
         MOVWF PORTB
         CALL TIEMPO ; TEMPORIZACIÓN ANTES DE PASAR AL SIGIENTE PASO
         MOVLW B'00000110' ; SEGUNDO PASO
         MOVWF PORTB
         CALL TIEMPO
         MOVLW B'00000011' ; TERCER PASO
         MOVWF PORTB
         CALL TIEMPO
         MOVLW B'00001001' ; CUARTO PASO
         MOVWF PORTB
         CALL TIEMPO
         GOTO GIRO ; SE VUELE A GIRO PARA MIRAR EL ESTADO DEL BIT

IZQUIERDA
         MOVLW B'00001001' ; PRIMER PASO
         MOVWF PORTB
         CALL TIEMPO ; TEMPORIZACIÓN ANTES DE PASAR AL SIGIENTE PASO
         MOVLW B'00000011' ; SEGUNDO PASO
         MOVWF PORTB
         CALL TIEMPO
         MOVLW B'00000110' ; TERCER PASO
         MOVWF PORTB
         CALL TIEMPO
         MOVLW B'00001100' ; CUARTO PASO
         MOVWF PORTB
         CALL TIEMPO
         GOTO GIRO ; SE VUELVE A GIRO PARA MIRAR EL ESTADO DEL BIT

CIERRA
         MOVLW B'11000000' ; PRIMER PASO.
         MOVWF PORTB
         CALL TIEMPO ; TEMPORIZACIÓN ANTES DE PASAR AL SIGIENTE PASO
         MOVLW B'01100000' ; SEGUNDO PASO
         MOVWF PORTB
         CALL TIEMPO
         MOVLW B'00110000' ; TERCER PASO
         MOVWF PORTB
         CALL TIEMPO
         MOVLW B'10010000' ; CUARTO PASO
         MOVWF PORTB
         CALL TIEMPO
         GOTO GIRO ; SE VUELE A GIRO PARA MIRAR EL ESTADO DEL BIT

ABRE
         MOVLW B'10010000' ; PRIMER PASO
         MOVWF PORTB
         CALL TIEMPO ; TEMPORIZACIÓN ANTES DE PASAR AL SIGIENTE PASO
         MOVLW B'00110000' ; SEGUNDO PASO
         MOVWF PORTB
         CALL TIEMPO
         MOVLW B'01100000' ; TERCER PASO
         MOVWF PORTB
         CALL TIEMPO
         MOVLW B'11000000' ; CUARTO PASO
         MOVWF PORTB
         CALL TIEMPO
         GOTO GIRO ; SE VUELVE A GIRO PARA MIRAR EL ESTADO DEL BIT

TIEMPO
         movwf   PORTB            ;sacamos los pasos por el PORTb
         call    Retardo_100ms      ;realizamos el llamado para el retardo
         return                  ;retorno de donde fue llamado

Retardo_100ms                     ;retardo de 100 milisegundos
         movlw   d'1000'            ;OJO d100=100mlsegundos  cambio otros valores como ejemplo d50=50mlsegundos
         goto   Retardos_ms

Retardos_ms
         movwf   CONTB         

R1ms_BucleExterno
         movlw   d'249'         
         movwf   CONTA         

R1ms_BucleInterno
         nop            
         decfsz   CONTA,F         
         goto   R1ms_BucleInterno   
         decfsz   CONTB,F         
         goto   R1ms_BucleExterno    
         return
                                   END

Ahora como empiezo e inserto el codigo del LCD??? y que entradas tomo para la visualizacion del mismo????

Salu2 y gracias  :-/ :-/ :-/
Título: Re: Mi Primer Proyecto
Publicado por: dogflu66 en 13 de Diciembre de 2008, 10:36:53
Hola Kardia bienvenido;

Como el problema que tienes es especifico de software y no de robotica, si no obtienes respuesta por aquí,
te recomiendo que hagas la consulta en el foro correspondiente, en este caso en el de Assembler ahí será mucho más fácil
que alguien te eche una mano a poner en marcha el lcd. Es posible que en el foro de Assembler no te puedan indicar como
usar un sensor de ultrasonidos o a manejar un motor, pero para manejar un LCD, teclado, puerto serie, etc., seguro que si.


Por aquí es más fácil que obtengas respuesta sobre mecanica, motores, sensores, uniones, control RF o por infrarrojos, etc.
Título: Re: Mi Primer Proyecto
Publicado por: dogflu66 en 13 de Diciembre de 2008, 10:42:09
De aqui te puedes bajar un esquema que utiliza un LCD de 2x16 caracteres a 8bit.

http://www.freewebs.com/glafebre/miguelito.htm
Título: Re: Mi Primer Proyecto
Publicado por: dogflu66 en 13 de Diciembre de 2008, 10:55:48
Y desde aquí te puedes bajar un conexionado para el LCD trabajando a 4 Bit:

http://www.todopic.com.ar/foros/index.php?topic=14917.msg127169#msg127169


PD: De todas formas si te sobran pin en el micro no te recomiendo que uses la versión a 4bit,
no es porque no funcione bien, es porque funciona mas lento el LCD que trabajando a 8bit.