Programación Específica > Microcontroladores

 Re: Comunicaciones seriales RS-232 con microcontroladores PI

(1/3) > >>

tec_claudio_perez:
Hola a todos, quisiera abrir este tema para postear todo lo que hace falta para poder establecer enlaces RS-232 entre un PIC y una PC, tanto el hardware, firmware del pic y software en la PC.
Este es uno de los temas más frecuentes si queremos conectar un PIC a la PC.
La idea es postear técnicas y procedimientos para depurar, testear y diseñar comunicaciones seriales asíncronas usando Pics.:excl:

© Jonathan ©:
La idea es buena, pero se ve que pocos estan en el tema, o bien no tienen problemas con el rs-232.
   Queria postear un programita que realice en C para comunicar el pic y recibir o enviarle la comunicacion desde la PC, solo que debo revizarlo.
   Ni bien este listo lo coloco a disposicion de todos. Saludos :guitar:

GTow:
Hola, no tenía ni idea de que existiera este foro (aunque he participado un poco en otros de solocodigo). Me gusta mucho el tema de los PIC´s para hacer "chapucillas" de domótica en casa y ese tipo de cosas.
 Con respecto a lo de establecer una conexión del PIC con el puerto serie, en efecto es lo que más se usa (al menos yo), en cuanto a hardware no necesitas más que el conector seria debidamente conectado al PIC (según su hoja de especificaciones) y para empezar usar el hyperterminal, yo siempre uso PIC de la familia 16F... y la configuración del hyperterminal es 9600 8-N-1. Una vez que consigas hacer lo que quieres desde aquí no tienes más que hacerte tus programas en C (o Visual Basic ofrece una interfaz sencillísima de uso del puerto serie) enviando lo mismo que enviabas con el hyperterminal.
 No es un rollo muy concreto, pero si me planteais dudas concretas y puedo ayudaros en algo lo haré.
  Un saludo

© Jonathan ©:
Aqui hay abundante informacion sobre el conector RS-232. Saludos  :hola:


http://www.piclist.com/techref/io/serial/rs232.htm

http://www.epanorama.net/links/pc/interface.html

© Jonathan ©:
Ejemplo de comunicacion RS-232 en PIC 16F873. Saludos


