Вы находитесь на странице: 1из 10

Microcontroladores.

Guía 6 1

Facultad: Ingeniería
Escuela: Electrónica
Asignatura: Microcontroladores
Lugar de ejecución: Laboratorio de
microprocesadores, Edif. 3 Electrónica.

Tema: Comunicación serie entre PIC y PC.


Objetivo general
• Utilizar el módulo USART en los microcontroladores PIC para
comunicar computadoras personales y sistemas embebidos que
realizan tareas de control y monitoreo.

Objetivos específicos
• Conocer la forma de inicialización del módulo USART.
• Definir los parámetros de comunicación de puerto serie (velocidad,
número de bits de datos, número de bits de parada y paridad) y
configurar ambos extremos (PC y MCU) para que los usen
simultáneamente.
• Controlar sistemas externos tomando decisiones desde una PC.
• Monitorear sistemas externos a través de un microcontrolador
conectado a una PC.

Materiales y equipo
• Computadora personal con puerto paralelo, sistema operativo
Windows XP, software MPLAB y WinPic800.
• Tarjeta de entrenamiento CP-PIC877 V1.0 R1.
• Programador ET-CAB10PIN V2.
• Fuente de poder de 12V con borne redondo de 5mm.
• Cable de cinta plana de 28 pines con conector para breadboard.
• Breadboard.
• 1 Resistencia de 680Ω.
• 1 LED.
• 1 Resistencia de 10KΩ.
• 1 Botón pulsador simple.
• Cable UTP categoría 5.
• 1 Cable serie DTE/DCE.
• 1 Adaptador de puerto serie para el entrenador CP-PIC877 V1.0 R1.
Microcontroladores. Guía 6 2

Procedimiento
1. Construya el circuito que se le presenta en la figura 1. Dicho
circuito se conectará a la tarjeta de entrenamiento con el
diagrama de pines que aparece en la figura 2.

Figura 1 – Diagrama de conexión para el circuito en la breadboard.

Figura 2 – Organización de los pines de I/O de la tarjeta entrenadora.

2. Una vez ensamblado el circuito, conecte el cable plano a la


Microcontroladores. Guía 6 3

tarjeta entrenadora. Solicite a su instructor de laboratorio que


verifique su circuito (el circuito se encenderá más adelante).
3. A continuación ejecute el programa MPLAB. Cree un nuevo proyecto
con el PIC16F877.
4. Agregue un nuevo archivo de código fuente llamado “Principal.asm”
(no olvide agregar la extensión .asm cuando lo guarde). Y copie el
siguiente programa en el archivo:
;Programa para utilización de puerto serie y comunicacion con PC
list p=16f877 ;Definición del microcontrolador a usar
#include <p16f877.inc> ;Cabecera que define los registros del MCU

;Bits de configuración del MCU


cfg1 equ _CP_OFF & _DEBUG_OFF & _WRT_ENABLE_OFF & _CPD_OFF & _LVP_ON
cfg2 equ _BODEN_OFF & _PWRTE_ON & _WDT_OFF & _XT_OSC
__config cfg1 & cfg2

;Declaracion de datos en memoria


Mis_Variables udata
DatoRX res 1

PROG1 code
;========================================================================
;Rutina principal
;----------------
clrf PORTC ;Se coloca el latch de salida a 0

bsf STATUS, RP0 ;Se selecciona el banco 1

movlw 0x0C0 ;Los pines del puerto serie deben ser configurados
movwf TRISC ;como entrada para que el modulo USART opere

movlw 0x26 ;Configuracion del puerto serie: 8 bits, TX


movwf TXSTA ;habilitada, modo asincrono y alta velocidad (los
;demas bits desactivan otras caracteristicas)

movlw d'25' ;Establece la velocidad del puerto a 9600 baudios,


movwf SPBRG ;usando un oscilador a 4MHz

bcf STATUS, RP0 ;Selecciona banco 0

movlw 0x90 ;Configuracion del puerto serie: Puerto habilitado,


movwf RCSTA ;8 bits, recepcion continua habilitada y no detectar
;direcciones (los demas bits no tienen efecto)

Rutina:
call Recibir ;Inicialmente llama a la rutina de recepcion de datos
Microcontroladores. Guía 6 4

btfss STATUS, C ;Verifica si se ha recibido un dato


goto Rutina ;De no ser asi, sigue esperando a que haya datos

movwf DatoRX ;Hubo dato, asi que se guarda

movlw '1' ;Se verifica si se recibio un '1' (ascii 0x31)


subwf DatoRX, w
btfsc STATUS, Z
call EncenderLED ;De ser asi, va a la rutina de encendido

movlw '0' ;Se verifica ahora si se recibio un '0' (ascii 0x30)


subwf DatoRX, w
btfsc STATUS, Z
call ApagarLED ;De ser asi, va a la rutina de apagado

;NOTA: En caso que el caracter recibido no sea ni un '1' ni un '0',


;entonces el mismo es ignorado

goto Rutina ;Una vez hecho el proceso, lo repite

