Está en la página 1de 8

..

..
..
..
..
Instituto Politécnico Nacional
Ingeniería en Sistemas
Computacionales
. . . . . . . . . .
Laboratorio de Instrumentación

Practica N° 8
Protocolo RS-232

Alumno: __________________________
Boleta: ___________ Grupo: ________
Profesor: __________________________

Fecha de elaboración: / / .
Protocolo RS-232
Objetivo

El alumno aprenderá a emplear el protocolo RS-232, así como a identificar las


diferentes etapas que lo constituyen, para de esta manera contar con un medio de
comunicación serial, con en el cual se puedan comunicar un microcontrolador con
una PC.

Equipo empleado

 1 Multímetros  Protoboard
 1 Fuente de VCD variable  PIC16F628A
 1 Osciloscopio  3 Resistencia 390 Ω @ ¼ Watt
 2 Puntas Banana – Caimán  8 Resistencia 10 KΩ @ ¼ Watt
 2 Puntas de osciloscopio  2 Capacitores 0.1 µF
 1 Regulador 7805
 1 Dipswitch de 8 interruptores
 1 Led rojo
 1 Led verde
 1 Led amarillo
Desarrollo de la práctica

1.- Circuito generador de señal bajo protocolo RS-232.


Arme el circuito de la figura 1. Utilice +V = 6 a 12 VCD.

Figura 1

Al microcontrolador se le tiene que grabar el código (el código del programa se


encuentra en al final del presente documento) previamente ensamblado en el cual,
las terminales del puerto A, deben configurarse como entradas, para que lean el
estado lógico que será generado por el dipswitch. Para ello se podrán fijas las 8
terminales del dipswitch en la posición que se quiera.

Posteriormente, el microcontrolador después de leer las terminales del puerto A,


enviara la información de cada uno de estos bits, por medio de la salida Tx que
trabajara mediante protocolo RS-232. Para visualizar el tren de datos será
necesario conectar el osciloscopio, en la terminal identificada como TxUSART (la
terminal positiva del cable de osciloscopio a la terminal TxUSART, y el negativo a
tierra).
Cada segundo el microcontrolador estará enviando el tren de datos que se está
generando por medio del dipswitch, y para cambiarlo se tiene que modificar la
posición de las terminales del dipswitch.

A continuación observe la señal que se genera en el osciloscopio, y dibújela en el


espacio que se encuentra a continuación.

B7 B6 B5 B4 B3 B2 B1 B0

Byte que se fijó en el dipswitch

Cambie la combinación binaria que se encuentra en el dipswitch y de nueva


cuenta, dibuje la señal en el espacio siguiente.

B7 B6 B5 B4 B3 B2 B1 B0

Byte que se fijó en el dipswitch

Con las señales anteriores calcule la tasa de transferencia (bits por segundo), y
coloque su valor a continuación.

Baud Rate = ___________KBaud.


2.- Cambio del valor de la tasa de transferencia.
Se tendrá que reprogramar al microcontrolador, por lo que se tiene que apagar la
fuente de alimentación, sacar el microcontrolador, y proceder a realizar el cambio
en el programa.

El cambio en el programa consiste en lo siguiente: Ubique donde se encuentra la


instrucción mediante la cual se carga un valor al registro “spbrg”, y cambiar valor
que se tiene de 25 (decimal) por el de 12 (decimal).

Programe de nueva cuenta al microcontrolador, instálelo en el circuito, encienda la


fuente de voltaje y vuelva a fijar las combinaciones binarias que anteriormente se
tenían, y vuelva a obtener las señales llenando los espacios que se encuentran a
continuación.

B7 B6 B5 B4 B3 B2 B1 B0

Byte que se fijó en el dipswitch

B7 B6 B5 B4 B3 B2 B1 B0

Byte que se fijó en el dipswitch


De estas nuevas señales anteriores calcule la tasa de transferencia (bits por
segundo), y coloque su valor a continuación.

Baud Rate = ___________KBaud.

Cuestionario

1. Identifique las diferentes partes que componen a la señal RS-232 que se obtuvo
en la práctica.

2. ¿Qué significa tasa de transferencia?

3. Menciona 5 aplicaciones que se le pueden asignar al protocolo RS-232.

4. ¿Cuál es el rango de voltaje que entrega una PC en el puerto serie, bajo


protocolo RS-232?

Conclusiones

Anote las conclusiones a las que llego con el desarrollo de esta práctica.
Anexo Código para programar al microcontrolador

A continuación esta expresado el código para programar al microcontrolador,


mismo que puede copiar al ensamblador para generar el archivo hexadecimal
(.hex).

