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

4/15/2015

Programación en lenguaje C para


Microcontroladores PIC
Puerto Serial Asincrono
Ing. Germán Jesús Pereira Muñoz

15/04/2015 Ing. Germán Jesús Pereira Muñoz 1

Puertos Del Computador

Puerto Paralelo
Puerto Serial
Puerto USB

15/04/2015 Ing. Germán Jesús Pereira Muñoz 2

1
4/15/2015

Puerto Serial
El puerto serie RS-232, es la forma mas común usada para realizar
transmisiones de datos entre:
• Ordenadores.
• PLC’s
• Celulares
• Calculadoras
• GPS
• Dispositivos de Radio Frecuencia
• Datalogers, etc.
Utiliza el Circuito integrado UART (Transmisor-Receptor-Asíncrono
Universal).
Los siguientes modelos de este chip:
• 8250 (bastante antiguo, solo llega a 9600 baudios),
• 16450 (versión corregida del 8250, llega hasta 115.200 baudios)
• 16550A (con buffers de E/S) a partir de la gama Pentium.
• Los portátiles suelen llevar otros chips:
– 82510 (con buffer especial, emula al 16450) o el 825

15/04/2015 Ing. Germán Jesús Pereira Muñoz 3

Direcciones del Puerto Serial del


computador
El Puerto Serial Tiene las Direcciones.
Direcciones Base +0:
– COM 1  3F8h = 1016d
– COM 2  2F8h = 760d
– COM 3  3E8h = 1000h
– COM 4  2E8h = 744d

15/04/2015 Ing. Germán Jesús Pereira Muñoz 4

2
4/15/2015

Tabla de Registro del Puerto Serial

15/04/2015 Ing. Germán Jesús Pereira Muñoz 5

Conexión
Entre
Computadores
Modem Nulo

Modem Completo

Realimentación

15/04/2015 Ing. Germán Jesús Pereira Muñoz 6

3
4/15/2015

Configuración Del Tren De Bits Del Puerto Serial

• Mas común 8N1

– 8 bits de datos configurable a 7, 6, 5 bits de datos


– 1 bit de inicio
– 1 bit de parada  configurable a 2, 1 y ½ bits de parada

15/04/2015 Ing. Germán Jesús Pereira Muñoz 7

Niveles de voltaje Del Puerto Serial

• Comunicación RS-232 son:

– +3 a +25 voltios significa un ‘0’ lógico


– -3 a –25 voltios significa un ‘1’ lógico
– Cualquier voltaje entre estas regiones +3 a –3 voltios es indefinido

15/04/2015 Ing. Germán Jesús Pereira Muñoz 8

4
4/15/2015

Conversores de nivel de voltaje RS-232

15/04/2015 Ing. Germán Jesús Pereira Muñoz 9

Conexión PC – MAX232

15/04/2015 Ing. Germán Jesús Pereira Muñoz 10

5
4/15/2015

Conexión PC – MAX232

15/04/2015 Ing. Germán Jesús Pereira Muñoz 11

Usart (funciones)
UARTx_Init
UARTx_Data_Ready
UARTx_Tx_Idle
UARTx_Read
UARTx_Read_Text
UARTx_Write
UARTx_Write_Text
UART_Set_Active

15/04/2015 Ing. Germán Jesús Pereira Muñoz 12

6
4/15/2015

Uart_Init
Descripción: Initializa el modulo hardware USART con un
determinado Baud rate. Referirse al data sheet de cada
dispositivo para un especifico Fosc. Si se reporta un baud
rate no soportado el compilador da un error.

void Usart_Init(const unsigned long baud_rate);

Ejemplo:
Usart_Init(9600);

15/04/2015 Ing. Germán Jesús Pereira Muñoz 13

Usart_Data_Ready
Descripción: Use la funcion para testear si un dato ha
sido recivido en el buffer y esta listo para la lectura.

unsigned short Usart_Data_Ready(void);

Ejemplo:
Si el dato esta listo:
int receive;
...
if (Usart_Data_Ready()) receive = Usart_Read;

15/04/2015 Ing. Germán Jesús Pereira Muñoz 14

7
4/15/2015

Usart_Read
Descripción: La funcion recive un byte via USART. Use la
funcion Usart_Data_Ready para verificar si un dato esta
listo en el buffer, antes de usar la funcion Usart_Read.

unsigned short Usart_Read(void);

Ejemplo:
Si el dato esta listo:

int receive;
...
if (Usart_Data_Ready())
{ receive = Usart_Read(); }

