Está en la página 1de 69

UNIDAD 4:

Unidad 4:
Perifricos del PIC16F87X
4.1 Puertos de I/O
4.2 Temporizadores
4.3 Pantalla de Cristal Liquido (LCD)
4.4 Interrupciones
4.4 Conversin A/D
4.5 Mdulo USART


4.1 Puertos E/S
3
4.1.1 Puerto A
E/S Digital
E/S Digital
E/S Digital
E/S Digital
E/S Digital
E/S Digital
E. Analgica
E. Analgica
E. Analgica
E. Analgica
E. Analgica
Ref +
Ref -
E. Reloj (Timer 0)
slave
4
5
4.1.1 Puerto A
Registros Asociados:

PORTA
TRISA
ADCON1
5.1.2 Puerto B
E/S Digital
E/S Digital
E/S Digital
E/S Digital
E/S Digital
E/S Digital
E/S Digital
E/S Digital
Programacin
Programacin
Programacin
Interrupcin Externa
6
7
4.1.2 Puerto B
Registros Asociados:
PORTB
TRISB
OPTION
4.1.3 Puerto C
8
4.1.3 Puerto C
Registros Asociados
PORTC
TRISC
9
4.1.4 Puerto D
10
4.1.4 Puerto D
E/S Digital
E/S Digital
E/S Digital
E/S Digital
E/S Digital
E/S Digital
E/S Digital
E/S Digital Puerto paralelo esclavo
Puerto paralelo esclavo
Puerto paralelo esclavo
Puerto paralelo esclavo
Puerto paralelo esclavo
Puerto paralelo esclavo
Puerto paralelo esclavo
Puerto paralelo esclavo
11
4.1.4 Puerto D
Registros Asociados
PORTD
TRISD
TRISE
12
4.1.5 Puerto E
E/S Digital
E/S Digital
E/S Digital
Control PPS
Control PPS
Control PPS
Analog
Analog
Analog
13
4.1.5 Puerto E
Registros asociados
PORTE
ADCON1
TRISE
14
PSP
4.1.6 Puerto Paralelo Esclavo
Puerto D
Puerto E
M
i
c
r
o
p
r
o
c
e
s
a
d
o
r

Datos (8)
Control (3)
15
4.1.6 Puerto Paralelo Esclavo
Escritura:
16
4.1.6 Puerto Paralelo Esclavo
Lectura:
17
18
4.3.2 Registros Asociados
INTCON
PIR1
PIR2
PIE1
PIE2
4.2 Temporizadores
19
4.2.1 Temporizador/Contador
TMR0
TMR0
I
N
C
R
E
M
E
N
T
O
S

00
FF
8 bits
D
e
s
b
o
r
d
e


Sealizador