;Subrutina de encendido de LED


;-----------------------------
EncenderLED:
bsf PORTC, 0 ;Primeramente enciende el LED

;Luego envia los caracteres "ON" seguidos de un retorno de linea


movlw 'O'
call Transmitir
movlw 'N'
call Transmitir
movlw 0x0D
call Transmitir
movlw 0x0A
call Transmitir

return

;Subrutina de apagado de LED


;---------------------------
ApagarLED:
bcf PORTC, 0 ;Apaga el LED

;Luego envia los caracteres "OFF" seguidos de un retorno de linea


movlw 'O'
call Transmitir
movlw 'F'
call Transmitir
movlw 'F'
call Transmitir
movlw 0x0D
call Transmitir
Microcontroladores. Guía 6 5

movlw 0x0A
call Transmitir

return

;Subrutina de transmision de datos


;---------------------------------
;Esta rutina envia un dato por el puerto serie (modulo USART). En caso que
;el buffer de salida este lleno, espera a que haya espacio para enviar el
;dato.
;Entradas:
; w = Dato a transmitir
;Salidas:
; ninguna (El dato es enviado por el puerto serie)
Transmitir:
;Primeramente verifica y espera a que el puerto serie este listo para
;transmitir (que tenga espacio en el buffer), esto se puede hacer
;verificando que la bandera de interrupcion del modulo este activada
;(notese que esta bandera opera aun cuando la interrupcion esta
;desactivada)
btfss PIR1, TXIF
goto $-1

;Para enviar el dato, simplemente se escribe el mismo al registro de


;transmision
movwf TXREG

return

;Subrutina de recepcion de datos


;-------------------------------
;Esta rutina se encarga de tomar los datos recibidos por el puerto serie.
;Si no existen datos disponibles en el momento de llamar a la subrutina,
;la misma retorna inmediatamente.
;Entradas:
; ninguna
;Salidas:
; STATUS<C> = Indica si se tiene un dato: 1 = hay dato, 0 = no hay dato
; w = El dato recibido, en caso que se tenga uno
Recibir:
bcf STATUS, C ;Limpia el acarreo inicialmente

btfss PIR1, RCIF ;Verifica si hay un dato en el buffer


return ;En caso de no haber, regresa con el acarreo en 0

movf RCREG, w ;En caso de haber, lo toma del registro de recepcion


bsf STATUS, C ;Luego establece la bandera de acarreo
return ;Finalmente retorna

end
Listado 1 – Código fuente del programa a implementar.
Microcontroladores. Guía 6 6

5. Agregue al proyecto el archivo de de guión de enlace (linker


script) con el nombre “16f877.lkr”.
6. Compile el programa y verifique que no se generen errores.
7. Prepare el programador conectando primero la cincha plana al
último conector del extremo del tablero, a continuación conecte el
programador al puerto paralelo de su PC. Prepare la tarjeta de
entrenamiento conectando el cable de poder a la misma y luego
conectando la cincha que viene del programador al conector
amarillo.
8. Conecte el adaptador para puerto serie que se la ha proporcionado.
Este se ubicará en el conector rotulado como “RS232” de la
tarjeta de entrenamiento. Conecte también el cable DCT/DCE entre
el puerto COM1 de la PC y dicho adaptador. Una vez hechas las
conexiones, encienda la fuente de 5V.
9. Ejecute a continuación el programa WinPic800. Asegúrese de que
está elegido el programador “ETT-LOW VPP ICSP” en el puerto
paralelo correcto. Ejecute la rutina de detección automática de
dispositivo para que el software quede configurado.
10. Cargue el archivo .hex generado al compilar el programa y
descárguelo en el PIC. Una vez terminado, corrobore que el
programa fue programado correctamente con la rutina de
comprobación del Winpic800.
11. A continuación ejecute el programa “Hyper Terminal”. Este se
encuentra disponible junto con el sistema operativo Windows, para
abrirlo diríjase a:
Inicio->Todos los programas->Accesorios->Comunicaciones->Hyper
Terminal
12. En caso que ejecute Hyper Terminal por primera vez, aparecerán un
par de cuadros de diálogo donde se le solicita en que configure el
país y código de área, así como el sistema de marcación a
utilizar. Como no se utilizará este software para establecer
comunicaciones por módem, deje estos cuadros de diálogo con sus
valores por defecto y haga clic en aceptar.
13. En la ventana ilustrada en la siguiente figura se le solicitará
un nombre y un icono para identificar la conexión. Seleccione
cualquier icono e introduzca el nombre “Conexión con entrenador
PIC”.
Microcontroladores. Guía 6 7

Figura 3 – Cuadro de diálogo para identificación de la conexión.

14. A continuación aparecerá un cuadro de diálogo donde se debe


seleccionar el dispositivo de comunicación a utilizar. Seleccione
el puerto serie “COM1”. Note que los demás campos se desactivan
automáticamente al seleccionar este puerto, puesto que no aplican.

Figura 4 – Selección del dispositivo de comunicaciones.

