Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

28/10/2008 #1

Avatar de Meta

Enviar un byte en hexadecimal.
Hola:

Con el 16F84A quiero enviar un byte para el puerto serie RS232, por ejemplo, 0x61 cuando el interruptor de entrada del puerto A está a 1 activado y 0x60 cuando está a 0 desactivado. Cristal a 4MHz.

Saludos.
29/10/2008 #2

Avatar de Meta

Quizás me he expresado mal.

En este ejemplo http://www.pic16f84a.org/index.php?o...us_Capitulo_20 quiero enviar un dato así 0x61 al puerto serie hacia el PC con el 16F84A.

¿Cómo se hace?
29/10/2008 #3


Habilita la transmisión serial y mueve el dato 0x61 al registro TXREG.
29/10/2008 #4

Avatar de Meta

pic-man dijo:
Habilita la transmisión serial y mueve el dato 0x61 al registro TXREG.
ammmmmmmmm

¿sabes hacerlo?
30/10/2008 #5


Lo siento, olvidé que el 16f84 no tiene módulo USART. Si quieres usar el puerto serie con ese pic puedes usar algún compilador de C que incluya una librería para eso. Supongo que los compiladores más comunes deben tener una librería para eso.

El libro ese del 16f84 no explica como hacerlo en Basic o C?

La otra es que te pases a cualquier pic 16F que cuente con puerto serie y ahi con gusto te digo como hacer lo que quieres en ensamblador. Del 16f84 hay mucha información pero esa misma información te sirve para un 16f628a por ejemplo, pic que si tiene módulo USART.
03/11/2008 #6


implementa una uart por software
03/11/2008 #7

Avatar de Meta

LA comunicación con el puerto serie no hace falta USART, basta con hacerlo con ASM y funciona el puerto serie.

El problema es cómo hacerlo.
04/11/2008 #8


Meta dijo:
LA comunicación con el puerto serie no hace falta USART, basta con hacerlo con ASM y funciona el puerto serie.
No te entendi, podrias explicarte mejor...?
04/11/2008 #9

Avatar de Meta

eidtech dijo:
Meta dijo:
LA comunicación con el puerto serie no hace falta USART, basta con hacerlo con ASM y funciona el puerto serie.
No te entendi, podrias explicarte mejor...?
Muchas personas, creen que no se puede controlar el puerto serie en el 16F84A porque no incluye USART. Pues digo que si se puede.
04/11/2008 #10


Justamente eso fue lo que te dijo eidtech, que aunque no tiene tu puedes implementar una USART mediante software. Es decir que implementes el protocolo de comunicación serial.

Sería interesante implementar algo asi. En el datasheet de algún pic con puerto serie explica que es lo que sucede cuando se lleva a cabo la recepción de un dato. Es algo más o menos asi:

El circuito de recepción se inicia en el flanco de bajada del primer bit. Este bit es el bit de INICIO y siempre es un cero. Se espera el tiempo de medio bit y se vuelve a verificar el bit de INICIO justo en la mitad para ver si aún es cero. Si no es cero entonces se aborta la recepción y el circuito vuelve a esperar el siguiente flanco de bajada, esperando de nuevo un bit de INICIO. Si el bit si fue cero entonces se espera el tiempo de un bit completo y se vuelve a leer el bit. Ese bit se guarda. De nuevo se espera el tiempo de un bit completo y se vuelve a leer el bit. El bit que ya se había guardado se recorre para darle lugar al nuevo bit. Este proceso se repite hasta que todos los bits se hayan recibido y recorrido. Por último se lee un último bit, el bit de PARADA que siempre es un uno. Si en la posición del bit de PARADA hubiera un cero entonces hubo un error en la recepción y el dato recibido no es válido.

Eso lo puedes implementar en un pic16f84. Para detectar el flanco de bajada del primer bit supongo que podrias usar la interrupción de RB0. Lo demás es usar timers o algún tipo de retardo para contar el tiempo de medio bit y de un bit completo. Debe tener su complejidad, pero se puede implementar haciendo lo que aqui te digo. El tiempo entre cada bit depende de la velocidad a la que quieras manejar el puerto. La verdad ahi si me pierdo un poco, en telecomunicaciones nunca entendí bien eso del baud rate, pero de seguro alguien del foro te puede echar la mano.

La transmisión supongo que es más sencilla, pones en algún pin un nivel bajo que sea el bit de inicio, luego sacas el dato de forma paralela por algún puerto y lo vas recorriendo bit a bit, al final pones el pin en nivel alto y con eso tienes tu bit de parada. De nuevo lo importante y crítico son los tiempos.

Suerte con el proyecto.
04/11/2008 #11

Avatar de Meta

Está explicado en el libro www.pic16f84a.org
04/11/2008 #12

Avatar de Moyano Jonathan

Hola meta, acá está el proyecto que estabas necesitando

Utilizo un PIC16F84A
Cristal de 4.00Mhz
Lenguaje C de CCS compiler.

Cuando pulsas manda 0x61 y cuando lo soltas manda 0x60
Archivos Adjuntos
Tipo de Archivo: rar solucin_en_c_de_ccs_382.rar (11,7 KB (Kilobytes), 120 visitas)
04/11/2008 #13


Meta dijo:
Está explicado en el libro www.pic16f84a.org
Si está explicado entonces que es lo que necesitas? No puedes implementarlo con la explicación que dan ahi?
04/11/2008 #14

Avatar de Meta

Necesito, algo mejor que se entienda o código con menos complicaciones..
04/11/2008 #15

Avatar de Meta

Moyano Jonathan dijo:
Hola meta, acá está el proyecto que estabas necesitando

Utilizo un PIC16F84A
Cristal de 4.00Mhz
Lenguaje C de CCS compiler.

Cuando pulsas manda 0x61 y cuando lo soltas manda 0x60
Voy a mirar a ver y gracias.
04/11/2008 #16

Avatar de Moyano Jonathan

Ok de nada
05/11/2008 #17


Meta dijo:
Necesito, algo mejor que se entienda o código con menos complicaciones..
Vamos, que quieres aprender pero no te quieres complicar. Pues así son las cosas, quieres usar puerto serie con el pic 16f84 y programando en ensamblador? Pues no te queda de otra que complicarte la vida e implementar tu mismo la rutina del puerto serie.

Moyano Jonathan te resolvió el problema y te mandó un programa hecho en C, esa era otra alternativa ya que los compiladores de C incluyen librerías para el manejo de puerto serie aún en los pic que no cuentan con este como el caso del viejo y conocido 16f84.

Pero es que tu preguntas como se puede hacer cuando quieres preguntar "como lo puedo hacer sin batallar?"
05/11/2008 #18

Avatar de Meta

Moyano Jonathan dijo:
Ok de nada
Muy buena la idea. Más fácil de lo que creía. Gracias.

En hex ocupa más, pero bueno.
05/11/2008 #19

Avatar de Moyano Jonathan

Es el problema de la programación en c pero con la serie 18f ya está solucionado
07/11/2008 #20


y un max 232?...
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.