Interrupcin
RA4/
T0CKI
4
OSC
F
20
4.2.1 Temporizador/Contador
TMR0
TMR0
Divisor del Rango R
Oscilador T
Inicial Valor V
l Valor Fina V
Deseado Tiempo T
div
osc
i
f
:
:
) 00 ( :
) FF ( :
:

div osc i f
R T V V T ) ( 4
I
N
C
R
E
M
E
N
T
O
S

00
FF
D
e
s
b
o
r
d
e

8 bits
Escritura Lectura
V
i
V
f
FF
TOIF
I
N
C
R
E
M
E
N
T
O
S

OPTION
INTCON
21
E
J
E
M
P
L
O

4.2.1 Temporizador/Contador
TMR0
TMR0
DIV OSC
i
R T
T
V
4
255
I
N
C
R
E
M
E
N
T
O
S

00
FF
D
e
s
b
o
r
d
e

8 bits
Escritura Lectura
V
f
FF
TOIF
I
N
C
R
E
M
E
N
T
O
S

d h
255 FF V Si
f

TMR0Vi
INTCON
OPTION
RETARDO
TOIF=1?
TOIF0
RETURN
SI
NO
V
i
22
E
J
E
M
P
L
O

4.2.1 Temporizador/Contador
TMR0
TMR0
I
N
C
R
E
M
E
N
T
O
S

00
FF
D
e
s
b
o
r
d
e

8 bits
Escritura Lectura
FF
TOIF
I
N
C
R
E
M
E
N
T
O
S

h
00 V Si
i

TMR000
INTCON
OPTION
RETARDO
TMR0 =Vf?
RETURN
SI
NO
V
i
00
FF V
f
DIV OSC
f
R T
T
V
4

23
E
J
E
M
P
L
O

4.3. Pantalla de Cristal Lquido
(LCD)
Es un dispositivo microcontrolado de
visualizacin grfico para la presentacin
de caracteres, smbolos o dibujos.
24
4.3. Pantalla de Cristal Lquido
(LCD)
El modelo LM016L dispone de: 2 filas de
16 caracteres. Cada carcter es una
matriz de 5x7 pixels.
25
4.3. Pantalla de Cristal Lquido
(LCD)
El modelo LM016L tiene una memoria de
40 caracteres por lnea de pantalla. Se
pueden visualizar 16 caracteres por lnea.
00
28 37
0F
27
67
26
4.3.1 Pines del LCD
27
4.3.2. Caracteres del LCD
28
4.3.3. Instrucciones del LCD



Comando RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 TIEMPO
Borrar pantalla 0 0 0 0 0 0 0 0 0 1 1,64 ms
Cursor a origen 0 0 0 0 0 0 0 0 1 x 1,64 ms
Modo de entrada 0 0 0 0 0 0 0 1 I/D S 40 ms
Control de pantalla 0 0 0 0 0 0 1 D C B 40 ms
C. de Desplazamientos 0 0 0 0 0 1 S/C R/L X X 40 ms
Control de Hardware 0 0 0 0 1 DL N F X X 40 ms
Set CGRAM address 0 0 0 1 Direccin de la CGRAM 40 ms
Set DDRAM address 0 0 1 Direccin de la DDRAM 40 ms
Read Busy Flag 1 0 BF Direccin de la DDRAM 40 ms
Write RAM 0 1 Cdigo ASCII byte del carcter 40 ms
Read RAM 1 1 Cdigo ASCII byte del carcter 40 ms
29
4.3.3. Instrucciones del LCD



Comando R/W RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 TIEMPO
Borrar pantalla 0 0 0 0 0 0 0 0 0 1 1,64 ms
Cursor a origen 0 0 0 0 0 0 0 0 1 x 1,64 ms
Modo de entrada 0 0 0 0 0 0 0 1 I/D S 40 ms
Control de pantalla 0 0 0 0 0 0 1 D C B 40 ms
C. de Desplazamientos 0 0 0 0 0 1 S/C R/L X X 40 ms
Control de Hardware 0 0 0 0 1 DL N F X X 40 ms
Set CGRAM address 0 0 0 1 Direccin de la CGRAM 40 ms
Set DDRAM address 0 0 1 Direccin de la DDRAM 40 ms
Read Busy Flag 1 0 BF Direccin de la DDRAM 40 ms
Write RAM 0 1 Cdigo ASCII byte del carcter 40 ms
Read RAM 1 1 Cdigo ASCII byte del carcter 40 ms
0

/

1
:

I
n
c
r
e
m
e
n
t
o
/

D
e
c
r
e
m
e
n
t
o












d
e

l
a

p
o
s
i
c
i

n

d
e
l

c
u
r
s
o
r

0

/

1
:

N
o


/

S
i











d
e
s
p
l
a
z
a

i
n
f
o
r
m
a
c
i

n






0
/
1
:

L
C
D

a
p
a
g
a
d
a
/
e
n
c
e
n
d
i
d
a

0
/
1
:





S
i
/
N
o

v
i
s
u
a
l
i
z
a

C
u
r
s
o
r



0
/
1
:

C
u
r
s
o
r

s
i
n
/
c
o
n

p
a
r
p
a
d
e
o

30
4.3.3. Instrucciones del LCD



Comando R/W RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 TIEMPO
Borrar pantalla 0 0 0 0 0 0 0 0 0 1 1,64 ms
Cursor a origen 0 0 0 0 0 0 0 0 1 x 1,64 ms
Modo de entrada 0 0 0 0 0 0 0 1 I/D S 40 ms
Control de pantalla 0 0 0 0 0 0 1 D C B 40 ms
C. de Desplazamientos 0 0 0 0 0 1 S/C R/L X X 40 ms
Control de Hardware 0 0 0 0 1 DL N F X X 40 ms
Set CGRAM address 0 0 0 1 Direccin de la CGRAM 40 ms
Set DDRAM address 0 0 1 Direccin de la DDRAM 40 ms
Read Busy Flag 1 0 BF Direccin de la DDRAM 40 ms
Write RAM 0 1 Cdigo ASCII byte del carcter 40 ms
Read RAM 1 1 Cdigo ASCII byte del carcter 40 ms
0
/
1
:






D
e
s
p
l
a
z
a

C
u
r
s
o
r

/

D
a
t
o
s

0
/
1
:

D
e
s
p
l
a
z
a

I
z
q
u
i
e
r
d
a
/
D
e
r
e
c
h
a

0
/
1
:

5
x
7

/

5
x
1
0

p
i
x
e
l

0
/
1
:


L
C
D

d

1
/

2

l

n
e
a
s


0
/
1
:

R
e
c
i
b
e

4
/
8

b
i
t
s

0
/
1
:





L
C
D


d
i
s
p
o
n
i
b
l
e

/

o
c
u
p
a
d
a

31
4.3.4 Rutinas del LCD
Se usan 2 puertos:

Datos:


Control:



DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0
E RW RS
RA2 RA1 RA0
32
4.3.4 Rutinas del LCD
ESPERAR A QUE SE LIBERE LCD (LCD_BUSY)
1. LCD en modo lectura (RW=RA1=1)
2. Configurar RB como entrada
3. Activar el LCD (E=RA2=1)
4. Espere 1 ms
5. BUSY=0? (RB7=0?)
5.1. No(Ocupado): Ir al paso 5
5.2. SI(Disponible): Ir al paso 6
6. Desactiva el LCD (E=RA2=0)
7. Configurar RB como salida
8. LCD en modo escritura (RW=RA1=0)
9. Retorne




33
4.3.4 Rutinas del LCD
ENVIAR INSRUCCIN AL LCD (LCD_REG)
1. LCD en modo de instruccin (RS=RA0=0)
2. Colocar cdigo de instruccin en RB
3. Espera a que se libere el LCD (LCD_BUSY)
4. Genera un pulso en E:
4.1. Activa el LCD (E=RA2=0)
4.2. Espera 1 ms
4.3. Desactiva el LCD (E=RA2=1)
4.4 Espere 5 ms
6. Retorne


34
4.3.4 Rutinas del LCD
VISUALIZAR CARCTER (LCD_DATOS)
1. LCD en modo de instruccin (RS=RA0=0)
2. Colocar valor ASCII en RB
3. Espera a que se libere el LCD (LCD_BUSY)
4. LCD en modo dato (RS=RA0=1)
5. Genera un pulso en E:
4.1. Activa el LCD (E=RA2=0)
4.2. Espera 1 ms
4.3. Desactiva el LCD (E=RA2=1)
4.4 Espere 5 ms
6. Retorne


35
4.3.4 Rutinas del LCD
INICIALIZAR LCD (LCD_INI)
1. Control de Hardware W
2. Enviar Instruccin (LCD_REG)
3. Borrar pantalla W
4. Enviar Instruccin (LCD_REG)
5. Modo de entrada W
6. Enviar Instruccin (LCD_REG)
7. Control de pantalla W
8. Enviar Instruccin (LCD_REG)
9. Set DDRAM Address W
10. Enviar Instruccin (LCD_REG)
11. Retornar




36
4.3.4 Rutinas del LCD
Configurar Puertos del LCD (LCD_PORT)
1. Ir al Banco 1
2. RB se programa como salida (RB 00000000)
3. RA<2:0> se programan como salidas (RA xxxxx000)
4. Ir al Banco 0
5. Desactivar RS del modulo LCD (RS=RA0=0)
6. Desactivar E del modulo LCD (E=RA2=0)




37
4.4. INTERRUPCIONES
E/S controlada por Programa
E/S controlada por Interrupciones
EVENTO
Interno
Externo
Flanco
Nivel Activo
Desbordamiento
.de contador
38
4.4.1 Fuentes de Interrupcin
Flanco en el pin RB0/INT
Desborde del Timer 0, Timer 1 Timer 2
Cambio en el estado de los bits 4 a 7 del puerto B
Cambio en el mdulo de captura y comparacin
Transmisin o recepcin de un caracter por USART
Interrupcin del mdulo SSP
Fin de conversin A/D
Lectura/escritura del puerto paralelo esclavo
Escritura de EEPROM finalizada
39
PC
4.4.2 Mecanismo de Interrupcin
40
PILA
INTCON
GIE
1
0
4
V
e
c
t
o
r

d
e

I
n
t
e
r
r
u
p
c
i

n

4
4.4.3 Registros de Interrupcin
INTCON
PIR1
PIE1
PIR2
PIE2
OPTION
41
4.4.4. Atencin a la Interrupcin
1. Debe iniciar en el vector de interrupciones
2. Guardar todos los registros que se puedan modificar en
la subrutina de atencin a la interrupcin
3. Determinar la causa de la interrupcin. Bifurcar a la
subrutina correspondiente.
4. Tratar la interrupciones
5. Devolver los valores que tenan los registros antes de
producirse la interrupcin
6. Borrar todas las Flags de Interrupcin
7. RETFIE




4.5 Conversor A/D
43
4.5 Conversor A/D
44
45
4.5 Conversor A/D
V
a
l
o
r
e
s

A
n
a
l

g
i
c
o
s

V
REF+

V
REF-

2V
4.5.1 Registros de Trabajo del ADC
46
4.5.2 Pasos para realizar la ADC
47
ADCON1
ADCON0
Tiempo adquisicin
E
J
E
M
P
L
O

PIR1 (ADIF)
5.5 Mdulo USART
48
5.5.1 Registro SPBRG
49
5.5.2 Registro TXSTA

CSRC 1: modo sncrono maestro. 0: modo sncrono esclavo.

TX9 1: selecciona 9 bits de datos. 0: selecciona 8 bits de datos.

TXEN 1: activa la transmisin. 0: desactiva la transmisin

SYNC 1: modo asncrono 0: modo sncrono

BRGH 1: Alta velocidad (asncrono) 0: Baja velocidad (asncrono)

TRMT 1: TS vacio 0: TSR lleno

TX9D. Corresponde al noveno bit de los datos transmitidos.

50
5.5.3 Registro RXSTA

SPEN 1: se activa el puerto serial 0: desactiva puerto serial

RX9 1: Nueve bits de recepcin, 0: Ocho bits de recepcin

SREN. 1: recepcin simple (modo sncrono maestro)

CREN. 1: Activa recepcin continua . 0: Desactiva recepcin continua

FERR 1: Se produjo error de framing 0: No se produjo error de framing

OERR 1: Error por desbordamiento 0: No se produjo este error

Bit RX9D Corresponde al noveno bit de recepcin




51
5.5.4 Trasmisin Asncrona
1. Configurar RC6/TX/CK salida y RC7/RX/DT entrada
2. Colocar 1 en el bit SPEN del registro RCSTA y 0 en el bit
SYNC del registro TXSTA.
3. Si se desea que se genere una interrupcin por trasmisin
asncrona se debe hacer igual a uno el bit TXIE del registro
PIE1.
4. Seleccione el tamao de los datos en el bit TX9 del registro
TXSTA.
5. Cargar el valor adecuado en el registro SPBRG y seleccionar alta
o baja velocidad con el bit BRGH del registro TXSTA
6. Activar la trasmisin colocando un uno en el bit TXEN.
7. Si se ha seleccionado el noveno bit debe cargarse su valor en el
bit TX9D del registro TXTSA
8. Iniciar la trasmisin cargando los datos en el registro TXREG
52
5.5.5 Recepcin Asncrona
1. Iniciar el registro SPBRG segn la velocidad de baudios seleccionada.
Poner el bit BRG del registro TXSTA en cero baja velocidad en uno
para alta velocidad.
2. Activar el puerto asncrono serial colocando un uno en el bit SPEN del
registro RCSTA y un cero en el bit SYNC del registro TXSTA.
3. Si se desea que se genere interrupcin por recepcin asncrona se debe
hacer igual a uno el bit RCIE del registro PIE1.
4. Seleccione el tamao de los datos utilizando el bit RX9 del registro
RCSTA.
5. Se da permiso a la recepcin poniendo en 1 el bit CREN del registro
RCSTA.
6. En cuanto se complete la recepcin la bandera RCIF del registro PIR1
ser puesta en uno y se producir una interrupcin si el bit RCIE del
registro PIE1 fue puesto en uno.
7. Se obtienen los ocho bits recibidos leyendo el contenido del registro
RCREG. El noveno bit puede obtenerse leyendo el contenido del bit
RX9D del registro RCSTA.

53
Registro ADCON0
AD n Adquisici
T T 12
s T
AD
m 6 , 1
54
R
e
g
i
s
t
r
o

I
N
T
C
O
N

55
R
e
g
i
s
t
r
o

P
I
R
1

56
R
e
g
i
s
t
r
o

P
I
R
1

57
R
e
g
i
s
t
r
o

P
I
R
2

1 = Se ha producido colisin del Bus SSP (IC2 en modo Maestro)
0 = No se ha producido colisin
58
R
e
g
i
s
t
r
o

P
I
E
1

59
Registro PIE2
60
Registro OPTION
61
62
63
Registros TRISX
RX7 RX6 RX5 RX4 RX3 RX2 RX1 RX0
TRISX
1 0
RX7
RX6
RX5
RX4
RX3
RX2
RX1
RX0
Para configurar un Pin como
entrada (in) se debe colocar
1 en el bit que lo representa
en el TRISX respectivo.
Si se desea una salida (out):
colocamos 0 en el bit
respectivo del registro
TRISX.
64
Registros PORTX
RX7 RX6 RX5 RX4 RX3 RX2 RX1 RX0
0 1 0 0 0 1 0 0
PORTX
RX7
RX6
RX5
RX4
RX3
RX2
RX1
RX0
GND
GND
GND
GND
GND
GND
+5V
+5V
Si un puerto est configurado como entrada, el estado
de sus pines, puede verse en el registro PORT
correspondiente:
65
Ejemplo 5.3.1
Display 7 segmentos
TABLA ADDWF PCL,F
RETLW b'00111111'
RETLW b'00000110'
RETLW b'01011011'
RETLW b'01001111'
RETLW b'01100110'
RETLW b'01101101'
RETLW b'01111101'
RETLW b'00000111'
RETLW b'01111111'
RETLW b'01101111'
Ejemplo 5.3.2
Ejemplo 5.4.1

También podría gustarte