RECEPCIÓN SERIAL RS-232 CON PIC
Short Description
Download RECEPCIÓN SERIAL RS-232 CON PIC...
Description
COMUNICACIÓN PC A PIC CON PUERTO SERIE DB9
COMUNICACIÓN SERIAL ENTRE PIC’S Y PC En la actualidad con el avance tecnológico, en lo que se refiere sistemas microcontrolados, resulta de vital importancia la comunicación entre nuestro micro-controlador y una PC ya sea para adquirir datos, comandar nuestro sistema desde una PC, monitorear el sistema o incluso integrar varios sistemas dentro de uno mismo. Por lo cual abordaremos en esta oportunidad de un modo no muy complejo las pautas para lograr dicha comunicación enviando una cadena de texto desde el PC y mostrarlo en una pantalla LCD gobernada por un PIC 16F877A.
1. OBJETIVOS:
Comunicar la PC con un micro-controlador PIC 16F877A por medio de su modulo
USART
(Universal
Synchronous
Asynchronous
Receiver
Transmitter).
Describir el funcionamiento del modulo USART.
Conocer los principios acerca de la comunicación serial de la norma RS232.
Manejar Visual Basic para aplicaciones de Windows Fonts.
Conocer el funcionamiento del transceptor MAX 232.
2. FUNDAMENTO TEORICO: A continuación daremos un pequeño alcance sobre el manejo del modulo USART del PIC 16F877A; también sobre la aplicación que fue diseñada en el programa Visual Basic para poder seleccionar el puerto a utilizar así como el determinar el envió de los datos; hablaremos acerca
SOFTWARE 5
INSTITUTO IDAT
Página 1
COMUNICACIÓN PC A PIC CON PUERTO SERIE DB9 del transceptor MAX 232 y por ultimo tocaremos el tema de pantallas LCD de 16x2.
A. MODULO USART:
La USART (Universal Synchronous Asynchronous Receiver Transmitter) es uno de los dos periféricos contenidos en el PIC que le permiten realizar comunicación en serie. La USART, también conocida como SCI (Serial Communications Interface) puede configurarse como una unidad de comunicación en serie para la transmisión de datos asíncrona con dispositivos tales como terminales de computadora o computadoras personales, o bien para comunicación síncrona con dispositivos tales como convertidores A/D o D/A, circuitos integrados o memorias EEPROM con comunicación serie, etc. La gran mayoría de los sistemas de comunicación de datos digitales actuales utilizan la comunicación en serie, debido a las grandes ventajas que representa esta manera de comunicar los datos:
Económica.- Utiliza pocas líneas de transmisión inclusive puede usar sólo una línea.
Confiable.- Los estándares actuales permiten transmitir datos con bits de paridad y a niveles de voltaje o corriente que los hacen poco sensibles a ruido externo. Además por tratarse de información digital, los cambios en amplitud de las señales (normalmente causadas por ruido) afectan muy poco o nada a la información.
Versátil.- No está limitada a usar conductores eléctricos como medio de transmisión, pudiendo usarse también: fibra óptica, aire, vacío, etc. Además el tipo de energía utilizada puede ser diferente: luz visible, infrarroja, ultrasonido, pulsos eléctricos, radio frecuencia, microondas, etc.
SOFTWARE 5
INSTITUTO IDAT
Página 2
COMUNICACIÓN PC A PIC CON PUERTO SERIE DB9 Este modulo puede ser configurado para trabajar de tres maneras diferentes:
Modo Asíncrono - (transmisión y recepción simultáneas),
Modo Síncrono – Maestro (half duplex)
Modo Síncrono – Esclavo (half duplex)
Para este trabajo solo describiremos el modo asíncrono y trabajaremos en el modo simplex,
existiendo también half-duplex
y
duplex. Un canal simplex permite la transferencia de datos en un solo sentido. Un canal half-duplex soporta transferencias de datos en cualquier sentido, pero utilizando solo uno de ellos en cada comunicación. Un canal duplex (también llamado full-duplex) soporta transferencias en ambos sentidos simultáneamente. MODO ASÍNCRONO. En este modo la USART usa un formato estándar NRZ asíncrono, el cual para la sincronización usa: 1 bit de inicio (I), 8 o 9 bits de datos y 1 bit de paro (P). Mientras no se están transmitiendo datos la USART envía continuamente un bit de marca. El modo asíncrono se selecciona limpiando el bit SYNC del registro TXSTA (98H). El modo asíncrono es deshabilitado durante el modo SLEEP. Cada dato es transmitido y recibido comenzando por el LSB. El hardware no maneja bit de Paridad, pero el noveno bit puede ser usado para este fin y manejado por software.
SOFTWARE 5
INSTITUTO IDAT
Página 3
COMUNICACIÓN PC A PIC CON PUERTO SERIE DB9 Normalmente cuando no se realiza ninguna transferencia de datos, la línea del transmisor se encuentra en esto de (idle) este quiere decir en estado alto. El módulo Asíncrono de la USART consta de 3 módulos fundamentales:
El circuito de muestreo
El generador de frecuencia de transmisión (Bau Rate)
El transmisor asíncrono
El receptor asíncrono.
A continuación describiremos los registros asociados a este modulo: REGISTROS ASOCIADOS: El módulo USART dispone de una serie de registros, que son los siguientes: RCSTA: Registro de estado y control de recepción de datos.
Bit 7
SPEN: Habilitación del puerto serie 1=
Bit 6
Puerto serie habilitado (configura RC7/RX/DT y RC6/TX/CK como pines del puerto serial)
0 = Puerto serie deshabilitado RX9: Habilita el bit 9 de recepción 1 = Selecciona recepción de 9 bits 0 = Selecciona recepción de 8 bits
Bit 5
SOFTWARE 5
SREN: Configura la recepción sencilla
INSTITUTO IDAT
Página 4
COMUNICACIÓN PC A PIC CON PUERTO SERIE DB9 Modo asíncrono no incluye: Modo síncrono maestro: 1 = Habilita recepción sencilla 0 = Deshabilita recepción sencilla Modo síncrono esclavo no se utiliza: Bit 4 CREN: Configura la recepción continua. Modo asíncrono: 1 = Habilita modo de recepción continua. 0 = Deshabilita recepción continua. Modo síncrono: 1 = Habilita recepción continua hasta que el bit CREN es borrado. 0 = Deshabilita recepción continua. Bit 3
ADDEN: Detección de dirección. Modo asíncrono con 9 bits (RX9 = 1): 1 =Activa la detección de dirección, activa la interrupción y descarga el buffer de recepción al activarse RSR 0 =Desactiva la detección de dirección, todos los bits son recibidos y el bit 9 puede ser utilizado como bit de paridad.
Bit 2
FERR: Bit de error de trama. 1 = Error de trama (puede ser actualizado leyendo el registro RCREG y recibir el siguiente dato válido.
SOFTWARE 5
INSTITUTO IDAT
Página 5
COMUNICACIÓN PC A PIC CON PUERTO SERIE DB9 0 = No hay error de trama. Bit 1
OERR: Bit de error de sobre-escritura. 1 = Error de sobre-escritura escribiendo un 0 en el bit CREN).
(puede
ser
borrado
0 = No hay error de sobre-escritura. Bit 0
RX9D: Bit 9 del dato recibido (Puede ser el bit de paridad).
SPBRG y TXSTA controla la velocidad de transmisión:
Bit 7 CSRC: bit de selección de reloj. Modo asíncrono: no incluye. Modo síncrono: 1 = Modo maestro (reloj generado internamente desde BRG). 0 = Modo esclavo (reloj generado por una fuente externa). Bit 6
TX9: Habilita el bit 9 de transmisión. 1 = Selecciona transmisión de 9 bits. 0 = Selecciona transmisión de 8 bits.
Bit 5
TXEN: Activa la transmisión. 1 = Transmisión activada.
SOFTWARE 5
INSTITUTO IDAT
Página 6
COMUNICACIÓN PC A PIC CON PUERTO SERIE DB9 0 = Transmisión desactivada. Nota: SREN/CREN anula TXEN en modo síncrono. Bit 4
SYNC: Bit de selección del modo del USART. 1 = Modo síncrono. 0 = Modo asíncrono.
Bit 3
No implementado: Leído como '0'
Bit 2
BRGH: Bit de selección de la velocidad de baudios. Modo asíncrono: 1 = Alta velocidad. 0 = Baja velocidad. Modo Síncrono: No se usa en este modo.
Bit 1
TRMT: Bit de estado del registro de desplazamiento de transmisión. 1= TSR vacío. 0 = TSR no vacío.
Bit 0
TX9D: Bit 9 del dato a transmitir (puede ser el bit de paridad).
Para nuestro trabajo trabajaremos en baja velocidad (2400 Baudios) y un cristal de 4MHZ; bajo estas condiciones el fabricante nos da una tabla donde nos da el valor que tendremos que cargarle al registro SPBRG el cual mostraremos a continuación, para mayores alcances SOFTWARE 5
INSTITUTO IDAT
Página 7
COMUNICACIÓN PC A PIC CON PUERTO SERIE DB9 consultar la hoja técnica que proporciona el fabricante http://ww1.microchip.com/downloads/en/devicedoc/39582b.pdf .
en
RCREG: es el registro que almacena el carácter recibido, para capturarlo tendremos que leer este registro. TXREG: es donde tendremos que escribir el carácter que queremos enviar. En el siguiente cuadro se muestran todos los registros asociados al modulo USART.
SOFTWARE 5
INSTITUTO IDAT
Página 8
COMUNICACIÓN PC A PIC CON PUERTO SERIE DB9 PROCEDIMIENTO Y DESCRIPCION PARA EL TRANSMISOR: El corazón de este módulo es el registro de corrimiento (transmit shift register, TSR). La única manera de acceder al registro TSR es a través del registro TXREG (19H). Para transmitir un dato, el programa deberá ponerlo primero en el registro TXREG. En cuanto el TSR termina de enviar el dato que tenía (en cuanto transmite el bit de paro) lee el dato contenido en TXREG (si hay alguno) esto ocurre en un ciclo TCY. En cuanto el dato de TXREG es transferido al TSR el TXREG queda vacío esta condición es indicada mediante el bit bandera TXIF (que es el bit 4 del registro PIR1 (0Ch)), el cual se pone en alto. Este bit NO puede ser limpiado por software, sólo dura un instante en bajo cuando se escribe un nuevo dato a TXREG. Si se escribe un dato seguido de otro (back to back) a TXREG el primero se transfiere inmediatamente a TSR y el otro tiene que esperar hasta que el TSR termine de enviar el bit de Stop del primero. Durante esta espera TXIF permanece en bajo. Existe otro bit, llamado TRMT (TXSTA), el cual muestra el estado del TSR. TRMT se pone en alto cuando TSR está vacío, y en bajo cuando TSR está transmitiendo un dato. Mientras que TXIF puede generar una interrupción TRMT no lo puede hacer, TRMT está pensado para ser consultado por “poleo” (sin usar interrupciones). Diagrama de bloques del transmisor:
SOFTWARE 5
INSTITUTO IDAT
Página 9
COMUNICACIÓN PC A PIC CON PUERTO SERIE DB9 Para habilitar el módulo de transmisión es necesario poner en alto el bit TXEN (TXSTA), mientras no se habilite el módulo, la patita de transmisión (RC6/TX/CK) se mantiene en alta impedancia. Si TXEN es deshabilitada a la mitad de una transmisión, está será abortada y el transmisor será reseteado. Si se está usando un noveno bit TX9 (TXSTA), éste deberá ser escrito antes de escribir los 8 bits restantes a TXREG, ya que en cuanto se escribe un dato a este registro inmediatamente es transferido a TSR (si éste está vacío). De acuerdo a lo anterior, la inicialización del módulo de transmisión consiste en los siguientes pasos: 1º. Inicializar baud rate escribiendo al registro SPBRG el divisor adecuado y opcionalmente al bit BRGH. 2º. Habilitar comunicación asíncrona limpiando el bit SYNC y poniendo el bit SPEN. 3º. Si se van a usar interrupciones, poner el bit TXIE (PIE). 4º. Poner el bit TX9 si se desea transmitir datos de 9 bits 5º. Habilitar transmisión poniendo el bit TXEN, lo cual pondrá el bit TXIF. 6º. Colocar el noveno bit del dato en TX9D si se están usando datos de 9 bits. 7º. Cargar el dato al registro TXREG (inicia la transmisión).
PROCEDIMIENTO Y DESCRIPCION PARA EL RECEPTOR: El módulo de recepción es similar al de transmisión, en la siguiente figura se muestran los bloques que lo constituyen.
SOFTWARE 5
INSTITUTO IDAT
Página 10
COMUNICACIÓN PC A PIC CON PUERTO SERIE DB9
Una vez que se ha seleccionado el modo asíncrono, la recepción se habilita poniendo en alto el bit CREN (RCSTA). El dato es recibido mediante la línea RC7/RX/DT, la cual maneja un registro de corrimiento de alta velocidad (16 veces el Baud rate). El corazón del receptor es el registro de corrimiento RSR. Este registro no es accesible por software, pero, cuando el dato recibido se ha completado (se ha recibido el bit de Stop) el dato de RSR es transferido automáticamente al registro RCREG (1Ah) si éste está vacío y al mismo tiempo es puesto en alto la bandera de recepción RCIF (PIR1). La única manera de limpiar la bandera RCIF es leyendo el ó los datos del registro RCREG. El registro RCREG puede contener hasta dos datos, ya que es un buffer doble que funciona como una cola de dos posiciones. Si las dos posiciones del registro RCREG están llenas (no han sido leídas) y se detecta el bit de Stop de un tercer dato de recepción, lo cual ocasiona un transferencia automática del dato recibido a RCREG, esto destruirá el primer dato recibido y activará el indicador de sobreescritura OERR (RCSTA). Para evitar esto, se deberán leer los dos datos en RCREG haciendo dos lecturas consecutivas. SOFTWARE 5
INSTITUTO IDAT
Página 11
COMUNICACIÓN PC A PIC CON PUERTO SERIE DB9 La única manera de limpiar el bit OERR una vez que ha sido activado es reseteando el módulo de recepción (limpiando CREN y volviéndolo a poner a 1), si no se limpia OERR se bloquea la transferencia de datos de RSR a RCREG y no puede haber más recepción de datos. Si se detecta un bit nivel bajo en la posición del bit de stop se pone el indicador de error de encuadre (frame error) FERR RCSTA. Tanto este indicador como el noveno bit RX9D de los datos están en una cola de dos posiciones al igual que los datos recibidos, de manera que al leer RCREG se actualizan FERR y RX9D con nuevos valores, por lo cual estos bits deberán ser leídos antes de leer RCREG para no perder su información. De acuerdo a lo anterior, la inicialización del módulo de recepción es como sigue: 1º. Inicializar el baud rate escribiendo al registro SPBRG el divisor adecuado y opcionalmente al bit BRGH. 2º. Habilitar el puerto serie asíncrono limpiando el bit SYNC y poniendo el bit SPEN. 3º. Si se van a usar interrupciones, poner el bit RCIE (PIE). 4º. Si se desea recepción de datos de 9 bits se deberá poner el bit RX9 (RCSTA). 5º. Habilitar la recepción poniendo el bit CREN (RCSTA). 6º. El bit RCIF se pondrá a “1” cuando la recepción de un dato se complete y se generará una interrupción si RCIE está en “1”. 7º. Leer el registro RCSTA para obtener el noveno bit (si se están recibiendo datos de 9 bits) o para determinar si ha ocurrido un error de recepción. SOFTWARE 5
INSTITUTO IDAT
Página 12
COMUNICACIÓN PC A PIC CON PUERTO SERIE DB9 8º. Leer los 8 bits del dato recibido leyendo el registro RCREG. 9º. Si ocurrió algún error este se limpia al poner a “0” el bit CREN, el cual deberá volver a ponerse a “1” si se desea continuar la recepción. B. VISUAL BASIC APLICACIONES PARA WINDOWS FONTS: Visual Basic es un ambiente gráfico de desarrollo de aplicaciones para el sistema operativo Microsoft Windows. Las aplicaciones creadas con Visual Basic están basadas en objetos y son manejadas por eventos. Visual Basic se deriva del lenguaje Basic, el cual es un lenguaje de programación estructurado. Sin embargo, Visual Basic emplea un modelo de programación manejada por eventos. En las aplicaciones manejadas por eventos, la ejecución no sigue una ruta predefinida. En vez de esto, se ejecutan diferentes secciones de código en respuesta a eventos. Los eventos se desencadenan por acciones del usuario, por mensajes del sistema o de otras aplicaciones. La secuencia de eventos determina la secuencia en que el código se ejecuta. Es por esto que la ruta que sigue el código de la aplicación es diferente cada vez que se ejecuta el programa. Una parte esencial de la programación manejada por eventos es el escribir código que responda a los posibles eventos que pueden ocurrir en una aplicación. Visual Basic facilita la implementación del modelo de programación manejada por eventos. El Entorno Integrado de Desarrollo (IDE): Cuando se inicia Visual Basic, se crea un proyecto nuevo con un formulario. El IDE de Visual Basic consta de los siguientes elementos:
SOFTWARE 5
INSTITUTO IDAT
Página 13
COMUNICACIÓN PC A PIC CON PUERTO SERIE DB9 Barra de menú y Barra de herramientas
Cuadro de Herramientas
Diseñador de Formularios
Cuadro de Código
Explorador de Proyectos
Cuadro de Propiedades
C. PANTALLAS LCD 16 X 2: Las pantallas de cristal líquido LCD o display LCD para mensajes (Liquid
Cristal Display) tienen la capacidad de mostrar cualquier carácter alfanumérico,
permitiendo representar la información que genera cualquier equipo electrónico de una forma fácil y económica. La pantalla consta de una matriz de caracteres (normalmente de 5x7 o 5x8 puntos) distribuidos en una, dos, tres o cuatro líneas de 16 hasta 40 caracteres cada línea. El proceso de visualización es gobernado por un microcontrolador incorporado a la pantalla, siendo el Hitachi 44780 el modelo de controlador más utilizado. SOFTWARE 5
INSTITUTO IDAT
Página 14
COMUNICACIÓN PC A PIC CON PUERTO SERIE DB9
Las características generales de un módulo LCD 16x2 son las siguientes:
Consumo muy reducido, del orden de 7.5mW.
Pantalla de caracteres ASCII, además de los caracteres japoneses Kanji, caracteres griegos y símbolos matemáticos.
Desplazamiento de los caracteres hacia la izquierda o a la derecha.
Memoria de 40 caracteres por línea de pantalla, visualizándose 16 caracteres por línea.
Movimiento del cursor y cambio de su aspecto.
Permite que el usuario pueda programar 8 caracteres.
Pueden ser gobernados de 2 formas principales: o Conexión con bus de 4 bits. o Conexión con bus de 8 bits.
A continuación se presenta la descripción de señales empleadas por el módulo LCD así como el número de patilla a la que corresponden.
SOFTWARE 5
INSTITUTO IDAT
Página 15
COMUNICACIÓN PC A PIC CON PUERTO SERIE DB9
D. MORMA RS-232: Ante la gran variedad de equipos, sistemas y protocolos que existen surgió la necesidad de un acuerdo que permitiera a los equipos de varios fabricantes comunicarse entre sí. La EIA (Electronics Industry Association) elaboro la norma RS-232, la cual define la interface mecánica, los pines, las señales y los protocolos que debe cumplir la comunicación serial.
NIVELES DE TENSION NORMA RS-232: SOFTWARE 5
INSTITUTO IDAT
Página 16
COMUNICACIÓN PC A PIC CON PUERTO SERIE DB9
Los cuadros anteriores nos describen los parámetros y características de la norma RS-232. En resumen se diría que:
Un “1” lógico es un voltaje comprendido entre –5v y –15v en el transmisor y entre -3v y –25v en el receptor.
Un “0” lógico es un voltaje comprendido entre +5v y +15 v en el trasmisor y entre +3v y +25 v en el receptor.
El envío de niveles lógicos (bits) a través de cables o líneas de transmisión necesita la conversión a voltajes apropiados. En los microcontroladores para representar un “0” lógico se trabaja con voltajes inferiores a 0.8v, y para un 1 lógico con voltajes mayores a 2.0V. En general cuando se trabaja con familias TTL y CMOS se asume que un “0” lógico es igual a cero Volts y un “1” lógico es igual a cinco Volts. La importancia de conocer esta norma, radica en los niveles de voltaje que maneja el puerto serial del ordenador, ya que son diferentes a los que utilizan los microcontroladores y los demás circuitos integrados. Por SOFTWARE 5
INSTITUTO IDAT
Página 17
COMUNICACIÓN PC A PIC CON PUERTO SERIE DB9 lo tanto se necesita de una interface que haga posible la conversión de los niveles de voltaje a los estándares manejados por los CI TTL.
E. TRANCEPTOR MAX 232: Este circuito soluciona los problemas de niveles de voltaje cuando se requiere enviar unas señales digitales sobre una línea RS-232. Este chip se utiliza en aquellas aplicaciones donde no se dispone de fuentes dobles de +12 y –12 Volts. El MAX 232 necesita solamente una fuente de +5V para su operación, internamente tiene un elevador de voltaje que convierte el voltaje de +5V al de doble polaridad de +12V y – 12V. Cabe mencionar que existe una gran variedad de CI que cumplen con la norma RS-232 como lo son: MAX220, DS14C232, MAX233, LT1180A. La configuración que se utilizara en este trabajo es similar a la siguiente, salvo que los capacitores que usaremos serán de 1uF: Sobre los capacitores a utilizar presentaremos un cuadro donde se indican las opciones disponibles.
SOFTWARE 5
INSTITUTO IDAT
Página 18
COMUNICACIÓN PC A PIC CON PUERTO SERIE DB9
Además de este CI también necesitaremos un cable tipo DB9 que describiremos: EL CONECTOR DB9 DEL PC En los PCs hay conectores DB9 macho, de 9 pines, por el que se conectan los dispositivos al puerto serie. Los conectores hembra que se enchufan tienen una colocación de pines diferente, de manera que se conectan el pin 1 del macho con el pin 1 del hembra, el pin2 con el 2, etc.
La información asociada sobre la función de cada pin es:
SOFTWARE 5
INSTITUTO IDAT
Página 19
COMUNICACIÓN PC A PIC CON PUERTO SERIE DB9 Número de pin
Señal
1
DCD (Data Carrier Detect)
2
RX
3
TX
4
DTR (Data Terminal Ready)
5
GND
6
DSR (Data Sheet Ready)
7
RTS (Request To Send)
8
CTS (Clear To Send)
9
RI (Ring Indicator)
3. PROGRAMAS A UTILIZAR: Utilizamos los siguientes programas:
Proteus v7.8: Para simular los el programa y verificar su correcto funcionamiento antes de implementar el circuito físico.
Mplab de Microchip: Editor y compilador de código assembler para microcontroladores PIC de Microchip.
Visual Studio 2010: Concretamente la aplicación para Windows Fonts.
Virtual Serial Ports: Emulador que se utilizo para simular con Proteus el programa.
4. CIRCUITOS A IMPLEMENTAR:
SOFTWARE 5
INSTITUTO IDAT
Página 20
COMUNICACIÓN PC A PIC CON PUERTO SERIE DB9
Configuración del MAX 232 y del conector DB9.
5. CONCLUCIONES:
Las posibilidades de control que se abren con la comunicación PC a PIC son innumerables.
El amplio rango de voltajes de la norma RS-232 responde a que se tiene que contrarrestar las perdidas en la línea de transmisión y además asegura el envío correcto de los datos.
La transmisión serial de datos es una manera económica y eficaz de comunicación entre dispositivos.
Las aplicaciones de Windows Fonts son una herramienta muy versátil y fácil de usar.
SOFTWARE 5
INSTITUTO IDAT
Página 21
COMUNICACIÓN PC A PIC CON PUERTO SERIE DB9 6. ANEXOS: En esta sección detallaremos el programa en el lenguaje assembler del compilador MPLAB para la recepción de datos y su posterior muestra en una pantalla LCD 16x2; así como el respectivo código de la aplicación para Windows Fonts creada en Visual Studio 2010.
1º.
APLICACIÓN DE WINDOWS FONTS:
La siguiente es la aplicación en sí que utilizaremos para este trabajo y consta de:
BOTON “DETERMINAR PUERTOS”: Con este botón seleccionamos el puerto serie, con el que deseemos trabajar, de una lista creada automáticamente por el programa.
SOFTWARE 5
INSTITUTO IDAT
Página 22
COMUNICACIÓN PC A PIC CON PUERTO SERIE DB9
BOTON CONECTAR: Este botón nos conecta con el puerto seleccionado y habilitando al siguiente botón que inicia la transmisión; cada vez que se cambie de puerto se tendrá que conectar al mismo de lo contrario la transmisión se hará por el puerto antes seleccionado.
BOTON ENVIAR: Haciendo un clic en este botón iniciamos la transmisión de los datos contenidos en el TextBox, que previamente se cargaron el buffer de salida del PC, hacia el pic; cada vez que se haga un clic en este puerto se enviaran los datos.
TEXT BOX: Este cuadro de texto muestra el dato o la cadena de datos que se enviaran hacia el PIC.
COMBO BOX: Este es una lista que se genera al buscar todos los puertos COM del PC, asignándoles números a cada uno, es decir COM1, COM2, etc.
Código de programa para esta aplicación: Public Class Form1 Dim datotx As String Dim datorx As String
//declaracion de variables
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load datotx = "" datorx = "" btn_conectar.Enabled = False btn_enviar.Enabled = False
SOFTWARE 5
INSTITUTO IDAT
Página 23
COMUNICACIÓN PC A PIC CON PUERTO SERIE DB9 tmr_pausa.Enabled = False End Sub *********************************************************************************** Private Sub btn_det_con_Click(sender As System.Object, e As System.EventArgs) Handles btn_det_con.Click cbo_puerto.Items.Clear() For Each puertosdisponible As String In My.Computer.Ports.SerialPortNames cbo_puerto.Items.Add(puertosdisponible) Next If cbo_puerto.Items.Count > 0 Then cbo_puerto.Text = cbo_puerto.Items(0) MessageBox.Show("SELECCIONE PUERTO CON EL QUE SE DESEA TRABAJAR") btn_conectar.Enabled = True Else MessageBox.Show("NO SE ENCONTRO NINGUN PUERTO") btn_conectar.Enabled = False btn_enviar.Enabled = False cbo_puerto.Items.Clear() cbo_puerto.Text = False End If End Sub ************************************************************************************ Private Sub btn_conectar_Click(sender As System.Object, e As System.EventArgs) Handles btn_conectar.Click If btn_conectar.Text = "CONECTAR" Then sp_puertos.PortName = cbo_puerto.Text btn_conectar.Text = "DESCONECTAR" btn_enviar.Enabled = True tmr_pausa.Enabled = True sp_puertos.Open() ElseIf btn_conectar.Text = "DESCONECTAR" Then btn_conectar.Text = "CONECTAR" btn_enviar.Enabled = False tmr_pausa.Enabled = False sp_puertos.Close() End If End Sub ********************************************************************************** Private Sub btn_enviar_Click(sender As System.Object, e As System.EventArgs) Handles btn_enviar.Click sp_puertos.DiscardOutBuffer() datotx = txt_dato_tx.Text sp_puertos.WriteLine(datotx) End Sub Private Sub tmr_pausa_Tick(sender As System.Object, e As System.EventArgs) Handles tmr_pausa.Tick End Sub End Class
SOFTWARE 5
INSTITUTO IDAT
Página 24
COMUNICACIÓN PC A PIC CON PUERTO SERIE DB9 2º.
DIAGRAMA DE FLUJO PARA EL PIC 16F877A: INICIO
CONFIGURO PORTB = PORTC,7 = VELOCIDAD DE
PUERTOS SALIDAS ENTRADA 2400 BAUDIOS
LEE 2 VESES EL RCREG
GUARDA ESTE DATO EN EL BUFFER
ESCRIBRIR EN PANTALLA
INCREMETA DIRECCION DE MEMORIA
BORRA BANDERA RCIF
INICIA LCD MODO 4 BITS
SELECCIONO LA SIGUIENTE DIRECCIÓN DE MEMORIA
CREACION DE BUFFER PARA RECEPCION
¿LLEGO ÚLTIMO DBYTE?
ESPERA 4200 us
ENCIENDE EL MÓDULO USART Y CONFIGURA PARA RECEPCION CONTINUA 8 BITS SIN BIT DE PARIDAD
FIN ¿HAY MAS DATOS?
CARGA 16 AL CONTADOR DE BYTES
CARGA 16 AL CONTADOR DE BYTES
IR A SEGUNDA LINEA PANTALLA LCD
NO ¿HA LLEGADO ALGÚN DATO?
1º. SOFTWARE 5
SI
LEER PRIMERA DIRECCION DEL BUFFER
CODIGO EN ASSEMBLER PARA EL PIC: INSTITUTO IDAT
Página 25
COMUNICACIÓN PC A PIC CON PUERTO SERIE DB9 LIST P=16F877A INCLUDE P16F877A.INC CBLOCK 0X20 INDICE,REG,R1,R2,R3,BUFFER,BYTS
ENDC ORG 0X2007 DW 0X3F7A ORG 0 GOTO INICIO ORG 0X05 INICIO BANKSEL TRISC BSF TRISC,7
;seleccionamos banco 1 ;como salida al pin 7 del puertoC
CLRF TXSTA para baja velocidad MOVLW .25 MOVWF SPBRG CLRF TRISB D BANKSEL PORTB CLRF BUFFER CLRF PORTC CLRF RCREG
; configuracion del TXSTA como
CALL T_20MS CLRW MOVWF INDICE
; para trabajar a 2400 baudios ; para trabajar la pantalla por el puerto ; banco 0 ;borramos el registro buffer ; borramos el puerto D ; borramos el RCREG
; espara para inicial la pantalla
; primer dato de comando de inicio de
pantalla X2 SOFTWARE 5
INSTITUTO IDAT
Página 26
COMUNICACIÓN PC A PIC CON PUERTO SERIE DB9
parpadeo
CALL COMANDOS MOVWF REG XORLW 0XFF BZ X1 MOVFW REG MOVWF PORTB CALL ENABLE INCF INDICE,F MOVFW INDICE GOTO X2
; configuramos: ; modo 4 bits ; borrar pantalla ;pantalla activa/cursor
off/no
; dos lineas ; caracter de 5 x 7 puntos ; posicion a partir del segundo cuadro ; para el titulo ; luego iremos a escribir el titulo
COMANDOS ADDWF PCL,F DT 0X20,0X20,0X20,0X80,0X00,0X60,0X00,0XC0,0X00,0X10,0X80,0X10,0XFF X1 CLRW ; borramos W MOVWF INDICE ; se mueve a indice X4 CALL TITULO MOVWF REG XORLW '&' BZ X5 ; cuando se termina de escribir el titulo MOVFW REG ; saltamos habilitar el modulo USART CALL MUESTRA SWAPF REG,W CALL MUESTRA INCF INDICE,F MOVFW INDICE GOTO X4 TITULO ADDWF PCL,F DT "TX Y RX SERIAL",'&' ; caracteres a mostrarse en pantalla SOFTWARE 5
INSTITUTO IDAT
Página 27
COMUNICACIÓN PC A PIC CON PUERTO SERIE DB9 X5
MOVLW B'10010000' MOVWF RCSTA
NUEVO MOVLW .16 MOVWF BYTS MOVLW 0X30 MOVWF FSR S1
MOVLW .32 MOVWF INDF INCF FSR,F DECFSZ BYTS,F GOTO S1
S3
SOFTWARE 5
MOVLW .16 MOVWF BYTS MOVLW 0X30 MOVWF FSR BTFSS PIR1,RCIF GOTO $-1 MOVFW RCREG MOVFW RCREG MOVWF INDF BCF PIR1,RCIF INCF FSR,F CALL SERIAL CALL MAS CALL MAS BTFSS PIR1,RCIF GOTO VER DECFSZ BYTS,F GOTO S3
INSTITUTO IDAT
Página 28
COMUNICACIÓN PC A PIC CON PUERTO SERIE DB9 VER la pantalla pantalla cursor los datos
CALL T_1MS
; tiempo de espera requerida por
BCF PORTB,0
; bits para enviar un comando a la
BCF PORTB,1
; para enviar la nueva pocicion del
CALL T_1MS
; a la linea 2 donde se escribiran
MOVLW 0XC0 MOVWF PORTB CALL ENABLE MOVLW 0X00 MOVWF PORTB CALL ENABLE
; rutina de habilitacion de pantalla
MOVLW .16 MOVWF BYTS MOVLW 0X30 MOVWF FSR S2
MOVFW INDF MOVWF BUFFER CALL MUESTRA SWAPF BUFFER,W CALL MUESTRA INCF FSR,F DECFSZ BYTS,F GOTO S2 GOTO NUEVO
;******* SUB RUTINA DE MUESTRA EN MODO 4 BITS POR PUERTO D ****** SOFTWARE 5
INSTITUTO IDAT
Página 29
COMUNICACIÓN PC A PIC CON PUERTO SERIE DB9 MUESTRA
ANDLW 0XF0 DE LO QUE SE QUIERE MOSTRAR IORLW 0X02 MOVWF PORTB CALL ENABLE PARA PODER ESCRIBIR RETURN RUTINA
;******* ENABLE
; SOLO SE VE EL NIBLE ALTO ; RS A 1 PARA ENVIAR DATO ; ENVIO A PUERTO D ; HABILITAR LA PANTALLA ; RETORNAMOS DE LA SUB
SUB RUTINA DE HABILITACION DE LA PANTALLA *****
CALL T_1MS RECOMENDAD POR EL FABRICANTE BSF PORTB,0 CALL T_1MS BCF PORTB,0 YA QUE CON ESTA ACCION CALL T_1MS PANTALLA PÁRA RECIBIR DATOS RETURN RUTINA
;
ESPERA
NESESARIA
; A 1 EL BIT ENABLE ; ESPERA NESESARIA ; HACEMOS 0 EL BIT ENABLE, ; ;
HABILITAMOS REGRESAMOS
DE
A
LA
LA
SUB
; **** TIEMPO SEGUN FABRICANTE NESESARIO PARA LA PANTALLA **** SERIAL MOVLW .4 MOVWF R3 CALL TMPO DECFSZ R3,F GOTO $-2 RETURN MAS MOVLW .24 MOVWF R3 NOP SOFTWARE 5
INSTITUTO IDAT
Página 30
COMUNICACIÓN PC A PIC CON PUERTO SERIE DB9
T_1MS
DECFSZ R3,F GOTO $-2 RETURN
MOVLW .3 MOVWF R3 CALL TMPO DECFSZ R3,F GOTO $-2 RETURN ; ****** SUB RUTINA DE 1 MILISEGUNDO APROXIMADAMENTE *-***** TMPO MOVLW .249 MOVWF R1 NOP DECFSZ R1,F GOTO $-2 RETURN ; ******** TIEMPO REQUERIDO SEGUN FABRICANTE PARA QUE LA PANTALLA INICIE *** T_20MS MOVLW .15 MOVWF R2 CALL TMPO DECFSZ R2,F GOTO $-2 RETURN END
SOFTWARE 5
INSTITUTO IDAT
Página 31
View more...
Comments