15. Finalmente aparece un último cuadro de diálogo donde se solicita


la configuración del puerto serie. Asegúrese de seleccionar los
siguientes parámetros: Velocidad de 9600 baudios, 8 bits de datos,
sin paridad, 1 bit de parada y sin control de flujo.
Microcontroladores. Guía 6 8

Figura 5 – Configuración del puerto serie.

16. Una vez definidos todos los parámetros, se mostrará la ventana


principal de Hyper Terminal. La operación de Hyper Terminal es la
siguiente:
• Todos los caracteres digitados en el teclado, se envían por el
puerto serie, y en este caso, son enviados al microcontrolador.
• Asimismo, todos los datos que el microcontrolador envía por el
puerto serie, son mostrados inmediatamente como caracteres en
pantalla.
• Lo que el usuario digita en el teclado no aparece en pantalla,
es decir, los caracteres no hacen “eco” (esto sin embargo puede
cambiarse en las opciones).
• Todas las operaciones que hace Hyper Terminal son a nivel de
caracteres ASCII. Si se desea hacer envío de números binarios,
deberán hacerse a través de un programa distinto.
17. Una vez en la ventana principal, digite un número “1”. ¿Que
ocurrió con el LED?______________________
¿Qué mensaje aparece en pantalla?__________________________.
18. Luego, presione el número “0” en el teclado de su PC. Describa
que es lo que ocurre con el LED: ________________________ ¿Qué
mensaje se muestra en pantalla?___________________
19. Presione en repetidas ocasiones las teclas. Note como el sistema
Microcontroladores. Guía 6 9

siempre contesta adecuadamente a cada comando.


20. A continuación proceda a modificar el programa. En esta ocasión
lo que se requiere es que se pueda leer el estado del botón, para
lo cual el microcontrolador deberá mandar los mensajes “1” o “0”
repetidamente, indicando siempre el estado actual del botón.
Recuerde configurar el puerto A como entrada y desactivar los
canales del ADC por medio del registro ADCON1. Asimismo incluya
una rutina de retardo, para que los datos sean enviados a un ritmo
regular y sin saturar la ventana de Hyper Terminal.
21. Corrobore el funcionamiento de su programa y notifique a su
instructor cuando lo tenga listo.
22. Apague la tarjeta de entrenamiento, desconecte el programador de
la tarjeta y la PC, y apague su computadora. Deje todo en orden en
su puesto de trabajo y entregue los materiales a su instructor.

Análisis de resultados
• Durante la práctica se observa que al presionar la tecla “1”
aparece un mensaje distinto en la pantalla y no la tecla que
presionó. ¿A que se debe este comportamiento?
• Suponga que necesita controlar con la PC un total de 8 salidas
digitales por medio del microcontrolador conectado al puerto
serie. ¿Qué modificaciones habría que hacer al programa para
lograrlo?

Investigación complementaria
• ¿Qué significa que un cable sea DTE/DCE? ¿Qué otros tipos de
cable existen para interfases RS-232?
• ¿Es posible usar 2 bits de parada en la comunicación serie con
PIC16F877? Explique.

Referencias bibliográficas
• Hoja técnica del microcontrolador PIC16F877A:
http://ww1.microchip.com/downloads/en/DeviceDoc/39582b.pdf
• Palacios, Enrique - Remiro, Fernando y López, Lucas.
Microcontrolador PIC16F84: Desarrollo de proyectos. Segunda
edición. Coedición Alfaomega RA-MA.
Microcontroladores. Guía 6 10

Hoja de cotejo: 6

Guía 6:Comunicación serie entre PIC y PC.

Alumno: Puesto No:

Docente: GL: Fecha:

EVALUACION

% 1-4 5-7 8-10 Nota


CONOCIMIENTO 25 Explica Explica como Explica
deficientemente opera el módulo, claramente cómo
cómo opera el pero desconoce opera el módulo.
módulo USART del algunos registros.
PIC.
APLICACIÓN 25 No creó el Creó el programa y El programa
DEL programa se compila, pero creado se compila
CONOCIMIENTO correctamente y no funciona ya en y funciona
posee muchos el dispositivo. correctamente en
errores. el dispositivo.
25 El circuito armado El circuito El circuito
presenta ensamblado ensamblado
problemas y no presenta algunos funciona
opera. problemas. correctamente.
20 No hizo las Hizo las Hizo las
modificaciones del modificaciones modificaciones y
paso 20 o las pero los resultados producen los
mismas no son difieren de lo resultados
correctas. esperado. correctos.
ACTITUD 2.5 Es un observador Participa Participa
pasivo. ocasionalmente o propositiva e
lo hace integralmente en
constantemente toda la práctica.
pero sin
coordinarse con su
compañero.
2.5 Es ordenado pero Hace un uso Hace un manejo
no hace un uso adecuado de lo responsable y
adecuado de los recursos, respeta adecuado de los
recursos. las pautas de recursos conforme
seguridad, pero es a pautas de
desordenado. seguridad e
higiene.
TOTAL 100

Вам также может понравиться