--- Código: Text --- ;***********************************************************************;*   adquisicion de datos a 10 bits - TX serial utilizando PIC 16F873  *;***********************************************************************   LIST  P=16F873  #INCLUDE "p16f873.inc" ;***********************************************************************;      DEFINICION DE BITS (ESTAN CASI TODOS EN EL INCLUDE ANTERIOR) STATUS   EQU   03HPORT_A   EQU   05HPORT_B   EQU   06HPORT_C   EQU   07HPCLATC   EQU   0AHINTCON   EQU   0BHPIR1   EQU   0CHRCSTA   EQU   18HTXREG   EQU   19HRCREG   EQU   1AHADRESH   EQU   1EHADCON0   EQU   1FHTRISA   EQU   85HTRISB   EQU   86HTRISC   EQU   87HTXSTA   EQU   98HSPBRG   EQU   99HADRES1   EQU   9EHADCON1   EQU   9FHRP0   EQU   5RP1   EQU   6IRP   EQU   7Z   EQU   2C   EQU   0TXIF   EQU   4GO   EQU   2LOOPS   EQU   20HLOOPS2   EQU   21HNIBBLE1   EQU   22HNIBBLE2   EQU   23HNIBBLE3   EQU   24HBUFFER   EQU   25H     __CONFIG _CP_OFF & _PWRTE_ON & _WDT_OFF & _XT_OSC  &#59;CONFIGURO;            PARA LA GRABACION, CODE PROTECT OFF, RESET DE ENCENDIDO ,ETC  ;*************************  COMIENZO DEL PROGRAMA  *********************   ORG   00   GOTO   INICIO;-----------------------------------------------------------------------RETARDO   MOVWF   LOOPS  &#59;RUTINA DE RETARDO EN MILISEGUNDOSTOP2   MOVLW   .110  &#59;EL NUMERO DE MILISEC LLEGA CARGADO   MOVWF   LOOPS2  &#59;EN EL REGISTRO   LOOPSTOP   NOP   NOP   NOP   NOP   NOP   NOP   DECFSZ   LOOPS2,1     &#59;PREGUNTA SI TERMINO 1 mS.   GOTO   TOP   DECFSZ   LOOPS,1     &#59;PREGUNTA SI TERMINO RETARDO   GOTO    TOP2   RETLW   0;-----------------------------------------------------------------------;;            RUTINA DE CONVERSION A/D A 10 BITS           &#59;;         DEVUELVE 3 DATOS EN HEXADECIMAL GUARDADOS        &#59;;       EN LOS REGISTROS NIBBLE1, NIBBLE2 Y NIBBLE3        &#59;;-----------------------------------------------------------------------;CONVER   BSF   STATUS,RP0   MOVLW   B'10000010'  &#59;SELECCIONA Vref INTERNO(+5 Y GND)   MOVWF   ADCON1     &#59;DATOS EN ADRESL Y 2 BITS EN ADRESH   BCF   STATUS,RP0   NOP   NOP   NOP   NOP        &#59;ESTAS INSTRUCCIONES NOP, DAN AL   NOP        &#59;MICRO, TIEMPO DE ADQUISICION   NOP        &#59;REQUERIDO, EN ESTE CASO 7 MICRO SEG.   NOP   NOP   BSF   ADCON0,GO  &#59;INICIO DE CONVERSION   NOP   NOPCONSU   BTFSC   ADCON0,GO  &#59;ESPERA QUE TERMINE DE CONVERTIR   GOTO    CONSU   MOVF   ADRESH,W   MOVWF   NIBBLE1     &#59;PASA TRES DIGITOS HEXADECIMALES   MOVLW   30H     &#59;A REGISTROS INDIVIDUALES   ADDWF   NIBBLE1,1     &#59;PARA SER TRANSMITIDO   BSF   STATUS,RP0  &#59;AL REGISTRO NIBBLE1 LE SUMA 30H   MOVF   ADRES1,W  &#59;PARA CONVERTIRLO EN ASCII   BCF   STATUS,RP0   MOVWF   BUFFER   ANDLW   0FH   MOVWF   NIBBLE3     &#59;EL REGISTRO NIBBLE3 QUE CONTIENE   MOVLW   37H     &#59;EL DIGITO MENOS SIGNIFICATIVO DEBE   SUBWF   NIBBLE3,0  &#59;PROBARSE PARA VER SI ES UN NUMERO   MOVLW   37H     &#59;DE 0 A 9 O SI ES LA LETRA A HASTA F   BTFSS   STATUS,C  &#59;PARA HACER LA CONVERSION A ASCII   MOVLW   30H   ADDWF   NIBBLE3,1   SWAPF   BUFFER,0   ANDLW   0FH   MOVWF   NIBBLE2     &#59;EL DIGITO NIBBLE2 TIENE EL MISMO   MOVLW   0AH     &#59;PROCEDIMIENTO QUE NIBBLE3   SUBWF   NIBBLE2,0   MOVLW   37H   BTFSS   STATUS,C   MOVLW   30H   ADDWF   NIBBLE2,1   RETLW   0;-----------------------------------------------------------------------;;           ESTA RUTINA ENVIA SERIALMENTE LOS DATOS        &#59;;           OBTENIDOS EN CADA CONVERSION           &#59;;-----------------------------------------------------------------------;ENVIAR   MOVF   NIBBLE1,0  &#59;TRANSMITE EL DIGITO HEXADECIMALESPER   BTFSS   PIR1,TXIF  &#59;PDE MAYOR PESO   GOTO    ESPER   MOVF   TXREG,1   MOVF   NIBBLE2,0  &#59;TX EL SEGUNDO DIGITO HEXAESPERA   BTFSS   PIR1,TXIF  &#59;PERO DEBE ESPERAR QUE TERMINE DE   GOTO   ESPERA     &#59;TX EL DATO ANTERIOR   MOVWF   TXREG   MOVF   NIBBLE3,0  &#59;TX TERCER DIGITOESPER2   BTFSS   PIR1,TXIF   GOTO    ESPER2   MOVWF   TXREG     &#59;CHR$(44)=","   MOVLW   .44     &#59;TX EL CARACTER "COMA" PARA SEPARARESPER3   BTFSS   PIR1,TXIF  &#59;CADA DATO DE LOS DIFERENTES CANALES   GOTO   ESPER3   MOVWF   TXREG   RETLW   0 ;************************** PROGRAMA PRINCIPAL ************************** INICIO   BSF   STATUS,RP0   MOVLW   0FFH   MOVWF   TRISA   MOVWF   TRISB     &#59;PUERTOS A Y B COMO ENTRADAS   MOVLW   B'10111111'   MOVWF   TRISC     &#59;PUERTO C ENTRADAS Y PIN TX SALIDA   MOVLW   B'00100110'  &#59;PROGRAMA USART ASINCRONO PARA TX   MOVWF   TXSTA     &#59;ALTA RATA DE BAUDIOS   MOVLW   .103     &#59;CONFIGURA TEMPORIZADOR A 4MHZ   MOVWF   SPBRG     &#59;2400 BPS (8,N,1)   BCF   STATUS,RP0   BSF   PIR1,TXIF   MOVLW   B'10000001'  &#59;SELECCIONA CANAL 0 Y  RELOJ DE CONV   MOVWF   ADCON0     &#59;CONVERTIDOR ENCENDIDO   CALL   CONVER     &#59;LLAMA RUTINA CONVERSION A/D   CALL   ENVIAR     &#59;ENVIA DATOS SERIALES   MOVLW   B'10001001'  &#59;SELECCIONA CANAL1 Y RELOJ DE CONVERSION   MOVWF   ADCON0     &#59;CONVERTIDOR ENCENDIDO   CALL   CONVER   CALL   ENVIAR   MOVWF   B'10010001'  &#59;SELECCIONA CANAL 2 Y RELOJ CONVERSION   MOVWF   ADCON0   CALL   CONVER   CALL   ENVIAR   MOVLW   B'10011001'  &#59;SELECCIONA CANAL3 Y RELOJ CONVERSION   MOVWF   ADCON0   CALL   CONVER   CALL   ENVIAR            &#59;CHR$(13)=<ENTER>   MOVLW   .13     &#59;LA SEPARACION ENTRE CADA BLOQUEESPER4   BTFSS   PIR1,TXIF  &#59;DE 4 DATOS   GOTO    ESPER4     &#59;SE HACE CON EL CARRIAGE RETURN   MOVWF   TXREG     &#59;Y UN CARACTER LINE FEED   MOVLW   .10     &#59;SIRVE PARA SEPARAR LAS LINEAS DE           &#59;DATOS QUE SE RECIBEN, BAJA UN RENGLONESPER5   BTFSS   PIR1,TXIF  &#59;EN EL PROGRAMA TERMINAL DE WINDOWS   GOTO   ESPER5     &#59;CADA LINEA DE DATOS TIENE           &#59;CANAL0, CANAL1 , CANAL2 , CANAL3   MOVWF   TXREG   NOP   NOPESPER6   BTFSS   PIR1,TXIF  &#59;ESTA COMPROBACION ES PARA           &#59;GARANTIZAR QUE SE TRANSMITA   GOTO   ESPER6     &#59;EL ULTIMO CARACTER ANTES DE SEGUIR    MOVLW   .250     &#59;RETARDO ENTRE BLOQUES DE 4 DATOS   CALL   RETARDO     &#59;ESTE RETARDO EQUIVALE A 250 mili Sec           &#59; SE PUEDE AUMENTAR HASTA 255 mili Sec   GOTO   INICIO     &#59;COMIENZA NUEVAMENTE PARA ENVIAR           &#59;OTRO PAQUETE DE DATOS   END;--------------------------------------------------------------------------------;;EXTRAIDO DE LA REVISTA ELECTRONICA Y COMPUTADORES - CEKIT - NORBERTO PELLEGRINI&#59;;                   FIRMAT - SANTA FE - ARGENTINA   - 19/03/2001      &#59;;--------------------------------------------------------------------------------;  

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa