Autor Tema: Hola soy nuevo en el foro  (Leído 5665 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado VHRCH

  • PIC10
  • *
  • Mensajes: 7
Hola soy nuevo en el foro
« en: 12 de Junio de 2008, 01:45:19 »
Hola a todos soy Victor Hugo y estoy aprendiendo a programar PICS por mi propia cuenta. No se mucho, me se las intrucciones para el PIC16F84A pero aun empiezo a dar mis primeros pasos haciendo programas como sumas y restas binarias. Estoy terminando de leer la unidad y me pide que haga mis primeras 3 practicas para probramar el pic. Pero casi no le entiendo. La primera practica es:

Por los leds conectados al puerto 'B' se vizualiza el valor de una constante.

Bueno ese es el primer programa, aun que casi no le entiendo :(, no quiero que me lo digan por que quiero aprender con ayuda de ustedes :P, se los voy agradeser. :-/
Gracias, abrazos

Victor Hugo

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Hola soy nuevo en el foro
« Respuesta #1 en: 12 de Junio de 2008, 11:55:42 »
Hola

Lo que te pide el programa es que saques el valor de un registro de 8 bits por los 8 pines del puerto b.

Coméntanos qué parte no puedes hacer y te ayudamos, sirve de mucho si subes código fuente.

Desconectado firepic

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1130
    • JC Servicios
Re: Hola soy nuevo en el foro
« Respuesta #2 en: 12 de Junio de 2008, 12:47:55 »
Saludos vhrch, bienvenido al foro!
Pues como ha dicho el maestro migsantiago, sube tus avances (código que ya tengas hecho, esquemáticos, etc)... y aquí te vamos siguiendo y ayudando.
Ánimo, que te vas a divertir muchísimo programando PICs!
Nos leemos!  :mrgreen:
"Por la presunción solo se ocasiona una lucha, pero con los que consultan juntos hay sabiduría" (Proverbios 13:10).
Visita Mi Sitio Web

Desconectado VHRCH

  • PIC10
  • *
  • Mensajes: 7
Re: Hola soy nuevo en el foro
« Respuesta #3 en: 12 de Junio de 2008, 23:32:21 »
Muchas gracias MigSantiago y Firepic en realidad solo son dudas del programa:

;***************************************************Ensam_03.asm******************************************************
;
;Por el puerto B se obtiene el dato de las 5 lineas del puerto A al que le esta conectado
;un array de interruptores. Por ejemplo si en el puerto A se introduce "---11001", por el
;puerto B aparecera "xxx11001" (el valor de las primeras 3 lineas no importa).
;
;ZONA DE DATOS******************************************************************************************************

   __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC ;Configuración para
                                                                                                   ;grabador.
   LIST   P=16F84A      ;Procesador.
   INCLUDE <P16F84A.INC>   ;Definición de los operandos utilizados.

;ZONA DE CODIGOS***************************************************************************************************

   ORG   0         ;El programa comienza en la dirección 0 de memoria
               ;de programa.
Inicio   bsf   STATUS,RP0      ;Pone a 1 el bit 5 del STATUS. Acceso al Banco 1.
   clrf   TRISB         ;Las lineas del puerto B se configuran como salidas.
   movlw   b'11111111'
   movwf   TRISA         ;Las lineas del puerto A se configuran como entradas.
   bcf   STATUS,RP0      ;Pone a 0 el bit 5 del STATUS. Acceso al Banco 0.
Principal
   movf   PORTA,W      ;Lee el puerto A.
   movwf   PORTB         ;El contenido de W se visualiza en el puerto B.
   goto   Principal      ;Crea un ciclo cerrado.
   
   END            ;Fin del programa.



solo tengo duda en esta parte:

Inicio   bsf   STATUS,RP0      ;Pone a 1 el bit 5 del STATUS. Acceso al Banco 1.
   clrf   TRISB         ;Las lineas del puerto B se configuran como salidas.
   movlw   b'11111111'


Se que el "bsf " pone a 1 el bit del status, pero ¿por que esta RP0 y no RP1?  :shock:

En el programa esta "clrf TRISB" y luego abajo movlw  b" 11111111" estas instrucciones ¿son las que configuran como pines de salidas?


Se los voy a agradeser, por cierto Migsantiago yo tambien soy de México, Tabasco.
Gracias, abrazos

Victor Hugo

Desconectado Rulo

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 168
Re: Hola soy nuevo en el foro
« Respuesta #4 en: 13 de Junio de 2008, 02:56:12 »

    Hola VHRCH, bienvenido al foro.

        si ves el datasheet veras que RP0 es el bit 5 del regstro STATUS, el cual permite el acceso al banco 1 si RP0 = 1, y al banco 0 si RP0 = 0.

   Creo que para poner esas lineas tal cual aparecen deberias definir antes a Status y rp0

status   equ   0x03
rp0   equ   0x05

       con la instruccion      clrf   TRISB   pones como salida el puerto B.
       con las 2 lineas siguientes pones como entrada el puerto A        ( movlw   b'11111111'  y  movwf   TRISA )

                Un Saludo

Desconectado Leon Pic

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3610
    • Impresiones en 3D
Re: Hola soy nuevo en el foro
« Respuesta #5 en: 13 de Junio de 2008, 03:28:30 »
Cuando en el programa se dicta la siguiente instrucción

Código: [Seleccionar]
INCLUDE <P16F84A.INC>
No es necesario definir los nombres de los registros, como STATUS; Z; C; DC; etc. porque ya se hace dentro del fichero citado.

La razón por la que no se utiliza RP1, es porque en el 16F84, no se utiliza.

CLRF, lo que hace es poner a 0 todos los bit de una variable, en tu caso TRISB, que corresponde para ajustar como salida el puerto B. También se puede hacer de la siguiente manera:

Código: ASM
  1. MOVLW       B'00000000'            ;Cargo a W con 0
  2.               MOVWF       TRISB                    ; Lo vuelco en Trisb para hacer todas salidas.
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.

Desconectado VHRCH

  • PIC10
  • *
  • Mensajes: 7
Re: Hola soy nuevo en el foro
« Respuesta #6 en: 13 de Junio de 2008, 11:43:11 »
Gracias Rulo, y Leon pic

Ya veo que hay muchas formas de hacerlo mismo.
Gracias, abrazos

Victor Hugo

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Hola soy nuevo en el foro
« Respuesta #7 en: 13 de Junio de 2008, 22:35:52 »
Y solo para complementar sus respuestas, no se usa RP1 porque el PIC16F84A no tiene banco 2 ni 3. Normalmente en pics que sí lo tienen la tabla que define a qué banco estás apuntando es:

Código: [Seleccionar]
RP1 RP0 Banco
0 0 0
0 1 1
1 0 2
1 1 3

Desconectado VHRCH

  • PIC10
  • *
  • Mensajes: 7
Re: Hola soy nuevo en el foro
« Respuesta #8 en: 15 de Junio de 2008, 15:16:13 »
Gracias MigSantiago por la respuesta, tengo otra duda con el programa enterior. Ya se que bcf accesa al Banco 0, pero ¿para que se cambia al Banco 0?. He pensado en lo mas logico y no doy.

Muchas gracias.
Gracias, abrazos

Victor Hugo

Desconectado Leon Pic

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3610
    • Impresiones en 3D
Re: Hola soy nuevo en el foro
« Respuesta #9 en: 15 de Junio de 2008, 15:24:52 »
Pero, ya has accedido al banco 0 y banco 1. Por las dudas, te lo muestro:

Código: [Seleccionar]
   BCF      STATUS,RP0   ;Accede al banco 0
   BSF      STATUS,RP0   ;Accede al banco 1
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.

Desconectado firepic

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1130
    • JC Servicios
Re: Hola soy nuevo en el foro
« Respuesta #10 en: 15 de Junio de 2008, 15:26:45 »
Los registros TRISA y TRISB están en el banco 1, por eso antes de poder escribir en ellos haces:
Código: ASM
  1. bsf   STATUS,RP0
Para cambiarte al banco 1 y accesar a ellos.
Pero luego quieres trabajar con los puertos, y resulta que los registros correspondientes PORTA y PORTB están en el banco 0.
Entonces tienes que hacer:
Código: ASM
  1. bcf   STATUS,RP0
Para volver a pasarte al banco 0 y accesar a los puertos.
De todos modos te recomiendo que le eches una mirada a la datasheet... allí encontrarás el mapa de memoria donde puedes ver la ubicación de todos los Registros de Funciones Especiales (SFR) y los Registros de proósito general.
Espero haberte ayudado.
Saludos, nos leemos!  :mrgreen:
"Por la presunción solo se ocasiona una lucha, pero con los que consultan juntos hay sabiduría" (Proverbios 13:10).
Visita Mi Sitio Web

Desconectado VHRCH

  • PIC10
  • *
  • Mensajes: 7
Re: Hola soy nuevo en el foro
« Respuesta #11 en: 15 de Junio de 2008, 18:35:21 »
Hola Fire pic y Leo pic, muchisimas gracias, al principio eso me imagine, pero me quedo la duda por que en el libro que estoy leyendo hace un ejemplo y explica que TRIS A Y PORT A tienen lis mismos 5 bits bajos y que eso no importaba. Ya imprimí la hoja de SFR.

Les agradesco mucho  :-/ mas que entendido. :mrgreen:
« Última modificación: 15 de Junio de 2008, 21:37:25 por VHRCH »
Gracias, abrazos

Victor Hugo

Desconectado elmasvital

  • Administrador
  • PIC24H
  • *******
  • Mensajes: 1713
Re: Hola soy nuevo en el foro
« Respuesta #12 en: 29 de Junio de 2008, 04:03:56 »
Hola Fire pic y Leo pic, muchisimas gracias, al principio eso me imagine, pero me quedo la duda por que en el libro que estoy leyendo hace un ejemplo y explica que TRIS A Y PORT A tienen lis mismos 5 bits bajos y que eso no importaba. Ya imprimí la hoja de SFR.

Les agradesco mucho  :-/ mas que entendido. :mrgreen:

TrisA y PortA son dos registros que configuran el puerto A. TrisA configura si son de entrada o de salida y PortA configura su estado logico a 0 o a 1. Luego mencionas algo de los 5 bits mas bajos. Normalmente una puerta tiene 8 bits, lo que te indica que solo está implementado 5 de esos 8 (del 0 al 4) pero que no ocurre anda si intentas asignar valores a los 3 bits mas altos, será ignorado.

1 saludo

Desconectado gasparin

  • PIC10
  • *
  • Mensajes: 20
Re: Hola soy nuevo en el foro
« Respuesta #13 en: 14 de Julio de 2008, 02:04:04 »
Saludos cordiales a todos
Me es un gusto dirigirme a ustedes apoyándome en el tema de estos mensajes
Ya que empezamos en esta interesante rama de la electrónica la programación
E seguido con mucho interés los temas que abordan para principiantes
Como el presente que exponen con ejemplos básicos que son de gran ayuda para dar los primeros pasos en materia de programación
Mis felicitaciones a todos con mucho respeto desde el salvador reciban un sincero abraso  :) 
El que no nace para servir no sirve para vivir

Desconectado gasparin

  • PIC10
  • *
  • Mensajes: 20
Re: Hola soy nuevo en el foro
« Respuesta #14 en: 14 de Julio de 2008, 02:05:03 »
Hola
Se me olvidaba si en algo podemos colaborar
Amigos no duden en participarlo
Será un placer en intentarlo  :-/
« Última modificación: 14 de Julio de 2008, 02:09:16 por gasparin »
El que no nace para servir no sirve para vivir