SlideShare una empresa de Scribd logo
E
l bus I2
C es un bus serie, for-
mado por dos hilos (SDA y
SCL) mas la línea de masa, que
puede conectarse varios dispo-
sitivos mediante un hardware
tan sencillo como el que se muestra en
la figura 1. Aunque los buses serie no
tienen la capacidad de los buses para-
lelo, requieren menos cableado y me-
nos terminales de conexión.
La línea SDA (Sereial Data) es la
línea para la transferencia de datos se-
rie, mientras que la línea SCL (Serial
Clock) es la línea de reloj que se utili-
za para la sincronización de datos. Es-
tas líneas son de drenador o de colec-
tor abierto y deben conectarse a posi-
tivo de la alimentación a través de una
resistencia externa, formando una es-
tructura deAND cableada (como pue-
de verse en la figura 2) de tal manera
que dependiendo del transistor de sa-
lida de cada dispositivo pueden ocu-
rrir alguno de los siguientes casos:
q Que el transistor esté saturado, lo que
provocará un nivel bajo en la línea
correspondiente, independientemente
del estado de los otros transistores.
Indicando en este caso que el bus es-
tá ocupado.
q Que el transistor esté en corte, por lo
tanto está en estado de alta impe-
dancia, es decir, el estado de la línea
depende de los otros transistores. En
CURSO DE
MICROCONTROLADORES
PIC16F87X (...y XI)
CURSO DE
MICROCONTROLADORES
PIC16F87X (...y XI)
Fernando Remiro Domínguez
Profesor de Sistemas Electrónicos
IES. Juan de la Cierva
www.terra.es/personal/fremiro
MICROCONTROLADORES
50RESISTOR
En el número
anterior prometiamos que
conectaríamos algún
dispositivo I2
C a los
PIC16F87X, pero antes de
empezar queremos recordar
brevemente en que consiste
el bus serie I2
C (IIC, Inter
Integrated Circuit Bus).
Figura 1.- Configuración típica del bus I2C
50-64 MICROCONTROLADORES2 26/4/04 10:50 Página 50
MICROCONTROLADORES
51RESISTOR
estas condiciones la línea corres-
pondiente estará a nivel alto a través
de la resistencia de pull-up.
Se pueden transferir datos por el
bus a una velocidad máxima de 100
Kbits/seg en el modo estándar (Stan-
dard Mode), 400 Kbits en el modo rá-
pido (Flast Mode) y a 3,4Mb/s en el
caso de alta velocidad (High-Speed
Mode). El número de dispositivos co-
nectados al bus viene limitado por la
capacidad máxima admitida en el bus,
que es de 400 pF. El valor de Rp de-
pende de la tensión de alimentación y
de la capacidad del bus y del número
de periféricos conectados, valores típi-
cos están entre 4K7 y 2K2.
Los dispositivos conectados al bus
I2
C pueden ser tanto Maestros como
Esclavos. Debemos de tener en cuenta,
que un Maestro ( Master )es un circui-
to integrado que determina la tempo-
rización y la dirección de la transfe-
rencia de datos. Este circuito integra-
do es el único que aplica los pulsos de
reloj a la línea SCL. Los maestros sue-
len ser microcontroladores.
Cuando se conectan varios
dispositivos maestros a un úni-
co bus I2
C la configuración re-
alizada se denomina multi-
maestro. Es el dispositivo que
inicia la transferencia, genera
la señal de reloj y finaliza la
transferencia. Mientras que un
Esclavo ( Slave ) es cualquier
circuito integrado conectado
al bus I2
C que no es capaz de
generar pulsos de reloj. Los
circuitos integrados esclavos reciben
señales de comandos y de reloj proce-
dentes del maestro.
TRANFERENCIA DE UN BIT
POR LA LÍNEA SDA
Los datos en la línea SDA deben
ser estables durante el periodo ALTO
de reloj. La línea de datos SDA sólo
puede cambiar cuando la señal de re-
loj en la línea SCL se encuentre en es-
tado bajo tal y como se muestra en la fi-
gura 3.
CONDICIONES DE START
Y STOP
La condición de START es una
transición de un nivel alto a un nivel
bajo de la línea SDA mientras la línea
SCL esta en a nivel alto.
Una transición de un nivel bajo a
un nivel alto de la línea SDA mientras
la línea SCL está a nivel alto, define
una condición de STOP.
Las condiciones de START y STOP
siempre las genera el Master. El bus se
considera ocupado después de la con-
Figura 2.- Etapa de salida de los dispositivos I2
C
Figura 3.- Transferencia de un bit por el bus I2
C
Figura 4.- Condiciones de START y de STOP
50-64 MICROCONTROLADORES2 26/4/04 10:50 Página 51
MICROCONTROLADORES
52RESISTOR
dición de START y se considera que
esta libre de nuevo un tiempo después
de una condición de STOP
TRANSFERENCIA DE DATOS
Cada dato que se quiere transmitir
por la línea SDA debe tener 8 bits y la
transmisión comienza empezando por
el bit más significativo (MSB). El nu-
mero de octetos implicados en cada
transferencia es indefinido. Cada oc-
teto ha de ir seguido por un bit de re-
conocimiento ACK (acknowledge-
ment) en el noveno pulso de reloj. El
receptor ejecuta éste reconocimiento
poniendo la señal SDA a nivel bajo, tal
y como se muestra en la figura 5.
Si un dispositivo receptor no puede
recibir otro octeto por encontrarse re-
alizando alguna otra función, como,
por ejemplo, sirviendo a una interrup-
ción, puede mantener a nivel bajo la
línea de reloj SCL para hacer que el
transmisor pase a un estado de espera.
La transferencia de datos conti-
nuará cuando el receptor esté prepara-
do para recibir otro octeto de datos y
deje libre la línea de reloj SCL.
Cuando un esclavo receptor no re-
conoce su propia dirección de escla-
vo, la línea de datos queda a nivel alto.
Entonces el maestro genera una con-
dición de STOP para cortar la trans-
ferencia.
Si un esclavo receptor reconoce co-
mo suya la dirección del esclavo, pero
cierto tiempo después no puede reci-
bir mas octetos de datos, el esclavo no
genera el bit deACK del ultimo octeto,
quedando la línea SDA a nivel alto, en-
tonces el maestro genera una condi-
ción de STOP para cortar la transfe-
rencia.
En el caso de un maestro implicado
en una transferencia, éste debe seña-
lar el final de los datos al esclavo trans-
misor, no generando el bit deACK del
último octeto que ha recibido del es-
clavo. El esclavo transmisor debe dejar
libre la línea de datos para permitir que
el maestro genere la condición de
STOP, tal y como puede verse en la fi-
gura 6.
FORMATOS
Las transferencias de datos siguen
el formato mostrado en la figura 7; des-
pués de la condición de START, se en-
vía la dirección de un esclavo. Esta di-
rección tiene 7 bits, el octavo bit es un
bit de dirección de datos (R/W), un "0"
indica una transmisión (ESCRITU-
RA), un "l" indica petición de datos
(LECTURA). Una transferencia de da-
tos siempre termina con una condición
de STOP generada por la unidad prin-
cipal. No obstante, si un maestro aún
desea comunicarse con el bus, puede
generar otra condición de START y di-
reccionar a otro esclavo sin generar pri-
mero una condición de STOP. En una
transferencia de este tipo son posibles,
Figura 5.- Transferencia de datos por el bus I2
C
Figura 6.- Reconocimiento de un octeto en el bus I2
C
50-64 MICROCONTROLADORES2 26/4/04 10:50 Página 52
MICROCONTROLADORES
53RESISTOR
por tanto, varias combinaciones de for-
matos de lectura/escritura.
Posibles formatos de transferencia
de datos son:
1. El maestro transmisor transmite al
esclavo receptor. Si el bit 8 es de es-
critura, R/W=0, la secuencia será la
de la figura 8.
2. El maestro-receptor lee de un
esclavo-emisor.
En el momento de1 primer reco-
nocimiento, el maestro transmisor pa-
sa a ser maestro receptor y el esclavo
receptor pasa a ser esclavo transmisor.
Este primerACK siempre lo genera el
esclavo. Los siguientesACK y la con-
dición de STOP la genera el
maestro.
3. Formatos combinados. Durante un
cambio de sentido dentro de una
transferencia, la condición de
START y la dirección de1 esclavo
se repiten, pero el bit R/W se in-
vierte.
Seguidamente describiremos un
sencillo periférico I2
C, como es el PCF
8574A, que es un periférico de entra-
das/salidas digitales.
DESCRIPCIÓN del PCF8574A
Se trata de un dispositivo diseñan-
do para interface con el bus I2
C que
proporciona una ampliación de 8 líne-
as de E/S digitales y que se puede em-
plear en cualquier sistema microcon-
trolador dotado del hardware y/o soft-
ware necesario para el protocolo I2
C.
En la tabla 1 se muestra su patillaje y la
descripción de cada uno de los pines.
El PCF 8574A es un dispositivo
CMOS de bajo consumo que incluye
salidas "latcheadas" con amplificado-
res de alta corriente para activar direc-
tamente cargas tipo LED. Su diagra-
ma de bloques es el que se muestra en
la figura 11.
Dispone de la línea #INT de inte-
rrupciones que puede conectarse a la
lógica de interrupciones del micro-
controlador. Que será llamando a tra-
vés de la interrupción con esta línea,
el I/O remoto puede informar al mi-
crocontrolador si hay datos de entra-
da en los puertos, sin tener que comu-
nicarse por el bus I2
C. Es decir, puede
trabajar como un simple dispositivo
esclavo. Los PCF8574 y versiones
PCF8574A sólo difieren en su direc-
Figura 7.- Transferencia completa de datos
Figura 9.- El maestro lee datos del esclavo
Figura 10.- Formato combinado
Figura 8.- El Maestro escribe datos en el esclavo
50-64 MICROCONTROLADORES2 26/4/04 10:50 Página 53
ción del esclavo, tal y como se muestra
en la Figura 12.
La parte fija de la dirección es la
combinación binaria 0111 para el mo-
delo PCF8574A y 0100 para el
PCF8574, la parte programable la de-
termina el nivel lógico de las señales
A0-A2 que las define el usuario a vo-
luntad.
Cada línea de la puerta de E/S pue-
de usarse como entrada o salida inde-
pendientemente. En modo de escritura
se transfieren desde el MASTER has-
ta la puerta es como se muestra en la fi-
gura 14, por lo tanto la secuencia
de transferencia de datos es la
siguiente:
q En primer lugar el Master envía la
condición de START.
q Seguidamente envía la dirección del
PCF8574 en modo escritura que
puesto en binario será
0100(A2)(A1)(A0)0, donde
(A2),(A1) y (A0) es el valor lógico
que tengan las patillas del mismo
nombre del dispositivo.
q En tercer lugar se transmiten los da-
tos a escribir en el puerto del
PCF8574.
q Finalmente el Master manda una se-
ñal de STOP para finalizar la trans-
ferencia.
Símbolo PIN
DIO16; SO16 SSOP20 Descripción
A0 1 6 Entrada de direccionamiento 0
A1 2 7 Entrada de direccionamiento 1
A2 3 9 Entrada de direccionamiento 2
P0 4 10 Línea I/O 0 bidirecional
P1 5 11 Línea I/O 1 bidirecional
P2 6 12 Línea I/O 2 bidirecional
P3 7 14 Línea I/O 3 bidirecional
Vss 8 15 Masa de alimentación
P4 9 16 Línea I/O 4 bidirecional
P5 10 17 Línea I/O 5 bidirecional
P6 11 19 Línea I/O 6 bidirecional
P7 12 20 Línea I/O 7 bidirecional
#INT 13 1 Salida de interrupción (activa a nivel bajo)
SCL 14 2 Entrada de reloj del bus I2C
SDA 15 4 Entrada/Salida de datos del bus I2C
VDD 16 5 Positivo tensión de alimentación
n.c -- 3 No conectada
n.c -- 8 No conectada
n.c -- 13 No conectada
n.c -- 18 No conectada
Tabla 1.- Patillaje del PCF8574
MICROCONTROLADORES
54RESISTOR
Figura 11.-
Diagrama de
bloques del
PCF8574
50-64 MICROCONTROLADORES2 26/4/04 10:50 Página 54
MICROCONTROLADORES
55RESISTOR
Podemos comprobar lo dicho has-
ta el momento realizando el circuito
de la figura 14, en el que se ha conec-
tado el PIC16F876 a un PCF8574 a
través de las líneas RC3 (SCL) y RC4
(SDA). Para comprobar el efecto de la
escritura de datos sobre el puerto se
han conectado unos diodos LED
(D0:D7). Si cargamos en el microcon-
trolador el programa I2
C_8574_1.asm,
este realiza la lectura del valor que pro-
porcionan los interruptores conecta-
dos al puertoA y pone el valor corres-
pondiente en los diodos LED’s D0:D5,
Los diodos D6 y D7 se han conectado
en el circuito de aplicación para poder
comprobar el funcionamiento de otros
programas, como por ejemplo un pén-
dulo de diodos LED que pueda realizar
el lector. El programa está preparado
para aquellos lectores que utilizan el
Figura 12.- Dirección de esclavo para el PCF857 y PCF857A
Figura 13.- Secuencia de escritura desde el Master al PCF8574
Figura 14.- Circuito práctico de ampliación
de un puerto de salida con un PCF8574 a
través del BUS I2C
50-64 MICROCONTROLADORES2 26/4/04 10:50 Página 55
MICROCONTROLADORES
56RESISTOR
;****************************************************************************
;I2C_8574_1.asm
;Este programa configura el módulo MSSP en modo I2C Master y se utiliza en modo Transmisión
; El programa lee el contenido de PORTA RA0:RA5 y lo envía a las líneas correspondientes del
;puerto del periférico I2C PCF8574.
List p=16F876;Tipo de procesador
include "P16F876.INC" ;Definiciones de registros internos
; __config _XT_OSC & _CP_OFF & _WRT_ENABLE_ON & _BODEN_ON & _LVP_OFF & _WDT_ON
; org 0x00 ;Vector de Reset
; goto INICIO
org 0x05 ;Salva el vector de interrupción
goto INICIO
;****************************************************************************
;I2C_EmviaStart: Envía la condición de Start
I2C_EmviaStart
bcf PIR1,SSPIF
bsf STATUS,RP0 ;Selecciona página 1
bsf SSPCON2,SEN ;Activa secuencia de inicio
bcf STATUS,RP0 ;Selecciona página 0
Espera_Start btfss PIR1,SSPIF ;¿Fin de secuencia de transmisión?
goto Espera_Start ;Espera fin de transmisión
return
;****************************************************************************
;Send_Byte: Transmite el byte del W vía I2C. La rutina finaliza cuando se recibe /ACK
I2C_EnviaByte
bcf PIR1,SSPIF
movwf SSPBUF ;Byte a transmitir pasa al buffer de salida
Espera_Byte
btfss PIR1,SSPIF ;¿Se ha recibido el bit /ACK?
goto Espera_Byte ;No esperar
return
;****************************************************************************
;Programa principal
INICIO clrf PORTC
bsf STATUS,RP0 ;Selecciona banco 1
movlw b'00000110'
movwf ADCON1 ;PortA E/S Digital
movlw b'11111111'
movwf TRISA ;configura PortA como entrada
movwf TRISC ;RC3/SCL y RC4/SDA entradas
movlw b'10000000'
movwf SSPSTAT ;Velocidad estándar con niveles I2C
movlw .9
movwf SSPADD ;Velocidad del bus I2C 100KHz
bcf STATUS,RP0 ;Selecciona banco 0
;Configuramos el módulo MSSP en el modo Master I2C
movlw b'00101000'
movwf SSPCON ;Módulo MSSP en On
call I2C_EmviaStart ;Envía condición de Start
movlw b'01110000'
call I2C_EnviaByte ;Envía la dirección del PCF8574
Bucle movf PORTA,W ;Caraga en W el valor del PORTA
andlw b'00111111' ;asegura RA7:RA6 como cero
call I2C_EnviaByte ;Envia Byte al PCF8574
goto Bucle
;****************************************************************************************
ORG 0x1F00
bcf PCLATH,4
bcf PCLATH,3 ;Selecciona la página 0
goto INICIO
end ;Fin del programa fuente
50-64 MICROCONTROLADORES2 26/4/04 10:50 Página 56
MICROCONTROLADORES
57RESISTOR
bootloader con el circuito que venimos
utilizando en este curso, o bien utili-
zando un programador con un software
como el IC-PROG , para lo cual habrá
que quitar los ";" de las líneas que es-
tán en azul y se pueden poner ";" en las
líneas que están marcadas de color
verde.
Los datos de entrada se transfieren
desde la puerta hasta el MASTER en
modo de lectura de acuerdo al crono-
grama de la figura 15.
Para comprobar su funcionamiento,
modificaremos el circuito de la figura
14, para conectar unos conmutadores a
las entradas de los diodos, tal y como
se muestra en la figura 16, si se mantie-
nen los diodos, aparecerá el problema
de que cuando se pone a nivel alto un
conmutador, el diodo se encenderá, pa-
ra evitar este efecto, se pueden poner
los diodos al revés, es decir el ánodo de
cada diodo a través de una resistencia
de 330µ conectado a positivo (Vcc) y a
la entrada del PCF8574 se conecta el
cátodo y la entrada del interruptor que
Figura 15.- Secuencia de lectura desde PCF8574 hacia el Master.
Figura 16.- Circuito práctico de ampliación de un puerto de entrada con un PCF8574 a través del BUS I2
C
Figura 17 .- Ejemplo de cómo conectar como
entrada salida los pines del PCF8574
50-64 MICROCONTROLADORES2 26/4/04 10:50 Página 57
MICROCONTROLADORES
58RESISTOR
;****************************************************************************************
;I2C_8574_2.asm
;Este programa configura el módulo MSSP en modo I2C Master y se utiliza en modo Recepción
; El programa lee el contenido de las líneas del PUERTO del PCF8574 del y lo envía a las
;líneas correspondientes del PORTB donde se visualiza su valore en los diodos LEDS que se
;le han conectado
;****************************************************************************************
List p=16F873 ;Tipo de procesador
include "P16F873.INC" ;Definiciones de registros internos
; __config _XT_OSC & _CP_OFF & _WRT_ENABLE_ON & _BODEN_ON & _LVP_OFF & _WDT_ON
;
; org 0x00 ;Vector de Reset
; goto INICIO
org 0x05 ;Salva el vector de interrupción
goto INICIO
;****************************************************************************************
;I2C_EmviaStart: Envía la condición de Start
I2C_EmviaStart bcf PIR1,SSPIF ;Restaura el flag del módulo MSSP
bsf STATUS,RP0 ;Selecciona página 1
bsf SSPCON2,SEN ;Activa secuencia de inicio
bcf STATUS,RP0
Espera_Start btfss PIR1,SSPIF ;¿Ha finalizado la secuencia de inicio ?
goto Espera_Start ;No, esperar fin de secuencia
return
;****************************************************************************************
;I2C_EnviaByte: Transmite el byte del W vía I2C. La rutina finaliza cuando se recibe /ACK
I2C_EnviaByte bcf PIR1,SSPIF ;Restaura el flag del módulo MSSP
movwf SSPBUF ;Byte a transmitir pasa al buffer de salida
Espera_Byte btfss PIR1,SSPIF ;¿se ha recibido el bit /ACK ?
goto Espera_Byte ;No, esperarACK
return
;****************************************************************************************
;I2C_LeeByte: Lee un byte procedente del dispositivo I2C seleccionado y lo deja en W
;Seguidamente se genera y transmite el bit /ACK
I2C_LeeByte bcf PIR1,SSPIF ;Restaura el flag del módulo MSSP
bsf STATUS,RP0 ;Selecciona página 1
bsf SSPCON2,RCEN ;Activa el modo receptor
bcf STATUS,RP0 ;Selecciona página 0
Espera_Lectura btfss PIR1,SSPIF ;¿Se han recibidos los 8 bits ?
goto Espera_Lectura ;No, esperar lectura
bcf PIR1,SSPIF ;Restaura el flag del módulo MSSP
bsf STATUS,RP0 ;Selecciona página 1
bcf SSPCON2,ACKDT ;Pone bitACK a "0"
bsf SSPCON2,ACKEN ;Aciva la secuencia de generación del bitACK
bcf STATUS,RP0 ;Selecciona página 0
Espera_ACK btfss PIR1,SSPIF ;¿ Se ha finalizado la SecuenciaACK?
goto Espera_ACK ;No, esperarACK
movf SSPBUF,W ;Lee el byte recibido
return
;****************************************************************************************
;Programa principal
INICIO clrf PORTB
clrf PORTC
bsf STATUS,RP0 ;Selecciona banco 1
movlw b'11111111'
movwf TRISC ;RC3/SCL y RC4/SDA entradas
clrf TRISB ;Puerta B salida
movlw b'10000000'
movwf SSPSTAT ;Velocidad estándar con niveles I2C
movlw .9
movwf SSPADD ;Velocidad del bus I2C 100KHz
bcf STATUS,RP0 ;Selecciona banco 0
;Módulo MSSP en el modo Master I2C
movlw b'00101000'
movwf SSPCON ;Módulo MSSP en On
call I2C_EmviaStart ;Envía condición de inicio
movlw b'01110001'
call I2C_EnviaByte ;Envía byte de dirección del PCF8574 (lectura)
Bucle call I2C_LeeByte ;Lee el dispositivo PCF8584
movwf PORTB ;Visualiza sobre los LEDs RB0-RB7
goto Bucle
;****************************************************************************************
ORG 0x1F00
bcf PCLATH,4
bcf PCLATH,3 ;Selecciona la página 0
goto INICIO
end ;Fin del programa fuente
50-64 MICROCONTROLADORES2 26/4/04 10:50 Página 58
pone un "0" o un "1", tal y como se
muestra en la figura 17, sobre este cir-
cuito se pueden ver perfectamente tam-
bién como varían las salidas, pero hay
que tener en cuenta que en este caso, el
LED se enciende cuando le llega un
"0" y se apaga cuando le llega un "1"
desde el puerto del PCF8574, es decir
las salidas estarán complementadas
desde el punto de vista de encendido
y apagado de los diodos.
DESCRIPCIÓN del SAA1064
Seguidamente veremos otro dis-
positivo I2
C como es el controlador de
displays SAA1064, se trata de un dis-
positivo especialmente diseñado para el
control de hasta 4 displays 7 segmentos
tipo LED con punto decimal, utilizan-
do el multiplexado de dos pares de dí-
gitos. Se trata lógicamente de un dis-
positivo I2
C que puede trabajar junto
con otros tres, ya que permite cuatro
posibles direcciones diferentes selec-
cionadas por hardware su diagrama de
bloques es el que se muestra en la fi-
gura 18 y sus características más sig-
nificativas son:
q Flag indicador del "Power On Reset"
(POR).
q 16 salidas con corriente de hasta 21
µA controladas por software.
q 2 salidas multiplexadas para contro-
lar segmentos de ánodo común
q Oscilador integrado.
q Bits de control para seleccionar vi-
sualización estática, dinámica, apa-
gado y de test.
En la figura 20 se muestra como se
debe direccionar el SAA1064 tanto
para escritura como para lectura, don-
deA1 yA0 son dos bits cuyo valor de-
pende de la tensión aplicada en el pin
ADR. Esta patilla se controla con ayu-
da de una tensión continua que, com-
parada con unos umbrales internos de
referencia, define, mediante un pe-
queño convertidorA/D interno, el valor
de los dos bits de direcciónA0 yAl tal
y coma se muestra en la tabla 3. Así
por ejemplo si ponemos a masa el pin
ADDR la dirección del SAA1064 será
b’01110000’ó 70h.
Por lo tanto, con este sistema se
pueden direccionar hasta cuatro
SAA1064 en el mismo bus, lo que su-
pone 16 displays de 7 segmentos co-
mo máximo.
EL BYTE DE ESTADO
Únicamente el bit de más peso de
este byte (Power On Reset) tiene sig-
nificado. Un "1" indica que hubo fallo
de alimentación desde la última vez
que se leyó. Tras la lectura de este by-
te, el bit vuelve a quedar a "0".
EL BYTE DE INSTRUCCIÓN
Mediante los tres bits de menos pe-
so de este byte (SC, SB y SA), se se-
lecciona a partir de que registro se van
a escribir secuencialmente los si-
guientes bytes (ver la tabla 4). Esta ca-
racterística permite una rápida inicia-
ción por parte del MASTER.
MICROCONTROLADORES
59RESISTOR
Figura 18.- Diagrama de bloques del controlador de display SAA1064
50-64 MICROCONTROLADORES2 26/4/04 10:50 Página 59
BITS DE CONTROL
Los bits de control se encuentran
dentro del byte de control. Se emplean
los 7 de menos peso y su significado es
el siguiente:
q C0=0 Modo estático. Visualización
continua sobre los dígitos 1 y 2. No
hay multiplexaci6n.
q C0=1 Modo dinámico. Se visualiza
de forma multiplexada sobre los dis-
plays 1+3 y 2+4.
q Cl =0 Los dígitos 1+3 se apagan.
q Cl =1 Los dígitos 1+3 no se apagan.
q C2=0 Los dígitos 2+4 se apagan.
q C2=1 Los dígitos 2+4 no se apagan.
q C3=0 Funcionamiento normal
q C3=1 Se activan todos los segmen-
tos. Función test.
q C4=1 Añade 3 mA a la corriente de
salida de los segmentos.
q C5=1 Añade 6 mA a la corriente de
salida de los segmentos.
q C6=1Añade 12 mA a la corriente de
salida de los segmentos.
NºPin Señal Descripción
1 ADR Línea de direccionamiento por hardware
2 CEXT Condensador externo (modo dinámico)
3-10 P8-P1 Salidas a segmentos de los dígitos 1 y 2
11 MX1 Activación de los dígitos 1 y 3
12 VEE Negativo de alimentación
13 VCC Positivo de alimentación
14 MX2 Activación de los dígitos 2 y 4
15-22 P9-P16 Salidas a segmentos de los dígitos 3 y 4
23 SDA Línea de datos del bus I2
C
24 SCL Línea de reloj del bus I2
C
Tabla 2.- Descripción de los pines del SAA1064
Figura 19.- Patillaje del SAA1064
Tabla 3.- Direccionamiento del SAA1064 en función de la tensión en el pin ADR
En la tabla 2 se muestra el patillaje del dispositivo y la descripción de cada una de sus
patillas.
Tensión en ADR A0 A1 Dirección de lectura Dirección de escritura
VEE 0 0 71h 70h
3/8 de VCC 0 1 73h 72h
5/8 de VCC 1 0 75h 74h
VCC 1 1 77h 76h
SC SB SA Registro
0 0 0 Control
0 0 1 Dígito 1
0 1 0 Dígito 2
0 1 1 Dígito 3
1 0 0 Dígito 4
1 0 1 Reservado
1 1 0 Reservado
1 1 1 Reservado
MICROCONTROLADORES
60RESISTOR
Figura 20.- Direccionamiento
del SAA1064 para lectura y
escritura
Tabla 4.- Registros internos del
SAA1064
50-64 MICROCONTROLADORES2 26/4/04 10:50 Página 60
Este libro introduce al lector en la reali-
zación de proyectos con el popular micro-
controlador PIC16F84A.
q Los contenidos se presentan de manera
asequible y entretenida sin perder el
necesario nivel técnico.
q El lector dispone de todo lo necesario
para realizar los proyectos de forma
cómoda ya que no requiere de grandes
medios materiales y todo está descrito
en el libro o en el CD-ROM que acom-
paña la obra.
q La obra es eminentemente práctica:
contiene más de 160 ejercicios y pro-
yectos resueltos completamente, siendo
muchos de ellos proyectos clásicos,
como termómetros, relojes, calenda-
rios, cerraduras electrónicas, control de
displays, termostatos, temporizadores,
alarmas, sirenas, comunicación con el
ordenador, juegos, control de motores,
microrobots, etc.
q El software utilizado es de libre distri-
bución y los circuitos emplean compo-
nentes que pueden adquirirse fácilmen-
te en cualquier tienda de componentes
electrónicos. El gasto a realizar para
realizar las prácticas planteadas es
mínimo.
Este libro posee su propia página Web
en www.pic16f84a.com que pretende ser
un lugar de encuentro entre todos aque-
llos que utilicen el libro, donde podrán
intercambiar ideas, realizar consultas,
descargar actualizaciones de los proyec-
tos y también descargar apuntes de
conocimientos necesarios.
MMIICCRROOCCOONNTTRROOLLAADDOORR
PPIICC1166FF8844
Desarrollo de proyectos"
Índice Extractado: Microcontrolador PIC16F84.Periféricos bási-
cos. Grabación de microcontroladores PIC. Organización de la
memoria. Arquitectura Interna. Ensamblador. MPLAB.
Programación elemental. Saltos. Subrutinas. Manejo de tablas.
Subrutinas de retardo. LCD. EEPROM de datos. TIMER0. Otros
recursos. Interrupciones de entradas. Interrupción por TIMER0.
Teclado matricial. Comunicación con el ordenador. Bus I2C.
24LC256, memoria EEPROM en bus I2C. DS1624, Termómetro en
BUS I2C. DS1307, reloj calendario en bus I2C.SAA1064, controla-
dor de display. PCF8574, expansor de bus I2C. PCF8591, ADC y
DAC en bus I2C. Bus de una línea. Motores de corriente continua.
Motores paso a paso. Servomotores de radiocontrol. Sensores
para microbótica. Construcción de un microrobot.
50-64 MICROCONTROLADORES2 26/4/04 10:50 Página 61
MICROCONTROLADORES
62RESISTOR
LOS BYTES DE DATOS
Un segmento queda activado si el
correspondiente bit esta a "1". Los bits
de datos D17 al Dl0 corresponden al
dígito 1, D27:D20 al dígito 2, D37:D30
al dígito 3 y D47:D40 al dígito 4.
El bit de mas peso MSB de estos
datos se corresponden con las salidas
P8 y P16, los de menos peso LSB con
las salidas Pl y P9.
POWER ON RESET
Esta señal se genera internamente y
pone todos los bits a "0", resultando
una visualización en blanco para los 4
dígitos. Únicamente se activa el flag
PR del byte de estado.
SALIDAS MULTIPLEXADAS
Las líneas de salida MXl y MX2
se activan alternativamente en el modo
dinámico con una frecuencia que se
obtiene desde el oscilador interno. Y
como se puede ver en la figura 21, se
pueden colocar cuatro displays. Para
la selección de los displays seleccio-
nados en cada momento se necesita
conectar dos transistores que trabajan
en corte o saturación.
En el modo estático únicamente
se activa MXl con lo que solo se vi-
sualiza sobre 2 dígitos, como puede
verse en la figura 22.
Seguidamente vamos a probar el
funcionamiento del controlador de dis-
plays en modo dinámico conectando
a las líneas SDA y SCL del SAA1046
las correspondientes del PIC16F876
(RC4/SDA y RC3/SCL), además co-
mo solo vamos a utilizar un controlador
con cuatro displays como el de la fi-
gura 21, pondremos la patilla ADR a
masa, por lo que la dirección del dis-
positivo será b’01110000’. El progra-
ma que vamos a cargar
(I2C_SAA1064_2.asm) en el micro-
controlador va a presentar el mensaje
"HOLA" en los displays, para ello se-
guiremos el procedimiento de escritu-
ra que se indica en la figura 20, es de-
cir seguiremos la siguiente secuencia:
q El microcontrolador que trabaja co-
mo Master envía la condición de
START
q Seguidamente se manda el byte de
direccionamiento que en nuestro ca-
so es b’01110000’.
q Después se manda el byte de ins-
trucción donde los bits SC, SB y SA
apuntan a uno de los ocho registros
internos en el cual se escribirá el by-
te de datos que le sigue inmediata-
mente detrás.
q Si el registro direccionado es el de
control a continuación debe enviarse
la palabra de control. Después se
transmite la información que
aparecerá en cada uno de los
displays.
q Finalmente el Master mandará una
condición de STOP.
Figura 21.- Conexión de cuatro displays al SAA1064 en modo dinámico
Figura 22.- Conexión de dos displays al SAA1064 en modo estático
50-64 MICROCONTROLADORES2 26/4/04 10:50 Página 62
MICROCONTROLADORES
63RESISTOR
;*************************************************************************************
; Programa I2C_SAA1064_2.asm Fecha : 20-Abril-2004
;El dispositivo I2C SAA1064. Controlador de displays de 7 segmentos
;Se trata de visualizar sobre los 4 displays 7 segmentos conectados al SAA1064.
;el mensaje "HOLA"
; Revisión : 0.0 Programa para PIC16F87X
;Velocidad del Reloj: 4 MHz Reloj Instrucción: 1 MHz = 1 uS
; Perro Guardián :seshabilitado Tipo de Reloj : XT
; Protección del código: OFF
;**************************************************************************************
List p=16F876 ;Tipo de procesador
include "P16F876.INC" ;Definiciones de registros internos
; __config _XT_OSC & _CP_OFF & _WRT_ENABLE_ON & _BODEN_ON & _LVP_OFF & _WDT_ON
; org 0x00 ;Vector de Reset
; goto Inicio
org 0x05 ;Salva el vector de interrupción
goto Inicio
;****************************************************************************
;I2C_EmviaStart: Envía la condición de Start
I2C_EmviaStart
bcf PIR1,SSPIF
bsf STATUS,RP0 ;Selecciona página 1
bsf SSPCON2,SEN ;Activa secuencia de inicio
bcf STATUS,RP0 ;Selecciona página 0
Espera_Start btfss PIR1,SSPIF ;¿Fin de secuencia de tranmisión?
goto Espera_Start ;Espera fin de transmision
return
;****************************************************************************
;Send_Byte: Transmite el byte del W vía I2C. La rutina finaliza cuando se recibe /ACK
I2C_EnviaByte
bcf PIR1,SSPIF
movwf SSPBUF ;Byte a transmitir pasa al buffer de salida
Espera_Byte btfss PIR1,SSPIF ;¿Se ha recibido el bit /ACK?
goto Espera_Byte ;No, esperar
return
;****************************************************************************
;Send_Stop: Envía la secuencia de stop
I2C_EnviaStop bcf PIR1,SSPIF ;Restaura el flag del módulo MSSP
bsf STATUS,RP0 ;Seleciona página 1
bsf SSPCON2,PEN ;Activa secuencia de stop
bcf STATUS,RP0
Espera_Stop btfss PIR1,SSPIF ;¿Fin de secuencia de Stop ?
goto Espera_Stop ;Esperar Stop
return
;*******************************************************************************************
;Read_Byte: Lee un byte procedente del dispositivo I2C selecionado y lo devuelve en W
;Seguidamente se genera y transmite el bit /ACK
I2C_LeeByte bcf PIR1,SSPIF ;Restaura el flag del módulo MSSP
bsf STATUS,RP0 ;Selecciona página 1
bsf SSPCON2,RCEN ;Activa el modo receptor
bcf STATUS,RP0 ;Selecciona página 0
50-64 MICROCONTROLADORES2 26/4/04 10:50 Página 63
MICROCONTROLADORES
64RESISTOR
Read_Waitbtfss PIR1,SSPIF ;Recibidos los 8 bits ??
goto Read_Wait;No, esperar
bcf PIR1,SSPIF ;Restaura el flag del módulo MSSP
bsf STATUS,RP0 ;Selecciona página 1
bcf SSPCON2,ACKDT ;Pone bitACK a "0"
bsf SSPCON2,ACKEN ;Aciva la secuencia de generación del bitACK
bcf STATUS,RP0 ;Selecciona página 0
Espera_ACK btfss PIR1,SSPIF ;¿Ha finalizado la decuenciaACK?
goto Espera_ACK ;No, esperarACK
movf SSPBUF,W ;Lee el byte recibido
return
;*******************************************************************************************
;Programa principal
Inicio clrf PORTC
bsf STATUS,RP0 ;Selecciona banco 1
movlw b'11111111'
movwf TRISC ;RC3/SCL y RC4/SDA entradas
movlw b'11001111'
movwf OPTION_REG ;Preescaler de 128 asociado al WDT
movlw b'10000000'
movwf SSPSTAT ;Velocidad estándar con niveles I2C
movlw .9
movwf SSPADD ;Velocidad del bus I2C 100KHz
bcf STATUS,RP0 ;Selecciona banco 0
;Módulo MSSP en el modo Master I2C
movlw b'00101000'
movwf SSPCON ;Módulo MSSP en On
Visualiza call I2C_EmviaStart ;Envía secuencia de inicio
movlw b'01110110' ;
call I2C_EnviaByte ;Dirección del dispositivo SAA1064 en la PLUS
movlw .0 ;
call I2C_EnviaByte ;Envía byte de instrucción
movlw b'01000111' ;
call I2C_EnviaByte ;Envía byte de control
movlw b'01110110' ;segmentos correspondientes a la "H"
call I2C_EnviaByte ;Visualiza sobre el dígito D1
movlw b'00111111' ;segmentos correspondientes a la "O"
call I2C_EnviaByte ;Visualiza sobre el dígito D2
movlw b'00111000' ;segmentos correspondientes a la "L"
call I2C_EnviaByte ;Visualiza sobre el dígito D3
movlw b'01110111' ;segmentos correspondientes a la "A"
call I2C_EnviaByte ;Visualiza sobre el dígito D4
call I2C_EnviaStop ;Envía secuencia de stop
goto $
;*************************************************************************************
ORG 0x1F00
bcf PCLATH,4
bcf PCLATH,3 ;Selecciona la página 0
goto Inicio
;*************************************************************************************
end ;Fin del programa fuente
50-64 MICROCONTROLADORES2 26/4/04 10:50 Página 64