;************************************************************
;Control de la USART
;Desarrollado por:______________________________________
;************************************************************
LIST P=PIC16F628A
#include <p16f628a.inc>
__CONFIG _INTOSC_OSC_NOCLKOUT&_WDT_OFF&_PWRTE_ON&_MCLRE_OFF&_BOREN_OFF&_BODEN_OFF&_LVP_OFF&_CPD_OFF&_CP_OFF
;************************************************************
; Declaración de Registros
;************************************************************
w equ 0x00
status equ 0x03
porta equ 0x05
portb equ 0x06
intcon equ 0x0b
pir1 equ 0x0c
rcsta equ 0x18
txreg equ 0x19
rcreg equ 0x1a
cmcon equ 0x1f
trisa equ 0x85
trisb equ 0x86
pie1 equ 0x8c
txsta equ 0x98
spbrg equ 0x99
var1 equ 0x20
var2 equ 0x21
var3 equ 0x22
TxUSART equ 0x23
RxUSART equ 0x24
;************************************************************
; Declaración de Bits
;************************************************************
c equ 0
z equ 2
rp0 equ 5
rp1 equ 6
cren equ 4
txif equ 4
rcif equ 5
rcie equ 5
peie equ 6 ;habilitador de interrupciones por periferico
adie equ 6
adif equ 6 ;bandera de interrupcion por fin de conversion a/d.
gie equ 7 ;habilitador general de interrupciones
spen equ 7
Led_Tx equ 6
Led_Rx equ 7
;************************************************************
; Inicio
;************************************************************
org 0
goto iniProg
org 4
bcf status,rp0 ;cambiar al banco 0
bcf status,rp1
btfsc pir1,rcif
goto interserie
retfie
;************************************************************
; Interrupciones
;************************************************************
interserie
bcf status,rp0 ;cambiar al banco 0
bcf status,rp1
bsf portb,Led_Rx
bcf intcon,gie ;desactivar habilitador general de interrupciones.
movf rcreg,w ;recuperar el dato recibido por rs232
movwf RxUSART
bcf pir1,rcif
bsf intcon,gie
bcf portb,Led_Rx
retfie
;************************************************************
; Programa principal
;************************************************************
iniProg
bsf status,rp0 ;cambia al banco 1
bcf status,rp1
movlw 0xff ;configura el puerto a como entradas
movwf trisa
movlw b'00000010' ;bit 1 como entrada demas del puerto b como salidas
movwf trisb
bcf status,rp0 ;cambia al banco 0
bcf status,rp1
movlw 0x07
movwf cmcon
clrf porta
clrf portb
;------------------------------------------------------------
; Activacion de la USART
;------------------------------------------------------------
bsf status,rp0 ;cambiar al banco 1
bcf status,rp1
movlw b'00100110'
movwf txsta
movlw .25
movwf spbrg
bcf status,rp0 ;cambiar al banco 0
bcf status,rp1
bsf rcsta,spen ;habilitacion del puerto de comunicacion serial
bsf rcsta,cren
bsf intcon,gie ;activar habilitador general de interrupciones.
bsf intcon,peie ;activar habilitador general de interrupciones por perifericos.
bsf status,rp0 ;cambiar al banco 1
bcf status,rp1
bsf pie1,rcie ;activar interrupción por fin de recepción por usart.
;------------------------------------------------------------
leePuerto ;Lee puerto para obtener valores del ADC externo
;------------------------------------------------------------
bcf status,rp0 ;cambiar al banco 0
bcf status,rp1
movf porta,w
movwf TxUSART
bsf portb,Led_Tx
call transmite
bcf portb,Led_Tx
call retardo1seg
goto leePuerto
;************************************************************
; Subrutinas
;************************************************************
;------------------------------------------------------------
retardo1seg ;Retardo de 1 segundo
;------------------------------------------------------------
movlw .250
movwf var1
ciclo_3
movlw .08
movwf var2
ciclo_2
movlw .166
movwf var3
ciclo_1
decfsz var3,1 ;497microsegundos=
goto ciclo_1 ;aprox. 0.5 milisegundos
decfsz var2,1
goto ciclo_2
decfsz var1,1
goto ciclo_3
return
;------------------------------------------------------------
transmite ;Rutina que se encarga de la transmisión
;------------------------------------------------------------
bsf status,rp0 ;cambiar al banco 1
bcf status,rp1
movlw b'00100110'
movwf txsta
movlw .25
movwf spbrg
bcf status,rp0 ;cambiar al banco 0
bcf status,rp1
bsf rcsta,spen
movf TxUSART,w
movwf txreg
txespera
btfss pir1,txif
goto txespera
return
end