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

Temas similares

22/06/2013 #1


Retardos y USART en PIC16F84A en lenguaje C
Yo tengo una dudota
necesito saber como hacer una función de retardo por software para cualquier microntrolador pic.
Ya sé que mikroc tiene una función llamada delay donde le pones cuantos ms.
Pero esto va por pura curiosidad, ademas de como hacer comunicación USART para el PIC16F84A todo en C.
Todo es sólo para conocer un poco mas acerca de estos microcontroladores
22/06/2013 #2
Moderador

Avatar de Chico3001

simple ....

for (i=0; i<65536; i++ );
22/06/2013 #3

Avatar de ByAxel

Si buscas precisión, lee y aplica un poco de assembler ya que cada instrucción se ejecuta en OSC/4 (por ejemplo 4Mhz hace que cada instrucción dure 1us -microsegundo-) de lo contrario ya te dijeron pero si "i" fuera integer, seria hasta 65535..., respeta los límites de los tipos en las variables.

Saludos.
22/06/2013 #4


ok, entiendo eso de i como integer, entonces tomando en cuenta las instrucciones que debe llevar para hacer el ciclo for y el manejo de una variable d 16 bits. ¿Cómo cuanto tiempo dura esa instrucción si el cristal es d 4MHz?
22/06/2013 #5

Avatar de ByAxel

Aproximadamente 65.535ms, ¿Cómo?... has el cálculo con lo que antes mencioné.
22/06/2013 #6


Bueno me refiero a que el ciclo for debe tener su equivalente en instrucciones en asm que también requieren tiempo para ejecutarse, no solo influye el incremento de una variable sino también instrucciones de salto, de MOV o incluso lógicas y de comparación si no me equivoco.
Bueno hace un rato encontré esto:

Código:
For K=1 to 10 step 1
   …. Instrucciones
Next K

   movlw   .1
   movwf   K

BUCLEFOR:
   ;Instrucciones      
   
   incf   K, F
   movf   K, W
   xorlw   .10
   btfss   STATUS,Z
   goto   BUCLEFOR

   ;...
es un ciclo for en asm y ya esta indicado que "K" debe declararse previamente, pero el dato K está como si fuese un char y no int, ¿supongo que debe haber mas instrucciones en asm para manejar esta variable como integer no?
22/06/2013 #7

Avatar de ByAxel

Si, como indicas es un equivalente. En cuanto a precisión se debe de contar las mismas instrucciones que se utilizan y la cantidad de veces que se repiten las mismas.

SP117 dijo: Ver Mensaje
es un ciclo for en asm y ya esta indicado que "K" debe declararse previamente, pero el dato K está como si fuese un char y no int, ¿supongo que debe haber mas instrucciones en asm para manejar esta variable como integer no?
Las instrucciones para un microcontrolador de 8 bits (sea cuál sea la marca) solo pueden manejar datos de 8 bits, por lo que manejar valores superiores a un byte no es posible hacerlo directamente; es decir que si un valor usa 16 bits (integer), primero se debe de declarar en dos bytes y luego se deben de tratar los 8 bits más bajos y los 8 más altos de forma independiente.

- Hay un programa, no recuerdo cuál pero generaba código asm para retardos (siempre que necesites precisión).
22/06/2013 #8

Avatar de tamasati

Si me acuerdo bien, esta programa se llama PICDEL.EXE
22/06/2013 #9


Muchas gracias, solo haría falta la comunicación .... me acabo de dar cuenta que la pagina tiene corrector de sintaxis, ahora sé porque en estos foros nadie escribe al estilo de facebook.
Supongo que me van a recomendar mejor usar un pic que ya tenga el hardware necesario para implementar comunicación USART en lugar de hacerlo puramente por software no? si es posible podrían recomendarme uno que sea igual de sencillo que el 16f84? de ante mano muchas gracias
22/06/2013 #10

Avatar de ByAxel

Dicen que el PIC16F627A es como el sucesor del F84, la verdad no se de donde salió eso pero está bastante difundido... los 16F627A, 16F628A y 16F648A pertenecen a una familia que comparten sus características con ciertas diferencias en cuanto a memoria. Esos PIC tienen varios módulos internos agregados como 3 Timers, USART, Comparadores, oscilador interno...

SP117 dijo: Ver Mensaje
Supongo que me van a recomendar mejor usar un pic que ya tenga el hardware necesario para implementar comunicación USART en lugar de hacerlo puramente por software no? si es posible podrían recomendarme uno que sea igual de sencillo que el 16f84? de ante mano muchas gracias
En muchos casos es mejor un control por hardware, de ese modo el PIC se dedica a otras cosas mientras se envía el dato por USART.

Saludos.
22/06/2013 #11


Muchas Gracias ByAxel
Respuesta
¿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.