Más contenido relacionado

La actualidad más candente

Usart
UsartUsart
Curso de microcontroladores capitulo 05
Curso de microcontroladores capitulo 05Curso de microcontroladores capitulo 05
Curso de microcontroladores capitulo 05
Hamiltonn Casallas
 
Curso de microcontroladores capitulo 01
Curso de microcontroladores capitulo 01Curso de microcontroladores capitulo 01
Curso de microcontroladores capitulo 01
Hamiltonn Casallas
 
Comunicación serial PIC16F877A
Comunicación serial PIC16F877AComunicación serial PIC16F877A
Comunicación serial PIC16F877A
Liliana Rodríguez
 
Txusart
TxusartTxusart
Uart
UartUart
I2C PIC18F4550
I2C PIC18F4550I2C PIC18F4550
MICROCONTROLADORES II EN C. TEMA 5
MICROCONTROLADORES II EN C. TEMA 5MICROCONTROLADORES II EN C. TEMA 5
MICROCONTROLADORES II EN C. TEMA 5
Luis Zurita
 
Módulo EUSART del PIC16F887
Módulo EUSART del PIC16F887Módulo EUSART del PIC16F887
Módulo EUSART del PIC16F887
Fernando Aparicio Urbano Molano
 
Sistemas operativos
Sistemas operativosSistemas operativos
Sistemas operativos
jbersosa
 