15/04/2015 Ing. Germán Jesús Pereira Muñoz 15

Usart_Write
Descripción: Funcion transmite un byte (data) via USART.

void Usart_Write(unsigned short data);

Ejemplo:
int chunk = 0x1E;
….
Usart_Write(chunk); /* envia chunk via USART */

15/04/2015 Ing. Germán Jesús Pereira Muñoz 16

8
4/15/2015

Usart(esquemático con Virtual Terminal)


U4
RA0 2 15 RC0
RA0/AN0 RC0/T1OSO/T1CKI
RA1 3 16 RC1
RA1/AN1 RC1/T1OSI/CCP2/UOE CTS
RA2 4 17 RC2
RA2/AN2/VREF-/CVREF RC2/CCP1/P1A
RA3 5 23 RC4
RA3/AN3/VREF+ RC4/D-/VM RTS
RA4 6 24 RC5
RA4/T0CKI/C1OUT/RCV RC5/D+/VP
RA5 7 25 RC6 RC7
RA5/AN4/SS/LVDIN/C2OUT RC6/TX/CK TXD
RA6 14 26 RC7
RA6/OSC2/CLKO RC7/RX/DT/SDO
OSC1 13 RC6
OSC1/CLKI RXD
RB0 33 19 RD0
RB0/AN12/INT0/FLT0/SDI/SDA RD0/SPP0
RB1 34 20 RD1
RB1/AN10/INT1/SCK/SCL RD1/SPP1
RB2 35 21 RD2 RB0 1 20
RB2/AN8/INT2/VMO RD2/SPP2
RB3 36 22 RD3 RB1 2 19
RB3/AN9/CCP2/VPO RD3/SPP3
RB4 37 27 RD4 RB2 3 18
RB4/AN11/KBI0/CSSPP RD4/SPP4
RB5 38 28 RD5 RB3 4 17
RB5/KBI1/PGM RD5/SPP5/P1B
RB6 39 29 RD6 RB4 5 16
RB6/KBI2/PGC RD6/SPP6/P1C
RB7 40 30 RD7 RB5 6 15
RB7/KBI3/PGD RD7/SPP7/P1D
RB6 7 14
8 RE0 RB7 8 13
RE0/AN5/CK1SPP
9 RE1 9 12
RE1/AN6/CK2SPP
10 RE2 10 11
RE2/AN7/OESPP
18 1 RE3
VUSB RE3/MCLR/VPP
PIC18F4550 C1
RE3 OSC1
R1
27n
10k
C2
RA6

27n

15/04/2015 Ing. Germán Jesús Pereira Muñoz 17

Usart(esquemático con COMPIN)


U4
RA0 2 15 RC0 P1
RA0/AN0 RC0/T1OSO/T1CKI
RA1 3 16 RC1
RA1/AN1 RC1/T1OSI/CCP2/UOE
RA2 4 17 RC2
RA2/AN2/VREF-/CVREF RC2/CCP1/P1A 1
RA3 5 23 RC4 DCD
RA3/AN3/VREF+ RC4/D-/VM 6
RA4 6 24 RC5 DSR
RA4/T0CKI/C1OUT/RCV RC5/D+/VP RC7 2
RA5 7 25 RC6 RXD
RA5/AN4/SS/LVDIN/C2OUT RC6/TX/CK 7
RA6 14 26 RC7 RTS
RA6/OSC2/CLKO RC7/RX/DT/SDO RC6 3
OSC1 13 TXD
OSC1/CLKI 8
CTS
4
RB0 33 19 RD0 DTR
RB0/AN12/INT0/FLT0/SDI/SDA RD0/SPP0 9
RB1 34 20 RD1 RI
RB1/AN10/INT1/SCK/SCL RD1/SPP1
RB2 35 21 RD2
RB2/AN8/INT2/VMO RD2/SPP2
RB3 36 22 RD3
RB3/AN9/CCP2/VPO RD3/SPP3
RB4 37 27 RD4 ERROR
RB4/AN11/KBI0/CSSPP RD4/SPP4
RB5 38 28 RD5
RB5/KBI1/PGM RD5/SPP5/P1B COMPIM
RB6 39 29 RD6
RB6/KBI2/PGC RD6/SPP6/P1C
RB7 40 30 RD7
RB7/KBI3/PGD RD7/SPP7/P1D
8 RE0
RE0/AN5/CK1SPP
9 RE1
RE1/AN6/CK2SPP RB0 1 20
10 RE2
RE2/AN7/OESPP RB1 2 19
18 1 RE3
VUSB RE3/MCLR/VPP RB2 3 18
RB3 4 17
PIC18F4550 C1 RB4 5 16
OSC1 RB5 6 15
RE3
RB6 7 14
R1 27n RB7 8 13
9 12
10k 10 11
C2
RA6

