Autor Tema: Transmision serie con PIC16F84A  (Leído 3196 veces)

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

Desconectado chelomiche

  • PIC10
  • *
  • Mensajes: 11
Transmision serie con PIC16F84A
« en: 13 de Septiembre de 2006, 03:09:07 »
Hola son nuevo en el foro. Y recien empiezo a programar.

Gracias a todos ustedes he realizado un programita que no encontre en el foro y me es de mucha utilidad. Por lo tanto quiero compartirlo con ustedes.

Recuerden que recien empiezo y puede tener errores o no estar optimizado el programa.

Espero que lo puedan utilizar y si esta en el foro disculpen por no saber buscar.

Lectura de un teclado 4x4 y transmision de la Tecla oprimida en formato RS232 (pin RA0): 1 bit de start, 8 bits de datos y 1 bit de stop. La velocidad se modifica cambiando el valor def define BAUD_RATE

#include <16f84a.h>
#fuses XT,NOWDT,NOPROTECT,PUT
#use delay(clock=4000000)
#use fast_io(b)
#include "kbd_lib.c"     // Las de RedPic

#define BAUD_RATE 208    // 1200 baud = 833; 2400 baud = 416; 4800 baud = 208

void EnviarRS232(char cadena){

   int n;

   output_bit(PIN_A0,0);   // Bit de Start
   delay_us(BAUD_RATE);

   for(n=0; n < 8; n++){
      output_bit(PIN_A0,shift_right(&cadena,1,0));  // 8 Bit de Datos
      delay_us(BAUD_RATE);
   }
   output_bit(PIN_A0,1);  // Bit de Stop
   delay_us(BAUD_RATE);
}

void main(){

   char tecla;
   kbd_init();
   port_b_pullups(TRUE);  // Muy importantes

   do {
      tecla=kbd_getc();
      if(tecla!=0){
         EnviarRS232(tecla);
      }
   } while (TRUE);
}

Un saludo y agradecimiento a todos los moderadores. En especial a RedPic que gracias a su espectacular pagina me ha sido mas facil poder empezar.
« Última modificación: 13 de Septiembre de 2006, 03:18:26 por chelomiche »

Desconectado Dancrazy

  • PIC16
  • ***
  • Mensajes: 134
Re: Transmision serie con PIC16F84A
« Respuesta #1 en: 13 de Septiembre de 2006, 10:06:58 »
Ese programa está muy bueno...

es una forma simple de hacer la transmision serial a pie...  ustedes diran que soy maniatico, pero el PICC Compiler es excelente...  Claro estoy conciente que para ciertas aplicaciones no se puede usar porque ofrece opciones demasiado automaticas, y a veces se necesita un medio mas...  sincronico (de 5 velocidades y embrague, jeje)...  sin embargo, para empezar, es mejor asi..
sin embargo, si usas ese compilador y quieres acortar el programa, te ofresco lo siguiente...
Citar
//<toda la cabezera fuses, includes etc>
#use rs232(baud=9600, xmit=PIN_A2,rcv=PIN_A3,parity=N,bits=8) //existen multiples opciones mas, vé en la ayuda

Código: [Seleccionar]
void main()
{
int valor
printf("esto se va via serial");
valor=getc()  //aqui espera una respuesta
}

existen otras funciones que hacen del manejo del puerto serial algo muy comodo. Recomiendo la version 3.227 (que se consigue por los caminos habituales) e incluye librerias de muchos dispositivos. creo que pesa solo 13Mbytes.

Exito!!!
Daniel 
Caracas, Venezuela 

-----------------

Desconectado chelomiche

  • PIC10
  • *
  • Mensajes: 11
Re: Transmision serie con PIC16F84A
« Respuesta #2 en: 13 de Septiembre de 2006, 12:16:06 »
Aca me surge una pregunta Dancrazy:

La sentencia #use rs232(baud=9600, xmit=PIN_A2,rcv=PIN_A3,parity=N,bits=8) puede usarse con cualquier PIC o solo con los que tienen UART?

Yo lo hice de la otra forma porque creia que no se podia usar #use rs232 en el PIC16F84A

Desconectado Dancrazy

  • PIC16
  • ***
  • Mensajes: 134
Re: Transmision serie con PIC16F84A
« Respuesta #3 en: 13 de Septiembre de 2006, 13:50:52 »
Aja, fijate... creo que lo hace con cualquiera...
de hecho estoy trabajando con un 16F84A y lo hace bien...  claro, no me preguntes por qué ese PIC se me daña muy facil y por eso me cambie al 16F88 (mas barato, mas robusto, con el mismo Pinout y aparte de algunas funciones nuevas, puedes configurar oscilador interno) ¿tienes el PIC C compiler ¿no?
la ayuda es muy buena. si es asi, un dato

Ve a |Menu Proyect|>|New|>|PIC Wizard|
aparece un cuadro de dialogo guardar como...  dale cualquier nombre (no importa) y dale guardar
ahora aparece lo que voy a incluir como imagen fijate bien en lo que señalo con flechas rojas
primero elige el dispositivo... la lista es larga y no siempre esta ordenada...
segundo, coloca el cristal o el tipo de oscilacion... esta pantalla cambia segun el dispositivo que elegiste y asi sabes a ciencia cierta qué soporta y qué no
luego fijate, en cada pestaña configuras algo nuevo. Pero ahora viene lo mejor...
observa el boton azul "View code generated for this tab" te voy a presentar lo que aparece en la primera pestaña si lo seleccionas, como segundo adjunto...
de alli abre el block de notas, copialo y pegalo... pasa a la segunda pestaña, configura lo que puedas (lo que esta activado indica la capacidad del dispositivo) y genera otra vez codigo... copia y pega...
es tan simple que él hasta te dice si va antes o después de Void Main()...

una vez configures todo.. en el notepad debes tener un esqueleto de programa, cancela el wizard y crea un nuevo archivo de codigo fuente "*.c" y pega todo alli... sigue programando... y si tienes duda ve a la ayuda... si no sabes un comando, ve a la ayuda, y si no, abre un archivo de ejemplo, trae una lista

Es como ir al supermercado y de cada anaquel tomar el trozo de codigo que te guste y llegar a la caja con tu programa pre-ensamblado!!!!



solo una cosa mas lo unico que no pone es #include <16F84A.h> esto lo agregas tu
cuando dice "inserted into h file" es colocar en la cabezera

Espero haber ayudado...
« Última modificación: 13 de Septiembre de 2006, 16:18:41 por vszener »
Daniel 
Caracas, Venezuela 

-----------------

Desconectado vszener

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2395
Re: Transmision serie con PIC16F84A
« Respuesta #4 en: 13 de Septiembre de 2006, 16:11:39 »
Sí se puede usar la sentencia #use rs232 en los pic's que no tengan uart de periférico incorporado, el compilador de la casa CCS realiza las funciones de envio serial automáticamente por software.


Suerte!!!;)
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte

Desconectado chelomiche

  • PIC10
  • *
  • Mensajes: 11
Re: Transmision serie con PIC16F84A
« Respuesta #5 en: 13 de Septiembre de 2006, 19:54:35 »
Gracias a los dos. Voy a implementarlo asi


 

anything