Transferencia de datos entre registros
Transferencia de datos entre registrosTransferencia de datos entre registros
Transferencia de datos entre registros
Daniel Zuluaga
 
Timers 2
Timers 2Timers 2
Timers 2
georgemanson69
 
Proyecto2
Proyecto2Proyecto2
Proyecto2
georgemanson69
 
Pic 16 F877XA A/D
Pic 16 F877XA A/DPic 16 F877XA A/D
Pic 16 F877XA A/D
Universidad de Tarapacá
 
Proyectos con el pic16 f84 cekit
Proyectos con el pic16 f84 cekitProyectos con el pic16 f84 cekit
Proyectos con el pic16 f84 cekit
Enrique Trascastro
 
PROYECTOS CON PIC 16F84
PROYECTOS CON PIC 16F84PROYECTOS CON PIC 16F84
PROYECTOS CON PIC 16F84
Juan Navarrete Guzman
 
Programación PIC16F84A
Programación PIC16F84AProgramación PIC16F84A
Programación PIC16F84A
Percy Julio Chambi Pacco
 
Registro universal
Registro universalRegistro universal
Registro universal
Anelly Estrella
 
Compare capture pwm mode 5
Compare capture pwm mode 5Compare capture pwm mode 5
Compare capture pwm mode 5
georgemanson69
 