27n

15/04/2015 Ing. Germán Jesús Pereira Muñoz 18

9
4/15/2015

15/04/2015 Ing. Germán Jesús Pereira Muñoz 19

Usart (programa I)

15/04/2015 Ing. Germán Jesús Pereira Muñoz 20

10
4/15/2015

Ejercicio propuesto 1
• Repetir el ejercicio anterior, pero utilizando el
virtualizador del puerto serial y el componente
COMPIM del Proteus, y el Hyperterminal del PC
U4
RA0 2 15 RC0 P1
RA0/AN0 RC0/T1OSO/T1CKI
RA1 3 16 RC1
RA1/AN1 RC1/T1OSI/CCP2/UOE
RA2 4 17 RC2
RA2/AN2/VREF-/CVREF RC2/CCP1/P1A 1
RA3 5 23 RC4 DCD
RA3/AN3/VREF+ RC4/D-/VM 6
RA4 6 24 RC5 DSR
RA4/T0CKI/C1OUT/RCV RC5/D+/VP RC6 2
RA5 7 25 RC6 RXD
RA5/AN4/SS/LVDIN/C2OUT RC6/TX/CK 7
RA6 14 26 RC7 RTS
RA6/OSC2/CLKO RC7/RX/DT/SDO RC7 3
OSC1 13 TXD
OSC1/CLKI 8
CTS
4
RB0 33 19 RD0 DTR
RB0/AN12/INT0/FLT0/SDI/SDA RD0/SPP0 9
RB1 34 20 RD1 RI
RB1/AN10/INT1/SCK/SCL RD1/SPP1
RB2 35 21 RD2
RB2/AN8/INT2/VMO RD2/SPP2
RB3 36 22 RD3
RB3/AN9/CCP2/VPO RD3/SPP3
RB4 37 27 RD4 ERROR
RB4/AN11/KBI0/CSSPP RD4/SPP4
RB5 38 28 RD5
RB5/KBI1/PGM RD5/SPP5/P1B COMPIM
RB6 39 29 RD6
RB6/KBI2/PGC RD6/SPP6/P1C
RB7 40 30 RD7
RB7/KBI3/PGD RD7/SPP7/P1D
8 RE0
RE0/AN5/CK1SPP
9 RE1
RE1/AN6/CK2SPP RB0 1 20
10 RE2
RE2/AN7/OESPP RB1 2 19
18 1 RE3
VUSB RE3/MCLR/VPP RB2 3 18
RB3 4 17
PIC18F4550 C1 RB4 5 16
OSC1 RB5 6 15
RE3
RB6 7 14
R1 27n RB7 8 13
9 12
10k 10 11
C2
RA6

27n
15/04/2015 Ing. Germán Jesús Pereira Muñoz 21

Ejercicio propuesto 2
• Realizar un programa controlar con el teclado del
computador dos motores DC
a) a) Utilizando el Virtual Terminal del Proteus
b) b) Utilizando el Virtualizador del puerto serial
y el COMPIM del Proteus

15/04/2015 Ing. Germán Jesús Pereira Muñoz 22

11
4/15/2015

Ejercicio propuesto 3
• Realizar un programa que en el computador se
desliegue la informacion de 4 ADC del
microcontrolador.
a) a) Utilizando el Virtual Terminal del Proteus
b) b) Utilizando el Virtualizador del puerto serial
y el COMPIM del Proteus

15/04/2015 Ing. Germán Jesús Pereira Muñoz 23

Ejercicio propuesto 4
• Realizar un programa para que mediante el
computador se mande un mensaje al microcontrolador
y est emensaje ser muestre en un LCD de texto.
a) a) Utilizando el Virtual Terminal del Proteus
b) b) Utilizando el Virtualizador del puerto serial y el
COMPIM del Proteus

15/04/2015 Ing. Germán Jesús Pereira Muñoz 24

12
4/15/2015

Ejercicio propuesto 5
• Realizar un programa para realizar la conversión
ADC del canal 0 y enviarla por el puerto serial

20/08/0
20/08/10
20/08/10 Ing. Germán Jesús Pereira Muñoz 25

PICKit 2 UART Tool

Modo: Hex

15/04/2015 Ing. Germán Jesús Pereira Muñoz 26

13

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