Tema5 ce-secuenciales
Tema5 ce-secuencialesTema5 ce-secuenciales
Tema5 ce-secuenciales
Grisel davila chávez
 

La actualidad más candente (20)

Usart
UsartUsart
Usart
 
Curso de microcontroladores capitulo 05
Curso de microcontroladores capitulo 05Curso de microcontroladores capitulo 05
Curso de microcontroladores capitulo 05
 
Curso de microcontroladores capitulo 01
Curso de microcontroladores capitulo 01Curso de microcontroladores capitulo 01
Curso de microcontroladores capitulo 01
 
Comunicación serial PIC16F877A
Comunicación serial PIC16F877AComunicación serial PIC16F877A
Comunicación serial PIC16F877A
 
Txusart
TxusartTxusart
Txusart
 
Uart
UartUart
Uart
 
I2C PIC18F4550
I2C PIC18F4550I2C PIC18F4550
I2C PIC18F4550
 
MICROCONTROLADORES II EN C. TEMA 5
MICROCONTROLADORES II EN C. TEMA 5MICROCONTROLADORES II EN C. TEMA 5
MICROCONTROLADORES II EN C. TEMA 5
 
Módulo EUSART del PIC16F887
Módulo EUSART del PIC16F887Módulo EUSART del PIC16F887
Módulo EUSART del PIC16F887
 
Sistemas operativos
Sistemas operativosSistemas operativos
Sistemas operativos
 
Transferencia de datos entre registros
Transferencia de datos entre registrosTransferencia de datos entre registros
Transferencia de datos entre registros
 
Timers 2
Timers 2Timers 2
Timers 2
 
Proyecto2
Proyecto2Proyecto2
Proyecto2
 
Pic 16 F877XA A/D
Pic 16 F877XA A/DPic 16 F877XA A/D
Pic 16 F877XA A/D
 
Proyectos con el pic16 f84 cekit
Proyectos con el pic16 f84 cekitProyectos con el pic16 f84 cekit
Proyectos con el pic16 f84 cekit
 
PROYECTOS CON PIC 16F84
PROYECTOS CON PIC 16F84PROYECTOS CON PIC 16F84
PROYECTOS CON PIC 16F84
 
Programación PIC16F84A
Programación PIC16F84AProgramación PIC16F84A
Programación PIC16F84A
 
Registro universal
Registro universalRegistro universal
Registro universal
 
Compare capture pwm mode 5
Compare capture pwm mode 5Compare capture pwm mode 5
Compare capture pwm mode 5
 
Tema5 ce-secuenciales
Tema5 ce-secuencialesTema5 ce-secuenciales
Tema5 ce-secuenciales
 

Destacado

El transformador eléctrico.
El transformador eléctrico.El transformador eléctrico.
El transformador eléctrico.
Hamiltonn Casallas
 
Leyes de Kirchhoff
Leyes de KirchhoffLeyes de Kirchhoff
Leyes de Kirchhoff
Hamiltonn Casallas
 
Diseño de un amplificador de RF.
Diseño de un amplificador de RF.Diseño de un amplificador de RF.
Diseño de un amplificador de RF.
Hamiltonn Casallas
 
Conceptos básicos de electricidad
Conceptos básicos de electricidadConceptos básicos de electricidad
Conceptos básicos de electricidad
Hamiltonn Casallas
 
Curso de microcontroladores capitulo 08
Curso de microcontroladores capitulo 08Curso de microcontroladores capitulo 08
Curso de microcontroladores capitulo 08
Hamiltonn Casallas
 
Reparacion de radios AM/FM
Reparacion de radios AM/FMReparacion de radios AM/FM
Reparacion de radios AM/FM
Hamiltonn Casallas
 
El resistor
El resistorEl resistor
El resistor
Hamiltonn Casallas
 
Fundamentos del diodo.
Fundamentos del diodo.Fundamentos del diodo.
Fundamentos del diodo.
Hamiltonn Casallas
 
Armado de un amplificador para automovil.
Armado de un amplificador para automovil.Armado de un amplificador para automovil.
Armado de un amplificador para automovil.
Hamiltonn Casallas
 
Amplificador de potencia de audio
Amplificador de potencia de audioAmplificador de potencia de audio
Amplificador de potencia de audio
Hamiltonn Casallas
 
Amplificadores en puente.
Amplificadores en puente.Amplificadores en puente.
Amplificadores en puente.
Hamiltonn Casallas
 
Acoustic analysis and redevelopment of A.Manzoni theatre in Cassino
Acoustic analysis and redevelopment of A.Manzoni theatre in CassinoAcoustic analysis and redevelopment of A.Manzoni theatre in Cassino
Acoustic analysis and redevelopment of A.Manzoni theatre in Cassino
Luciano Conte
 
Marketing Inetnship at Pepsico (Jamshedpur)
Marketing Inetnship at Pepsico (Jamshedpur)Marketing Inetnship at Pepsico (Jamshedpur)
Marketing Inetnship at Pepsico (Jamshedpur)
nawaz7862013
 
Measurement of dielectric properties of textile materials and their applications
Measurement of dielectric properties of textile materials and their applicationsMeasurement of dielectric properties of textile materials and their applications
Measurement of dielectric properties of textile materials and their applications
Abdullah Al Mahfuj
 
Heat Transfer
Heat TransferHeat Transfer
Heat Transfer
Abdullah Al Mahfuj
 

Destacado (15)

El transformador eléctrico.
El transformador eléctrico.El transformador eléctrico.
El transformador eléctrico.
 
Leyes de Kirchhoff
Leyes de KirchhoffLeyes de Kirchhoff
Leyes de Kirchhoff
 
Diseño de un amplificador de RF.
Diseño de un amplificador de RF.Diseño de un amplificador de RF.
Diseño de un amplificador de RF.
 
Conceptos básicos de electricidad
Conceptos básicos de electricidadConceptos básicos de electricidad
Conceptos básicos de electricidad
 
Curso de microcontroladores capitulo 08
Curso de microcontroladores capitulo 08Curso de microcontroladores capitulo 08
Curso de microcontroladores capitulo 08
 
Reparacion de radios AM/FM
Reparacion de radios AM/FMReparacion de radios AM/FM
Reparacion de radios AM/FM
 
El resistor
El resistorEl resistor
El resistor
 
Fundamentos del diodo.
Fundamentos del diodo.Fundamentos del diodo.
Fundamentos del diodo.
 
Armado de un amplificador para automovil.
Armado de un amplificador para automovil.Armado de un amplificador para automovil.
Armado de un amplificador para automovil.
 
Amplificador de potencia de audio
Amplificador de potencia de audioAmplificador de potencia de audio
Amplificador de potencia de audio
 
Amplificadores en puente.
Amplificadores en puente.Amplificadores en puente.
Amplificadores en puente.
 
Acoustic analysis and redevelopment of A.Manzoni theatre in Cassino
Acoustic analysis and redevelopment of A.Manzoni theatre in CassinoAcoustic analysis and redevelopment of A.Manzoni theatre in Cassino
Acoustic analysis and redevelopment of A.Manzoni theatre in Cassino
 
Marketing Inetnship at Pepsico (Jamshedpur)
Marketing Inetnship at Pepsico (Jamshedpur)Marketing Inetnship at Pepsico (Jamshedpur)
Marketing Inetnship at Pepsico (Jamshedpur)
 
Measurement of dielectric properties of textile materials and their applications
Measurement of dielectric properties of textile materials and their applicationsMeasurement of dielectric properties of textile materials and their applications
Measurement of dielectric properties of textile materials and their applications
 
Heat Transfer
Heat TransferHeat Transfer
Heat Transfer
 

Similar a Curso de microcontroladores capitulo 11

Switches1a
Switches1aSwitches1a
Comunicación I2C y SPI
Comunicación I2C y SPIComunicación I2C y SPI
Comunicación I2C y SPI
Jonathan Ruiz de Garibay
 
Comunicaciones en serie
Comunicaciones  en serieComunicaciones  en serie
Comunicaciones en serie
jenym
 
Serial i2c.pdf
Serial i2c.pdfSerial i2c.pdf
Serial i2c.pdf
Nahomi Espinoza
 
Conexiones en-serie-microcontroladores
Conexiones en-serie-microcontroladoresConexiones en-serie-microcontroladores
Conexiones en-serie-microcontroladores
Danny Tierra
 
Rs 485
Rs 485Rs 485
Capitulo n2 redundancia de lan hoy ccna 2
Capitulo n2  redundancia de lan hoy ccna 2Capitulo n2  redundancia de lan hoy ccna 2
Capitulo n2 redundancia de lan hoy ccna 2
Diego Caceres
 
Redes Cap8
Redes Cap8Redes Cap8
Redes Cap8
CJAO
 
Rs232
Rs232Rs232
El algoritmo de stp
El algoritmo de stpEl algoritmo de stp
El algoritmo de stp
Isabel Yepes
 
Usart 3
Usart 3Usart 3
Seriplex
SeriplexSeriplex
Seriplex
anilucia
 
Seriplex
SeriplexSeriplex
Seriplex
anilucia
 
Ccna exploration lan_switching_and_wireless_chap_2_eb
Ccna exploration lan_switching_and_wireless_chap_2_ebCcna exploration lan_switching_and_wireless_chap_2_eb
Ccna exploration lan_switching_and_wireless_chap_2_eb
Edgar Benavente
 
Cap 1 fundamentos de redes de datos
Cap 1 fundamentos de redes de datosCap 1 fundamentos de redes de datos
Cap 1 fundamentos de redes de datos
Instituto Tecnológico de Las Américas (ITLA)
 
Sist. de Comunicacion
Sist. de ComunicacionSist. de Comunicacion
Sist. de Comunicacion
Alex Virreira
 
Comunicación entre Arduinos - Robótica
Comunicación entre Arduinos - RobóticaComunicación entre Arduinos - Robótica
Comunicación entre Arduinos - Robótica
JoaquinMontoro
 
Pic16f84
Pic16f84Pic16f84
Pic16f84
Daniel Sanchez
 
DIAGRAMAS DE UNA ALARMA
DIAGRAMAS DE UNA ALARMADIAGRAMAS DE UNA ALARMA
DIAGRAMAS DE UNA ALARMA
Lilibeth de los Angeles
 
ARQUITECTURA DE COMPUTADORAS
ARQUITECTURA DE COMPUTADORASARQUITECTURA DE COMPUTADORAS
ARQUITECTURA DE COMPUTADORAS
Jimmy Osores
 

Similar a Curso de microcontroladores capitulo 11 (20)

Switches1a
Switches1aSwitches1a
Switches1a
 
Comunicación I2C y SPI
Comunicación I2C y SPIComunicación I2C y SPI
Comunicación I2C y SPI
 
Comunicaciones en serie
Comunicaciones  en serieComunicaciones  en serie
Comunicaciones en serie
 
Serial i2c.pdf
Serial i2c.pdfSerial i2c.pdf
Serial i2c.pdf
 
Conexiones en-serie-microcontroladores
Conexiones en-serie-microcontroladoresConexiones en-serie-microcontroladores
Conexiones en-serie-microcontroladores
 
Rs 485
Rs 485Rs 485
Rs 485
 
Capitulo n2 redundancia de lan hoy ccna 2
Capitulo n2  redundancia de lan hoy ccna 2Capitulo n2  redundancia de lan hoy ccna 2
Capitulo n2 redundancia de lan hoy ccna 2
 
Redes Cap8
Redes Cap8Redes Cap8
Redes Cap8
 
Rs232
Rs232Rs232
Rs232
 
El algoritmo de stp
El algoritmo de stpEl algoritmo de stp
El algoritmo de stp
 
Usart 3
Usart 3Usart 3
Usart 3
 
Seriplex
SeriplexSeriplex
Seriplex
 
Seriplex
SeriplexSeriplex
Seriplex
 
Ccna exploration lan_switching_and_wireless_chap_2_eb
Ccna exploration lan_switching_and_wireless_chap_2_ebCcna exploration lan_switching_and_wireless_chap_2_eb
Ccna exploration lan_switching_and_wireless_chap_2_eb
 
Cap 1 fundamentos de redes de datos
Cap 1 fundamentos de redes de datosCap 1 fundamentos de redes de datos
Cap 1 fundamentos de redes de datos
 
Sist. de Comunicacion
Sist. de ComunicacionSist. de Comunicacion
Sist. de Comunicacion
 
Comunicación entre Arduinos - Robótica
Comunicación entre Arduinos - RobóticaComunicación entre Arduinos - Robótica
Comunicación entre Arduinos - Robótica
 
Pic16f84
Pic16f84Pic16f84
Pic16f84
 
DIAGRAMAS DE UNA ALARMA
DIAGRAMAS DE UNA ALARMADIAGRAMAS DE UNA ALARMA
DIAGRAMAS DE UNA ALARMA
 
ARQUITECTURA DE COMPUTADORAS
ARQUITECTURA DE COMPUTADORASARQUITECTURA DE COMPUTADORAS
ARQUITECTURA DE COMPUTADORAS
 

Más de Hamiltonn Casallas

Sistema Ubuntu
Sistema UbuntuSistema Ubuntu
Sistema Ubuntu
Hamiltonn Casallas
 
Compilador CCS y simulador proteus para microcontroladores PIC
Compilador CCS y simulador proteus para microcontroladores PICCompilador CCS y simulador proteus para microcontroladores PIC
Compilador CCS y simulador proteus para microcontroladores PIC
Hamiltonn Casallas
 
Electricidad básica y aplicaciones
Electricidad básica y aplicacionesElectricidad básica y aplicaciones
Electricidad básica y aplicaciones
Hamiltonn Casallas
 
Circuitos impresos
Circuitos impresosCircuitos impresos
Circuitos impresos
Hamiltonn Casallas
 
Disipadores de calor
Disipadores de calorDisipadores de calor
Disipadores de calor
Hamiltonn Casallas
 
Reparación de amplificadores de audio
Reparación de amplificadores de audioReparación de amplificadores de audio
Reparación de amplificadores de audio
Hamiltonn Casallas
 
Amplificador Push - Pull
Amplificador Push - PullAmplificador Push - Pull
Amplificador Push - Pull
Hamiltonn Casallas
 
Construcción de bobinas ajustables.
Construcción de bobinas ajustables.Construcción de bobinas ajustables.
Construcción de bobinas ajustables.
Hamiltonn Casallas
 
Circuito de entrada y antena.
Circuito de entrada y antena.Circuito de entrada y antena.
Circuito de entrada y antena.
Hamiltonn Casallas
 
Radios de AM
Radios de AMRadios de AM
Radios de AM
Hamiltonn Casallas
 
Armando un generador de RF
Armando un generador de RFArmando un generador de RF
Armando un generador de RF
Hamiltonn Casallas
 
La reactancia en la electricidad.
La reactancia en la electricidad.La reactancia en la electricidad.
La reactancia en la electricidad.
Hamiltonn Casallas
 

Más de Hamiltonn Casallas (12)

Sistema Ubuntu
Sistema UbuntuSistema Ubuntu
Sistema Ubuntu
 
Compilador CCS y simulador proteus para microcontroladores PIC
Compilador CCS y simulador proteus para microcontroladores PICCompilador CCS y simulador proteus para microcontroladores PIC
Compilador CCS y simulador proteus para microcontroladores PIC
 
Electricidad básica y aplicaciones
Electricidad básica y aplicacionesElectricidad básica y aplicaciones
Electricidad básica y aplicaciones
 
Circuitos impresos
Circuitos impresosCircuitos impresos
Circuitos impresos
 
Disipadores de calor
Disipadores de calorDisipadores de calor
Disipadores de calor
 
Reparación de amplificadores de audio
Reparación de amplificadores de audioReparación de amplificadores de audio
Reparación de amplificadores de audio
 
Amplificador Push - Pull
Amplificador Push - PullAmplificador Push - Pull
Amplificador Push - Pull
 
Construcción de bobinas ajustables.
Construcción de bobinas ajustables.Construcción de bobinas ajustables.
Construcción de bobinas ajustables.
 
Circuito de entrada y antena.
Circuito de entrada y antena.Circuito de entrada y antena.
Circuito de entrada y antena.
 
Radios de AM
Radios de AMRadios de AM
Radios de AM
 
Armando un generador de RF
Armando un generador de RFArmando un generador de RF
Armando un generador de RF
 
La reactancia en la electricidad.
La reactancia en la electricidad.La reactancia en la electricidad.
La reactancia en la electricidad.
 

Último

PRACTICA 2 EDAFOLOGÍA TEXTURA DEL SUELO.pptx
PRACTICA 2 EDAFOLOGÍA TEXTURA DEL SUELO.pptxPRACTICA 2 EDAFOLOGÍA TEXTURA DEL SUELO.pptx
PRACTICA 2 EDAFOLOGÍA TEXTURA DEL SUELO.pptx
ANGELJOELSILVAPINZN
 
simbologia y normas de soldadura para su inspección
simbologia y normas de soldadura para su inspecciónsimbologia y normas de soldadura para su inspección
simbologia y normas de soldadura para su inspección
HarofHaro
 
PPT suelos ensayo Proctor - laboratorio 4.pdf
PPT suelos ensayo Proctor - laboratorio 4.pdfPPT suelos ensayo Proctor - laboratorio 4.pdf
PPT suelos ensayo Proctor - laboratorio 4.pdf
EgorRamos1
 
INGLES_LISTA_DE_VOCABULARIO una lista completa
INGLES_LISTA_DE_VOCABULARIO una lista completaINGLES_LISTA_DE_VOCABULARIO una lista completa
INGLES_LISTA_DE_VOCABULARIO una lista completa
JaimmsArthur
 
AE 34 Serie de sobrecargas aisladas_240429_172040.pdf
AE  34 Serie de sobrecargas aisladas_240429_172040.pdfAE  34 Serie de sobrecargas aisladas_240429_172040.pdf
AE 34 Serie de sobrecargas aisladas_240429_172040.pdf
sebastianpech108
 
Aletas de transferencia de calor o superficies extendidas dylan.pdf
Aletas de transferencia de calor o superficies extendidas dylan.pdfAletas de transferencia de calor o superficies extendidas dylan.pdf
Aletas de transferencia de calor o superficies extendidas dylan.pdf
elsanti003
 
Equipo 4. Mezclado de Polímeros quimica de polimeros.pptx
Equipo 4. Mezclado de Polímeros quimica de polimeros.pptxEquipo 4. Mezclado de Polímeros quimica de polimeros.pptx
Equipo 4. Mezclado de Polímeros quimica de polimeros.pptx
angiepalacios6170
 
Uso de equipos de protección personal.pptx
Uso de equipos de protección personal.pptxUso de equipos de protección personal.pptx
Uso de equipos de protección personal.pptx
OmarPadillaGarcia
 
Las operaciones básicas en la construcción.
Las operaciones básicas en la construcción.Las operaciones básicas en la construcción.
Las operaciones básicas en la construcción.
MaraManuelaUrribarri
 
DIAPOSITIVA DE LA NORMA ISO 22000 EXPOSICI�N.pptx
DIAPOSITIVA DE LA NORMA ISO 22000 EXPOSICI�N.pptxDIAPOSITIVA DE LA NORMA ISO 22000 EXPOSICI�N.pptx
DIAPOSITIVA DE LA NORMA ISO 22000 EXPOSICI�N.pptx
KeylaArlethTorresOrt
 
Sesión 03 universidad cesar vallejo 2024
Sesión 03 universidad cesar vallejo 2024Sesión 03 universidad cesar vallejo 2024
Sesión 03 universidad cesar vallejo 2024
FantasticVideo1
 
380378757-velocidades-maximas-y-minimas-en-los-canales.pdf
380378757-velocidades-maximas-y-minimas-en-los-canales.pdf380378757-velocidades-maximas-y-minimas-en-los-canales.pdf
380378757-velocidades-maximas-y-minimas-en-los-canales.pdf
DiegoAlexanderChecaG
 
FICHA TECNICA PRODUCTOS CONGELADOS EMBALAJE.pdf
FICHA TECNICA PRODUCTOS CONGELADOS EMBALAJE.pdfFICHA TECNICA PRODUCTOS CONGELADOS EMBALAJE.pdf
FICHA TECNICA PRODUCTOS CONGELADOS EMBALAJE.pdf
jesus869159
 
Informe Municipal provincial de la ciudad de Tacna
Informe Municipal provincial de la ciudad de TacnaInforme Municipal provincial de la ciudad de Tacna
Informe Municipal provincial de la ciudad de Tacna
BrusCiriloPintoApaza
 
DIAGRAMA ELECTRICOS y circuito electrónicos
DIAGRAMA ELECTRICOS y circuito electrónicosDIAGRAMA ELECTRICOS y circuito electrónicos
DIAGRAMA ELECTRICOS y circuito electrónicos
LuisAngelGuarnizoBet
 
Infografía de operaciones básicas....pdf
Infografía de operaciones básicas....pdfInfografía de operaciones básicas....pdf
Infografía de operaciones básicas....pdf
jahirrtorresa
 
Operaciones Básicas creadora Veronica Maiz
Operaciones Básicas creadora Veronica MaizOperaciones Básicas creadora Veronica Maiz
Operaciones Básicas creadora Veronica Maiz
carolina838317
 
Focos SSO Fin de Semana del 31 MAYO A al 02 de JUNIO de 2024.pdf
Focos SSO Fin de Semana del 31 MAYO A  al 02 de JUNIO  de 2024.pdfFocos SSO Fin de Semana del 31 MAYO A  al 02 de JUNIO  de 2024.pdf
Focos SSO Fin de Semana del 31 MAYO A al 02 de JUNIO de 2024.pdf
PatoLokooGuevara
 
Cálculo del espesor del conducto forzado
Cálculo del espesor del conducto forzadoCálculo del espesor del conducto forzado
Cálculo del espesor del conducto forzado
KristianSaavedra
 
Infografia - Hugo Hidalgo - Construcción
Infografia - Hugo Hidalgo - ConstrucciónInfografia - Hugo Hidalgo - Construcción
Infografia - Hugo Hidalgo - Construcción
MaraManuelaUrribarri
 

Último (20)

PRACTICA 2 EDAFOLOGÍA TEXTURA DEL SUELO.pptx
PRACTICA 2 EDAFOLOGÍA TEXTURA DEL SUELO.pptxPRACTICA 2 EDAFOLOGÍA TEXTURA DEL SUELO.pptx
PRACTICA 2 EDAFOLOGÍA TEXTURA DEL SUELO.pptx
 
simbologia y normas de soldadura para su inspección
simbologia y normas de soldadura para su inspecciónsimbologia y normas de soldadura para su inspección
simbologia y normas de soldadura para su inspección
 
PPT suelos ensayo Proctor - laboratorio 4.pdf
PPT suelos ensayo Proctor - laboratorio 4.pdfPPT suelos ensayo Proctor - laboratorio 4.pdf
PPT suelos ensayo Proctor - laboratorio 4.pdf
 
INGLES_LISTA_DE_VOCABULARIO una lista completa
INGLES_LISTA_DE_VOCABULARIO una lista completaINGLES_LISTA_DE_VOCABULARIO una lista completa
INGLES_LISTA_DE_VOCABULARIO una lista completa
 
AE 34 Serie de sobrecargas aisladas_240429_172040.pdf
AE  34 Serie de sobrecargas aisladas_240429_172040.pdfAE  34 Serie de sobrecargas aisladas_240429_172040.pdf
AE 34 Serie de sobrecargas aisladas_240429_172040.pdf
 
Aletas de transferencia de calor o superficies extendidas dylan.pdf
Aletas de transferencia de calor o superficies extendidas dylan.pdfAletas de transferencia de calor o superficies extendidas dylan.pdf
Aletas de transferencia de calor o superficies extendidas dylan.pdf
 
Equipo 4. Mezclado de Polímeros quimica de polimeros.pptx
Equipo 4. Mezclado de Polímeros quimica de polimeros.pptxEquipo 4. Mezclado de Polímeros quimica de polimeros.pptx
Equipo 4. Mezclado de Polímeros quimica de polimeros.pptx
 
Uso de equipos de protección personal.pptx
Uso de equipos de protección personal.pptxUso de equipos de protección personal.pptx
Uso de equipos de protección personal.pptx
 
Las operaciones básicas en la construcción.
Las operaciones básicas en la construcción.Las operaciones básicas en la construcción.
Las operaciones básicas en la construcción.
 
DIAPOSITIVA DE LA NORMA ISO 22000 EXPOSICI�N.pptx
DIAPOSITIVA DE LA NORMA ISO 22000 EXPOSICI�N.pptxDIAPOSITIVA DE LA NORMA ISO 22000 EXPOSICI�N.pptx
DIAPOSITIVA DE LA NORMA ISO 22000 EXPOSICI�N.pptx
 
Sesión 03 universidad cesar vallejo 2024
Sesión 03 universidad cesar vallejo 2024Sesión 03 universidad cesar vallejo 2024
Sesión 03 universidad cesar vallejo 2024
 
380378757-velocidades-maximas-y-minimas-en-los-canales.pdf
380378757-velocidades-maximas-y-minimas-en-los-canales.pdf380378757-velocidades-maximas-y-minimas-en-los-canales.pdf
380378757-velocidades-maximas-y-minimas-en-los-canales.pdf
 
FICHA TECNICA PRODUCTOS CONGELADOS EMBALAJE.pdf
FICHA TECNICA PRODUCTOS CONGELADOS EMBALAJE.pdfFICHA TECNICA PRODUCTOS CONGELADOS EMBALAJE.pdf
FICHA TECNICA PRODUCTOS CONGELADOS EMBALAJE.pdf
 
Informe Municipal provincial de la ciudad de Tacna
Informe Municipal provincial de la ciudad de TacnaInforme Municipal provincial de la ciudad de Tacna
Informe Municipal provincial de la ciudad de Tacna
 
DIAGRAMA ELECTRICOS y circuito electrónicos
DIAGRAMA ELECTRICOS y circuito electrónicosDIAGRAMA ELECTRICOS y circuito electrónicos
DIAGRAMA ELECTRICOS y circuito electrónicos
 
Infografía de operaciones básicas....pdf
Infografía de operaciones básicas....pdfInfografía de operaciones básicas....pdf
Infografía de operaciones básicas....pdf
 
Operaciones Básicas creadora Veronica Maiz
Operaciones Básicas creadora Veronica MaizOperaciones Básicas creadora Veronica Maiz
Operaciones Básicas creadora Veronica Maiz
 
Focos SSO Fin de Semana del 31 MAYO A al 02 de JUNIO de 2024.pdf
Focos SSO Fin de Semana del 31 MAYO A  al 02 de JUNIO  de 2024.pdfFocos SSO Fin de Semana del 31 MAYO A  al 02 de JUNIO  de 2024.pdf
Focos SSO Fin de Semana del 31 MAYO A al 02 de JUNIO de 2024.pdf
 
Cálculo del espesor del conducto forzado
Cálculo del espesor del conducto forzadoCálculo del espesor del conducto forzado
Cálculo del espesor del conducto forzado
 
Infografia - Hugo Hidalgo - Construcción
Infografia - Hugo Hidalgo - ConstrucciónInfografia - Hugo Hidalgo - Construcción
Infografia - Hugo Hidalgo - Construcción
 

Curso de microcontroladores capitulo 11

  • 1. E l bus I2 C es un bus serie, for- mado por dos hilos (SDA y SCL) mas la línea de masa, que puede conectarse varios dispo- sitivos mediante un hardware tan sencillo como el que se muestra en la figura 1. Aunque los buses serie no tienen la capacidad de los buses para- lelo, requieren menos cableado y me- nos terminales de conexión. La línea SDA (Sereial Data) es la línea para la transferencia de datos se- rie, mientras que la línea SCL (Serial Clock) es la línea de reloj que se utili- za para la sincronización de datos. Es- tas líneas son de drenador o de colec- tor abierto y deben conectarse a posi- tivo de la alimentación a través de una resistencia externa, formando una es- tructura deAND cableada (como pue- de verse en la figura 2) de tal manera que dependiendo del transistor de sa- lida de cada dispositivo pueden ocu- rrir alguno de los siguientes casos: q Que el transistor esté saturado, lo que provocará un nivel bajo en la línea correspondiente, independientemente del estado de los otros transistores. Indicando en este caso que el bus es- tá ocupado. q Que el transistor esté en corte, por lo tanto está en estado de alta impe- dancia, es decir, el estado de la línea depende de los otros transistores. En CURSO DE MICROCONTROLADORES PIC16F87X (...y XI) CURSO DE MICROCONTROLADORES PIC16F87X (...y XI) Fernando Remiro Domínguez Profesor de Sistemas Electrónicos IES. Juan de la Cierva www.terra.es/personal/fremiro MICROCONTROLADORES 50RESISTOR En el número anterior prometiamos que conectaríamos algún dispositivo I2 C a los PIC16F87X, pero antes de empezar queremos recordar brevemente en que consiste el bus serie I2 C (IIC, Inter Integrated Circuit Bus). Figura 1.- Configuración típica del bus I2C 50-64 MICROCONTROLADORES2 26/4/04 10:50 Página 50
  • 2. MICROCONTROLADORES 51RESISTOR estas condiciones la línea corres- pondiente estará a nivel alto a través de la resistencia de pull-up. Se pueden transferir datos por el bus a una velocidad máxima de 100 Kbits/seg en el modo estándar (Stan- dard Mode), 400 Kbits en el modo rá- pido (Flast Mode) y a 3,4Mb/s en el caso de alta velocidad (High-Speed Mode). El número de dispositivos co- nectados al bus viene limitado por la capacidad máxima admitida en el bus, que es de 400 pF. El valor de Rp de- pende de la tensión de alimentación y de la capacidad del bus y del número de periféricos conectados, valores típi- cos están entre 4K7 y 2K2. Los dispositivos conectados al bus I2 C pueden ser tanto Maestros como Esclavos. Debemos de tener en cuenta, que un Maestro ( Master )es un circui- to integrado que determina la tempo- rización y la dirección de la transfe- rencia de datos. Este circuito integra- do es el único que aplica los pulsos de reloj a la línea SCL. Los maestros sue- len ser microcontroladores. Cuando se conectan varios dispositivos maestros a un úni- co bus I2 C la configuración re- alizada se denomina multi- maestro. Es el dispositivo que inicia la transferencia, genera la señal de reloj y finaliza la transferencia. Mientras que un Esclavo ( Slave ) es cualquier circuito integrado conectado al bus I2 C que no es capaz de generar pulsos de reloj. Los circuitos integrados esclavos reciben señales de comandos y de reloj proce- dentes del maestro. TRANFERENCIA DE UN BIT POR LA LÍNEA SDA Los datos en la línea SDA deben ser estables durante el periodo ALTO de reloj. La línea de datos SDA sólo puede cambiar cuando la señal de re- loj en la línea SCL se encuentre en es- tado bajo tal y como se muestra en la fi- gura 3. CONDICIONES DE START Y STOP La condición de START es una transición de un nivel alto a un nivel bajo de la línea SDA mientras la línea SCL esta en a nivel alto. Una transición de un nivel bajo a un nivel alto de la línea SDA mientras la línea SCL está a nivel alto, define una condición de STOP. Las condiciones de START y STOP siempre las genera el Master. El bus se considera ocupado después de la con- Figura 2.- Etapa de salida de los dispositivos I2 C Figura 3.- Transferencia de un bit por el bus I2 C Figura 4.- Condiciones de START y de STOP 50-64 MICROCONTROLADORES2 26/4/04 10:50 Página 51
  • 3. MICROCONTROLADORES 52RESISTOR dición de START y se considera que esta libre de nuevo un tiempo después de una condición de STOP TRANSFERENCIA DE DATOS Cada dato que se quiere transmitir por la línea SDA debe tener 8 bits y la transmisión comienza empezando por el bit más significativo (MSB). El nu- mero de octetos implicados en cada transferencia es indefinido. Cada oc- teto ha de ir seguido por un bit de re- conocimiento ACK (acknowledge- ment) en el noveno pulso de reloj. El receptor ejecuta éste reconocimiento poniendo la señal SDA a nivel bajo, tal y como se muestra en la figura 5. Si un dispositivo receptor no puede recibir otro octeto por encontrarse re- alizando alguna otra función, como, por ejemplo, sirviendo a una interrup- ción, puede mantener a nivel bajo la línea de reloj SCL para hacer que el transmisor pase a un estado de espera. La transferencia de datos conti- nuará cuando el receptor esté prepara- do para recibir otro octeto de datos y deje libre la línea de reloj SCL. Cuando un esclavo receptor no re- conoce su propia dirección de escla- vo, la línea de datos queda a nivel alto. Entonces el maestro genera una con- dición de STOP para cortar la trans- ferencia. Si un esclavo receptor reconoce co- mo suya la dirección del esclavo, pero cierto tiempo después no puede reci- bir mas octetos de datos, el esclavo no genera el bit deACK del ultimo octeto, quedando la línea SDA a nivel alto, en- tonces el maestro genera una condi- ción de STOP para cortar la transfe- rencia. En el caso de un maestro implicado en una transferencia, éste debe seña- lar el final de los datos al esclavo trans- misor, no generando el bit deACK del último octeto que ha recibido del es- clavo. El esclavo transmisor debe dejar libre la línea de datos para permitir que el maestro genere la condición de STOP, tal y como puede verse en la fi- gura 6. FORMATOS Las transferencias de datos siguen el formato mostrado en la figura 7; des- pués de la condición de START, se en- vía la dirección de un esclavo. Esta di- rección tiene 7 bits, el octavo bit es un bit de dirección de datos (R/W), un "0" indica una transmisión (ESCRITU- RA), un "l" indica petición de datos (LECTURA). Una transferencia de da- tos siempre termina con una condición de STOP generada por la unidad prin- cipal. No obstante, si un maestro aún desea comunicarse con el bus, puede generar otra condición de START y di- reccionar a otro esclavo sin generar pri- mero una condición de STOP. En una transferencia de este tipo son posibles, Figura 5.- Transferencia de datos por el bus I2 C Figura 6.- Reconocimiento de un octeto en el bus I2 C 50-64 MICROCONTROLADORES2 26/4/04 10:50 Página 52
  • 4. MICROCONTROLADORES 53RESISTOR por tanto, varias combinaciones de for- matos de lectura/escritura. Posibles formatos de transferencia de datos son: 1. El maestro transmisor transmite al esclavo receptor. Si el bit 8 es de es- critura, R/W=0, la secuencia será la de la figura 8. 2. El maestro-receptor lee de un esclavo-emisor. En el momento de1 primer reco- nocimiento, el maestro transmisor pa- sa a ser maestro receptor y el esclavo receptor pasa a ser esclavo transmisor. Este primerACK siempre lo genera el esclavo. Los siguientesACK y la con- dición de STOP la genera el maestro. 3. Formatos combinados. Durante un cambio de sentido dentro de una transferencia, la condición de START y la dirección de1 esclavo se repiten, pero el bit R/W se in- vierte. Seguidamente describiremos un sencillo periférico I2 C, como es el PCF 8574A, que es un periférico de entra- das/salidas digitales. DESCRIPCIÓN del PCF8574A Se trata de un dispositivo diseñan- do para interface con el bus I2 C que proporciona una ampliación de 8 líne- as de E/S digitales y que se puede em- plear en cualquier sistema microcon- trolador dotado del hardware y/o soft- ware necesario para el protocolo I2 C. En la tabla 1 se muestra su patillaje y la descripción de cada uno de los pines. El PCF 8574A es un dispositivo CMOS de bajo consumo que incluye salidas "latcheadas" con amplificado- res de alta corriente para activar direc- tamente cargas tipo LED. Su diagra- ma de bloques es el que se muestra en la figura 11. Dispone de la línea #INT de inte- rrupciones que puede conectarse a la lógica de interrupciones del micro- controlador. Que será llamando a tra- vés de la interrupción con esta línea, el I/O remoto puede informar al mi- crocontrolador si hay datos de entra- da en los puertos, sin tener que comu- nicarse por el bus I2 C. Es decir, puede trabajar como un simple dispositivo esclavo. Los PCF8574 y versiones PCF8574A sólo difieren en su direc- Figura 7.- Transferencia completa de datos Figura 9.- El maestro lee datos del esclavo Figura 10.- Formato combinado Figura 8.- El Maestro escribe datos en el esclavo 50-64 MICROCONTROLADORES2 26/4/04 10:50 Página 53
  • 5. ción del esclavo, tal y como se muestra en la Figura 12. La parte fija de la dirección es la combinación binaria 0111 para el mo- delo PCF8574A y 0100 para el PCF8574, la parte programable la de- termina el nivel lógico de las señales A0-A2 que las define el usuario a vo- luntad. Cada línea de la puerta de E/S pue- de usarse como entrada o salida inde- pendientemente. En modo de escritura se transfieren desde el MASTER has- ta la puerta es como se muestra en la fi- gura 14, por lo tanto la secuencia de transferencia de datos es la siguiente: q En primer lugar el Master envía la condición de START. q Seguidamente envía la dirección del PCF8574 en modo escritura que puesto en binario será 0100(A2)(A1)(A0)0, donde (A2),(A1) y (A0) es el valor lógico que tengan las patillas del mismo nombre del dispositivo. q En tercer lugar se transmiten los da- tos a escribir en el puerto del PCF8574. q Finalmente el Master manda una se- ñal de STOP para finalizar la trans- ferencia. Símbolo PIN DIO16; SO16 SSOP20 Descripción A0 1 6 Entrada de direccionamiento 0 A1 2 7 Entrada de direccionamiento 1 A2 3 9 Entrada de direccionamiento 2 P0 4 10 Línea I/O 0 bidirecional P1 5 11 Línea I/O 1 bidirecional P2 6 12 Línea I/O 2 bidirecional P3 7 14 Línea I/O 3 bidirecional Vss 8 15 Masa de alimentación P4 9 16 Línea I/O 4 bidirecional P5 10 17 Línea I/O 5 bidirecional P6 11 19 Línea I/O 6 bidirecional P7 12 20 Línea I/O 7 bidirecional #INT 13 1 Salida de interrupción (activa a nivel bajo) SCL 14 2 Entrada de reloj del bus I2C SDA 15 4 Entrada/Salida de datos del bus I2C VDD 16 5 Positivo tensión de alimentación n.c -- 3 No conectada n.c -- 8 No conectada n.c -- 13 No conectada n.c -- 18 No conectada Tabla 1.- Patillaje del PCF8574 MICROCONTROLADORES 54RESISTOR Figura 11.- Diagrama de bloques del PCF8574 50-64 MICROCONTROLADORES2 26/4/04 10:50 Página 54
  • 6. MICROCONTROLADORES 55RESISTOR Podemos comprobar lo dicho has- ta el momento realizando el circuito de la figura 14, en el que se ha conec- tado el PIC16F876 a un PCF8574 a través de las líneas RC3 (SCL) y RC4 (SDA). Para comprobar el efecto de la escritura de datos sobre el puerto se han conectado unos diodos LED (D0:D7). Si cargamos en el microcon- trolador el programa I2 C_8574_1.asm, este realiza la lectura del valor que pro- porcionan los interruptores conecta- dos al puertoA y pone el valor corres- pondiente en los diodos LED’s D0:D5, Los diodos D6 y D7 se han conectado en el circuito de aplicación para poder comprobar el funcionamiento de otros programas, como por ejemplo un pén- dulo de diodos LED que pueda realizar el lector. El programa está preparado para aquellos lectores que utilizan el Figura 12.- Dirección de esclavo para el PCF857 y PCF857A Figura 13.- Secuencia de escritura desde el Master al PCF8574 Figura 14.- Circuito práctico de ampliación de un puerto de salida con un PCF8574 a través del BUS I2C 50-64 MICROCONTROLADORES2 26/4/04 10:50 Página 55
  • 7. MICROCONTROLADORES 56RESISTOR ;**************************************************************************** ;I2C_8574_1.asm ;Este programa configura el módulo MSSP en modo I2C Master y se utiliza en modo Transmisión ; El programa lee el contenido de PORTA RA0:RA5 y lo envía a las líneas correspondientes del ;puerto del periférico I2C PCF8574. List p=16F876;Tipo de procesador include "P16F876.INC" ;Definiciones de registros internos ; __config _XT_OSC & _CP_OFF & _WRT_ENABLE_ON & _BODEN_ON & _LVP_OFF & _WDT_ON ; org 0x00 ;Vector de Reset ; goto INICIO org 0x05 ;Salva el vector de interrupción goto INICIO ;**************************************************************************** ;I2C_EmviaStart: Envía la condición de Start I2C_EmviaStart bcf PIR1,SSPIF bsf STATUS,RP0 ;Selecciona página 1 bsf SSPCON2,SEN ;Activa secuencia de inicio bcf STATUS,RP0 ;Selecciona página 0 Espera_Start btfss PIR1,SSPIF ;¿Fin de secuencia de transmisión? goto Espera_Start ;Espera fin de transmisión return ;**************************************************************************** ;Send_Byte: Transmite el byte del W vía I2C. La rutina finaliza cuando se recibe /ACK I2C_EnviaByte bcf PIR1,SSPIF movwf SSPBUF ;Byte a transmitir pasa al buffer de salida Espera_Byte btfss PIR1,SSPIF ;¿Se ha recibido el bit /ACK? goto Espera_Byte ;No esperar return ;**************************************************************************** ;Programa principal INICIO clrf PORTC bsf STATUS,RP0 ;Selecciona banco 1 movlw b'00000110' movwf ADCON1 ;PortA E/S Digital movlw b'11111111' movwf TRISA ;configura PortA como entrada movwf TRISC ;RC3/SCL y RC4/SDA entradas movlw b'10000000' movwf SSPSTAT ;Velocidad estándar con niveles I2C movlw .9 movwf SSPADD ;Velocidad del bus I2C 100KHz bcf STATUS,RP0 ;Selecciona banco 0 ;Configuramos el módulo MSSP en el modo Master I2C movlw b'00101000' movwf SSPCON ;Módulo MSSP en On call I2C_EmviaStart ;Envía condición de Start movlw b'01110000' call I2C_EnviaByte ;Envía la dirección del PCF8574 Bucle movf PORTA,W ;Caraga en W el valor del PORTA andlw b'00111111' ;asegura RA7:RA6 como cero call I2C_EnviaByte ;Envia Byte al PCF8574 goto Bucle ;**************************************************************************************** ORG 0x1F00 bcf PCLATH,4 bcf PCLATH,3 ;Selecciona la página 0 goto INICIO end ;Fin del programa fuente 50-64 MICROCONTROLADORES2 26/4/04 10:50 Página 56
  • 8. MICROCONTROLADORES 57RESISTOR bootloader con el circuito que venimos utilizando en este curso, o bien utili- zando un programador con un software como el IC-PROG , para lo cual habrá que quitar los ";" de las líneas que es- tán en azul y se pueden poner ";" en las líneas que están marcadas de color verde. Los datos de entrada se transfieren desde la puerta hasta el MASTER en modo de lectura de acuerdo al crono- grama de la figura 15. Para comprobar su funcionamiento, modificaremos el circuito de la figura 14, para conectar unos conmutadores a las entradas de los diodos, tal y como se muestra en la figura 16, si se mantie- nen los diodos, aparecerá el problema de que cuando se pone a nivel alto un conmutador, el diodo se encenderá, pa- ra evitar este efecto, se pueden poner los diodos al revés, es decir el ánodo de cada diodo a través de una resistencia de 330µ conectado a positivo (Vcc) y a la entrada del PCF8574 se conecta el cátodo y la entrada del interruptor que Figura 15.- Secuencia de lectura desde PCF8574 hacia el Master. Figura 16.- Circuito práctico de ampliación de un puerto de entrada con un PCF8574 a través del BUS I2 C Figura 17 .- Ejemplo de cómo conectar como entrada salida los pines del PCF8574 50-64 MICROCONTROLADORES2 26/4/04 10:50 Página 57
  • 9. MICROCONTROLADORES 58RESISTOR ;**************************************************************************************** ;I2C_8574_2.asm ;Este programa configura el módulo MSSP en modo I2C Master y se utiliza en modo Recepción ; El programa lee el contenido de las líneas del PUERTO del PCF8574 del y lo envía a las ;líneas correspondientes del PORTB donde se visualiza su valore en los diodos LEDS que se ;le han conectado ;**************************************************************************************** List p=16F873 ;Tipo de procesador include "P16F873.INC" ;Definiciones de registros internos ; __config _XT_OSC & _CP_OFF & _WRT_ENABLE_ON & _BODEN_ON & _LVP_OFF & _WDT_ON ; ; org 0x00 ;Vector de Reset ; goto INICIO org 0x05 ;Salva el vector de interrupción goto INICIO ;**************************************************************************************** ;I2C_EmviaStart: Envía la condición de Start I2C_EmviaStart bcf PIR1,SSPIF ;Restaura el flag del módulo MSSP bsf STATUS,RP0 ;Selecciona página 1 bsf SSPCON2,SEN ;Activa secuencia de inicio bcf STATUS,RP0 Espera_Start btfss PIR1,SSPIF ;¿Ha finalizado la secuencia de inicio ? goto Espera_Start ;No, esperar fin de secuencia return ;**************************************************************************************** ;I2C_EnviaByte: Transmite el byte del W vía I2C. La rutina finaliza cuando se recibe /ACK I2C_EnviaByte bcf PIR1,SSPIF ;Restaura el flag del módulo MSSP movwf SSPBUF ;Byte a transmitir pasa al buffer de salida Espera_Byte btfss PIR1,SSPIF ;¿se ha recibido el bit /ACK ? goto Espera_Byte ;No, esperarACK return ;**************************************************************************************** ;I2C_LeeByte: Lee un byte procedente del dispositivo I2C seleccionado y lo deja en W ;Seguidamente se genera y transmite el bit /ACK I2C_LeeByte bcf PIR1,SSPIF ;Restaura el flag del módulo MSSP bsf STATUS,RP0 ;Selecciona página 1 bsf SSPCON2,RCEN ;Activa el modo receptor bcf STATUS,RP0 ;Selecciona página 0 Espera_Lectura btfss PIR1,SSPIF ;¿Se han recibidos los 8 bits ? goto Espera_Lectura ;No, esperar lectura bcf PIR1,SSPIF ;Restaura el flag del módulo MSSP bsf STATUS,RP0 ;Selecciona página 1 bcf SSPCON2,ACKDT ;Pone bitACK a "0" bsf SSPCON2,ACKEN ;Aciva la secuencia de generación del bitACK bcf STATUS,RP0 ;Selecciona página 0 Espera_ACK btfss PIR1,SSPIF ;¿ Se ha finalizado la SecuenciaACK? goto Espera_ACK ;No, esperarACK movf SSPBUF,W ;Lee el byte recibido return ;**************************************************************************************** ;Programa principal INICIO clrf PORTB clrf PORTC bsf STATUS,RP0 ;Selecciona banco 1 movlw b'11111111' movwf TRISC ;RC3/SCL y RC4/SDA entradas clrf TRISB ;Puerta B salida movlw b'10000000' movwf SSPSTAT ;Velocidad estándar con niveles I2C movlw .9 movwf SSPADD ;Velocidad del bus I2C 100KHz bcf STATUS,RP0 ;Selecciona banco 0 ;Módulo MSSP en el modo Master I2C movlw b'00101000' movwf SSPCON ;Módulo MSSP en On call I2C_EmviaStart ;Envía condición de inicio movlw b'01110001' call I2C_EnviaByte ;Envía byte de dirección del PCF8574 (lectura) Bucle call I2C_LeeByte ;Lee el dispositivo PCF8584 movwf PORTB ;Visualiza sobre los LEDs RB0-RB7 goto Bucle ;**************************************************************************************** ORG 0x1F00 bcf PCLATH,4 bcf PCLATH,3 ;Selecciona la página 0 goto INICIO end ;Fin del programa fuente 50-64 MICROCONTROLADORES2 26/4/04 10:50 Página 58
  • 10. pone un "0" o un "1", tal y como se muestra en la figura 17, sobre este cir- cuito se pueden ver perfectamente tam- bién como varían las salidas, pero hay que tener en cuenta que en este caso, el LED se enciende cuando le llega un "0" y se apaga cuando le llega un "1" desde el puerto del PCF8574, es decir las salidas estarán complementadas desde el punto de vista de encendido y apagado de los diodos. DESCRIPCIÓN del SAA1064 Seguidamente veremos otro dis- positivo I2 C como es el controlador de displays SAA1064, se trata de un dis- positivo especialmente diseñado para el control de hasta 4 displays 7 segmentos tipo LED con punto decimal, utilizan- do el multiplexado de dos pares de dí- gitos. Se trata lógicamente de un dis- positivo I2 C que puede trabajar junto con otros tres, ya que permite cuatro posibles direcciones diferentes selec- cionadas por hardware su diagrama de bloques es el que se muestra en la fi- gura 18 y sus características más sig- nificativas son: q Flag indicador del "Power On Reset" (POR). q 16 salidas con corriente de hasta 21 µA controladas por software. q 2 salidas multiplexadas para contro- lar segmentos de ánodo común q Oscilador integrado. q Bits de control para seleccionar vi- sualización estática, dinámica, apa- gado y de test. En la figura 20 se muestra como se debe direccionar el SAA1064 tanto para escritura como para lectura, don- deA1 yA0 son dos bits cuyo valor de- pende de la tensión aplicada en el pin ADR. Esta patilla se controla con ayu- da de una tensión continua que, com- parada con unos umbrales internos de referencia, define, mediante un pe- queño convertidorA/D interno, el valor de los dos bits de direcciónA0 yAl tal y coma se muestra en la tabla 3. Así por ejemplo si ponemos a masa el pin ADDR la dirección del SAA1064 será b’01110000’ó 70h. Por lo tanto, con este sistema se pueden direccionar hasta cuatro SAA1064 en el mismo bus, lo que su- pone 16 displays de 7 segmentos co- mo máximo. EL BYTE DE ESTADO Únicamente el bit de más peso de este byte (Power On Reset) tiene sig- nificado. Un "1" indica que hubo fallo de alimentación desde la última vez que se leyó. Tras la lectura de este by- te, el bit vuelve a quedar a "0". EL BYTE DE INSTRUCCIÓN Mediante los tres bits de menos pe- so de este byte (SC, SB y SA), se se- lecciona a partir de que registro se van a escribir secuencialmente los si- guientes bytes (ver la tabla 4). Esta ca- racterística permite una rápida inicia- ción por parte del MASTER. MICROCONTROLADORES 59RESISTOR Figura 18.- Diagrama de bloques del controlador de display SAA1064 50-64 MICROCONTROLADORES2 26/4/04 10:50 Página 59
  • 11. BITS DE CONTROL Los bits de control se encuentran dentro del byte de control. Se emplean los 7 de menos peso y su significado es el siguiente: q C0=0 Modo estático. Visualización continua sobre los dígitos 1 y 2. No hay multiplexaci6n. q C0=1 Modo dinámico. Se visualiza de forma multiplexada sobre los dis- plays 1+3 y 2+4. q Cl =0 Los dígitos 1+3 se apagan. q Cl =1 Los dígitos 1+3 no se apagan. q C2=0 Los dígitos 2+4 se apagan. q C2=1 Los dígitos 2+4 no se apagan. q C3=0 Funcionamiento normal q C3=1 Se activan todos los segmen- tos. Función test. q C4=1 Añade 3 mA a la corriente de salida de los segmentos. q C5=1 Añade 6 mA a la corriente de salida de los segmentos. q C6=1Añade 12 mA a la corriente de salida de los segmentos. NºPin Señal Descripción 1 ADR Línea de direccionamiento por hardware 2 CEXT Condensador externo (modo dinámico) 3-10 P8-P1 Salidas a segmentos de los dígitos 1 y 2 11 MX1 Activación de los dígitos 1 y 3 12 VEE Negativo de alimentación 13 VCC Positivo de alimentación 14 MX2 Activación de los dígitos 2 y 4 15-22 P9-P16 Salidas a segmentos de los dígitos 3 y 4 23 SDA Línea de datos del bus I2 C 24 SCL Línea de reloj del bus I2 C Tabla 2.- Descripción de los pines del SAA1064 Figura 19.- Patillaje del SAA1064 Tabla 3.- Direccionamiento del SAA1064 en función de la tensión en el pin ADR En la tabla 2 se muestra el patillaje del dispositivo y la descripción de cada una de sus patillas. Tensión en ADR A0 A1 Dirección de lectura Dirección de escritura VEE 0 0 71h 70h 3/8 de VCC 0 1 73h 72h 5/8 de VCC 1 0 75h 74h VCC 1 1 77h 76h SC SB SA Registro 0 0 0 Control 0 0 1 Dígito 1 0 1 0 Dígito 2 0 1 1 Dígito 3 1 0 0 Dígito 4 1 0 1 Reservado 1 1 0 Reservado 1 1 1 Reservado MICROCONTROLADORES 60RESISTOR Figura 20.- Direccionamiento del SAA1064 para lectura y escritura Tabla 4.- Registros internos del SAA1064 50-64 MICROCONTROLADORES2 26/4/04 10:50 Página 60
  • 12. Este libro introduce al lector en la reali- zación de proyectos con el popular micro- controlador PIC16F84A. q Los contenidos se presentan de manera asequible y entretenida sin perder el necesario nivel técnico. q El lector dispone de todo lo necesario para realizar los proyectos de forma cómoda ya que no requiere de grandes medios materiales y todo está descrito en el libro o en el CD-ROM que acom- paña la obra. q La obra es eminentemente práctica: contiene más de 160 ejercicios y pro- yectos resueltos completamente, siendo muchos de ellos proyectos clásicos, como termómetros, relojes, calenda- rios, cerraduras electrónicas, control de displays, termostatos, temporizadores, alarmas, sirenas, comunicación con el ordenador, juegos, control de motores, microrobots, etc. q El software utilizado es de libre distri- bución y los circuitos emplean compo- nentes que pueden adquirirse fácilmen- te en cualquier tienda de componentes electrónicos. El gasto a realizar para realizar las prácticas planteadas es mínimo. Este libro posee su propia página Web en www.pic16f84a.com que pretende ser un lugar de encuentro entre todos aque- llos que utilicen el libro, donde podrán intercambiar ideas, realizar consultas, descargar actualizaciones de los proyec- tos y también descargar apuntes de conocimientos necesarios. MMIICCRROOCCOONNTTRROOLLAADDOORR PPIICC1166FF8844 Desarrollo de proyectos" Índice Extractado: Microcontrolador PIC16F84.Periféricos bási- cos. Grabación de microcontroladores PIC. Organización de la memoria. Arquitectura Interna. Ensamblador. MPLAB. Programación elemental. Saltos. Subrutinas. Manejo de tablas. Subrutinas de retardo. LCD. EEPROM de datos. TIMER0. Otros recursos. Interrupciones de entradas. Interrupción por TIMER0. Teclado matricial. Comunicación con el ordenador. Bus I2C. 24LC256, memoria EEPROM en bus I2C. DS1624, Termómetro en BUS I2C. DS1307, reloj calendario en bus I2C.SAA1064, controla- dor de display. PCF8574, expansor de bus I2C. PCF8591, ADC y DAC en bus I2C. Bus de una línea. Motores de corriente continua. Motores paso a paso. Servomotores de radiocontrol. Sensores para microbótica. Construcción de un microrobot. 50-64 MICROCONTROLADORES2 26/4/04 10:50 Página 61
  • 13. MICROCONTROLADORES 62RESISTOR LOS BYTES DE DATOS Un segmento queda activado si el correspondiente bit esta a "1". Los bits de datos D17 al Dl0 corresponden al dígito 1, D27:D20 al dígito 2, D37:D30 al dígito 3 y D47:D40 al dígito 4. El bit de mas peso MSB de estos datos se corresponden con las salidas P8 y P16, los de menos peso LSB con las salidas Pl y P9. POWER ON RESET Esta señal se genera internamente y pone todos los bits a "0", resultando una visualización en blanco para los 4 dígitos. Únicamente se activa el flag PR del byte de estado. SALIDAS MULTIPLEXADAS Las líneas de salida MXl y MX2 se activan alternativamente en el modo dinámico con una frecuencia que se obtiene desde el oscilador interno. Y como se puede ver en la figura 21, se pueden colocar cuatro displays. Para la selección de los displays seleccio- nados en cada momento se necesita conectar dos transistores que trabajan en corte o saturación. En el modo estático únicamente se activa MXl con lo que solo se vi- sualiza sobre 2 dígitos, como puede verse en la figura 22. Seguidamente vamos a probar el funcionamiento del controlador de dis- plays en modo dinámico conectando a las líneas SDA y SCL del SAA1046 las correspondientes del PIC16F876 (RC4/SDA y RC3/SCL), además co- mo solo vamos a utilizar un controlador con cuatro displays como el de la fi- gura 21, pondremos la patilla ADR a masa, por lo que la dirección del dis- positivo será b’01110000’. El progra- ma que vamos a cargar (I2C_SAA1064_2.asm) en el micro- controlador va a presentar el mensaje "HOLA" en los displays, para ello se- guiremos el procedimiento de escritu- ra que se indica en la figura 20, es de- cir seguiremos la siguiente secuencia: q El microcontrolador que trabaja co- mo Master envía la condición de START q Seguidamente se manda el byte de direccionamiento que en nuestro ca- so es b’01110000’. q Después se manda el byte de ins- trucción donde los bits SC, SB y SA apuntan a uno de los ocho registros internos en el cual se escribirá el by- te de datos que le sigue inmediata- mente detrás. q Si el registro direccionado es el de control a continuación debe enviarse la palabra de control. Después se transmite la información que aparecerá en cada uno de los displays. q Finalmente el Master mandará una condición de STOP. Figura 21.- Conexión de cuatro displays al SAA1064 en modo dinámico Figura 22.- Conexión de dos displays al SAA1064 en modo estático 50-64 MICROCONTROLADORES2 26/4/04 10:50 Página 62
  • 14. MICROCONTROLADORES 63RESISTOR ;************************************************************************************* ; Programa I2C_SAA1064_2.asm Fecha : 20-Abril-2004 ;El dispositivo I2C SAA1064. Controlador de displays de 7 segmentos ;Se trata de visualizar sobre los 4 displays 7 segmentos conectados al SAA1064. ;el mensaje "HOLA" ; Revisión : 0.0 Programa para PIC16F87X ;Velocidad del Reloj: 4 MHz Reloj Instrucción: 1 MHz = 1 uS ; Perro Guardián :seshabilitado Tipo de Reloj : XT ; Protección del código: OFF ;************************************************************************************** List p=16F876 ;Tipo de procesador include "P16F876.INC" ;Definiciones de registros internos ; __config _XT_OSC & _CP_OFF & _WRT_ENABLE_ON & _BODEN_ON & _LVP_OFF & _WDT_ON ; org 0x00 ;Vector de Reset ; goto Inicio org 0x05 ;Salva el vector de interrupción goto Inicio ;**************************************************************************** ;I2C_EmviaStart: Envía la condición de Start I2C_EmviaStart bcf PIR1,SSPIF bsf STATUS,RP0 ;Selecciona página 1 bsf SSPCON2,SEN ;Activa secuencia de inicio bcf STATUS,RP0 ;Selecciona página 0 Espera_Start btfss PIR1,SSPIF ;¿Fin de secuencia de tranmisión? goto Espera_Start ;Espera fin de transmision return ;**************************************************************************** ;Send_Byte: Transmite el byte del W vía I2C. La rutina finaliza cuando se recibe /ACK I2C_EnviaByte bcf PIR1,SSPIF movwf SSPBUF ;Byte a transmitir pasa al buffer de salida Espera_Byte btfss PIR1,SSPIF ;¿Se ha recibido el bit /ACK? goto Espera_Byte ;No, esperar return ;**************************************************************************** ;Send_Stop: Envía la secuencia de stop I2C_EnviaStop bcf PIR1,SSPIF ;Restaura el flag del módulo MSSP bsf STATUS,RP0 ;Seleciona página 1 bsf SSPCON2,PEN ;Activa secuencia de stop bcf STATUS,RP0 Espera_Stop btfss PIR1,SSPIF ;¿Fin de secuencia de Stop ? goto Espera_Stop ;Esperar Stop return ;******************************************************************************************* ;Read_Byte: Lee un byte procedente del dispositivo I2C selecionado y lo devuelve en W ;Seguidamente se genera y transmite el bit /ACK I2C_LeeByte bcf PIR1,SSPIF ;Restaura el flag del módulo MSSP bsf STATUS,RP0 ;Selecciona página 1 bsf SSPCON2,RCEN ;Activa el modo receptor bcf STATUS,RP0 ;Selecciona página 0 50-64 MICROCONTROLADORES2 26/4/04 10:50 Página 63
  • 15. MICROCONTROLADORES 64RESISTOR Read_Waitbtfss PIR1,SSPIF ;Recibidos los 8 bits ?? goto Read_Wait;No, esperar bcf PIR1,SSPIF ;Restaura el flag del módulo MSSP bsf STATUS,RP0 ;Selecciona página 1 bcf SSPCON2,ACKDT ;Pone bitACK a "0" bsf SSPCON2,ACKEN ;Aciva la secuencia de generación del bitACK bcf STATUS,RP0 ;Selecciona página 0 Espera_ACK btfss PIR1,SSPIF ;¿Ha finalizado la decuenciaACK? goto Espera_ACK ;No, esperarACK movf SSPBUF,W ;Lee el byte recibido return ;******************************************************************************************* ;Programa principal Inicio clrf PORTC bsf STATUS,RP0 ;Selecciona banco 1 movlw b'11111111' movwf TRISC ;RC3/SCL y RC4/SDA entradas movlw b'11001111' movwf OPTION_REG ;Preescaler de 128 asociado al WDT movlw b'10000000' movwf SSPSTAT ;Velocidad estándar con niveles I2C movlw .9 movwf SSPADD ;Velocidad del bus I2C 100KHz bcf STATUS,RP0 ;Selecciona banco 0 ;Módulo MSSP en el modo Master I2C movlw b'00101000' movwf SSPCON ;Módulo MSSP en On Visualiza call I2C_EmviaStart ;Envía secuencia de inicio movlw b'01110110' ; call I2C_EnviaByte ;Dirección del dispositivo SAA1064 en la PLUS movlw .0 ; call I2C_EnviaByte ;Envía byte de instrucción movlw b'01000111' ; call I2C_EnviaByte ;Envía byte de control movlw b'01110110' ;segmentos correspondientes a la "H" call I2C_EnviaByte ;Visualiza sobre el dígito D1 movlw b'00111111' ;segmentos correspondientes a la "O" call I2C_EnviaByte ;Visualiza sobre el dígito D2 movlw b'00111000' ;segmentos correspondientes a la "L" call I2C_EnviaByte ;Visualiza sobre el dígito D3 movlw b'01110111' ;segmentos correspondientes a la "A" call I2C_EnviaByte ;Visualiza sobre el dígito D4 call I2C_EnviaStop ;Envía secuencia de stop goto $ ;************************************************************************************* ORG 0x1F00 bcf PCLATH,4 bcf PCLATH,3 ;Selecciona la página 0 goto Inicio ;************************************************************************************* end ;Fin del programa fuente 50-64 MICROCONTROLADORES2 26/4/04 10:50 Página 64