Está en la página 1de 28

Tema 2 Arquitectura del PIC16F877

Prof.: Yoel Pire


ypire@unexpo.edu.ve
2020

Contenido:
1. Recursos
2. Organización de la memoria de datos
3. Registro
4. Registro de funciones especiales (SFR)
5. El registro STATUS (parte I Direccionamiento)
6. Direccionamiento de la memoria de datos RAM
7. Memoria de programa
8. Contador de programa (PC)
9. Pila (stack)
10. El registro STATUS (parte II Banderas)
11. Aspecto Físico del microcontrolador PIC16F877
12. Puertos
13. Alimentación eléctrica del PIC
14. Palabra de Configuración
15. Oscilador
16. Sistema mínimo (conexión electrónica del PIC)

Prof.: Yoel Pire


Microcontroladores – Tema 2

Arquitectura del PIC16F877 2

Recursos del PIC16F877

 Arquitectura Harvard. Con procesador tipo RISC


 Voltaje de alimentación comprendido entre 2 y 5,5 V
 Encapsulado de 40 pines
 Memoria de programa tipo Flash de 8K palabra de 14 bit.
 Memoria de dato RAM de 386 Bytes .
 Memoria de dato EEPROM de 256 Byte
 Pila de 8 niveles.
 Direccionamiento de memoria RAM directo e indirecto.
 Frecuencia máxima de 20Mhz.
 Juego de 35 instrucciones de 14 bit de longitud .
 Cada instrucción se ejecuta en un ciclo, excepto las de salto que toman dos .
 14 fuentes de interrupciones.
 5 puertos de entrada salida (E/S) (A,B,C ,D,E)
 3 temporizadores (Timers)
 8 canales de conversor A/D de 10 bit de resolución.
 2 módulos CCP
 Comunicación serial y paralela

Comentario:

Existe otro microcontrolador llamado PIC16F877A el cual se le agrego la terminación ‘’A’’ este
se diferencia con el PIC16F877.

La diferencia entre ambos micro radica en el modulo de convertidor analógico digital (CAD) que
se estudiara mas adelante.

Del resto ambos micro son similares en recursos por lo que se puede usar cualquiera de los dos
sin ningún problema.

Es importante aclarar esto ya que a los dos micro se los trata por igual pero a la hora de
programarlo hay que especificar si se trata del PIC16F877 o del PIC16F877A

Prof.: Yoel Pire


Microcontroladores – Tema 2

Arquitectura del PIC16F877 3

Organización de la memoria de datos


Tiene posiciones de memoria implementada en :

 RAM (Volátil de 368byte)


 EEPROM (No volátil de 256byte)

Memoria de datos RAM


Se alojan los registros del funcionamiento del microcontrolador (SFR) y del manejo de todos
los periféricos, también se encuentra los registros usados por el programador (GPR)

Registros de funciones especiales (SFR)


Gobiernan al procesador y recursos , se encuentran en las posiciones iniciales de la memoria
RAM

Registros de propósito general (GPR)


Son posiciones de memoria para almacenar valores del programa , son declarados para ser
usados por el programador.

La memoria de datos RAN esta dividida en cuatro bancos de 128 byte cada uno como se
muestra a continuación

Figura 2.1 - Organización de la memoria RAM


Banco 0 Banco 1 Banco 2 Banco 3

SFR SFR SFR SFR

GPR GPR GPR GPR

Prof.: Yoel Pire


Microcontroladores – Tema 2

Arquitectura del PIC16F877 4

Según el DataSheet del PIC16F877. La memoria de datos RAM esta representada de la


siguiente manera.

Prof.: Yoel Pire


Microcontroladores – Tema 2

Arquitectura del PIC16F877 5

Comentario:

Las direcciones de cada registro (File Address) están representada en números


hexadecimales, y se utiliza la letra h para indicar que es hexadecimal.

Observar en la figura anterior que:

El banco 0 esta comprendido entre 00h hasta 7Fh

 Los SFR del banco 0 están entre 00h hasta 1Fh


 Los GPR del banco 0 están entre 20h hasta 7Fh

El banco 1 esta comprendido entre 80h hasta FFh

 Los SFR del banco 0 están entre 80h hasta 9Fh


 Los GPR del banco 0 están entre A0h hasta EFh

El banco 2 esta comprendido entre 100h hasta 17Fh

 Los SFR del banco 0 están entre 100h hasta 10Fh


 Los GPR del banco 0 están entre 110h hasta 11Fh

El banco 3 esta comprendido entre 180h hasta 1FFh

 Los SFR del banco 0 están entre 180h hasta 18Fh


 Los GPR del banco 0 están entre 190h hasta 1EFh

Prof.: Yoel Pire


Microcontroladores – Tema 2

Arquitectura del PIC16F877 6

Registro
 Un registro es un grupo de bit.

 En este caso los registros de este microcontrolador son grupo de 8bit, es decir de 1Byte (un
Byte es igual a 8bit).

 Los registros son una estructura de datos, esta formados por un vector de 8 elementos,
donde cada elemento representa el estado lógico de un bit (cero o uno)

 Se suelen representar con un rectángulo dividido en 8 partes, tal como se muestra a


continuación:

NOMBRE DEL REGISTRO


7 6 5 4 3 2 1 0

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

 Los registros van desde el bit 0 hasta el bit 7 (8bit en total incluyendo el 0)

 Cada registro tiene una dirección especifica en la memoria RAM.

 Los SFR (Registros de funciones especiales ) tienen asociado un nombre proporcionado por
el fabricante (los nombres están en letras mayúsculas). A su vez cada bit del registro tienen
un nombre también. Ejemplo de un SFR (ver memoria de datos RAM pagina 4)

 STATUS
 PORTA
 TRISA
 ADCON1

 Cada uno de los bit de un registro solo puede tener un valor lógico binario, es decir tomara el
valor 0 (cero, bajo) u 1 (uno, alto) según sea el caso.

 Cada bit representa un estado lógico y dependiendo del valor (0 u 1) en el caso de los SFR
realizara una función especificada por el fabricante.

Es importante familiarizarse con los registros para manipular adecuadamente los


elementos interno de los PIC, para ello hay que conocer exactamente la misión que
cumple cada uno de los registros junto con los bit que lo conforman.

Prof.: Yoel Pire


Microcontroladores – Tema 2

Arquitectura del PIC16F877 7

Ejemplo de un Registro de funciones especiales (SFR)

Ejemplo 1:
STATUS
7 6 5 4 3 2 1 0

1 1 1 1 0 0 0 0

Aquí podemos observar que el nombre del registro es STATUS y que los bit < 0 al 3 > tienen un
estado lógico cero (bajo) y que los bit <4 al 7> tienen un estado lógico uno (alto). Este registro
se encuentra repetido en los 4 bancos de la memoria RAM, en la dirección:

 03h del banco 0


 83h del banco 1 ver memoria de datos RAM pagina 4
 103h del banco 2 Y localice este registro.
 183h del banco 3

Ejemplo 2:
PORTA
7 6 5 4 3 2 1 0

0 0 1 1 0 0 1 0

El nombre del registro es PORTA y en este caso los bit <7,6,3,2,0> toman el estado lógico bajo
(un cero) mientras que los bit <5,4,1> están en estado lógico alto (uno). El registro PORTA esta
ubicado en la posición 05h del banco 0

Ejemplo 3:
TRISA
7 6 5 4 3 2 1 0

1 x 0 1 0 1 1 0

El registro se llama TRISA . Se observa que el bit <6> tienen una x (don’t care -no importa-) eso
significa que no sabemos cual valor toma ese bit (puede ser un cero o uno) en los bit <7,4,2,1>
toma el estado lógico uno y los demás están a cero. Esta ubicado en la posición 85h del banco
numero 1 del la memoria de datos RAM

Nota: recuerde que los SFR tienen nombres proporcionados por el fabricante (siempre en
letras mayúsculas) mientras que los GPR el nombre es asignado por el programador.

Prof.: Yoel Pire


Microcontroladores – Tema 2

Arquitectura del PIC16F877 8

Direccionamiento de la memoria de datos RAM

Cuando se habla de direccionamiento, se refiere a la forma de acceder a la memoria. Existen


dos tipos de direccionamiento:

• Directo
• Indirecto

El direccionamiento directo se realiza a través del registro STATUS con los bit RP1 y RP0 <6,5>
mientras que el indirecto con el bit IRP <7> del registro STATUS mas el registro FSR

Se requieren 9 bit para direccionar la memoria RAM de datos , esos bit están distribuidos de la
siguiente manera:

Direccionamiento Directo Direccionamiento Indirecto

2 bit en el registro STATUS (RP0 y RP1) 1 bit en el registro STATUS (IRP)


7 bit en la propia instrucción 8 bit en el registro FSR

El direccionamiento mas utilizado es el directo mientras que el indirecto se utiliza en algunas


aplicaciones especificas.

Cuando se este programando es necesario acceder al banco en donde se encuentre el registro


en especifico, ya sea un SFR o GPR. Esto se logra con las debidas instrucciones a través del
registro STATUS.

*Nota: No confundir SFR con FSR

FSR es un registro de funciones especificas ubicado en la posición 04h del banco 0 y a su


vez esta implementado en los demás banco. Se utiliza para el direccionamiento indirecto

**Nota: Los bit se suelen indicar encerrados entre los signos mayor y menor .

Ejemplo 1: <6> quiere decir que se hace referencia al bit 6


Ejemplo 2: <4,6,7> en ese caso se hace referencia a los bit 4, 6 y 7

Prof.: Yoel Pire


Microcontroladores – Tema 2

Arquitectura del PIC16F877 9

Según el DataSheet del PIC16F877. El direccionamiento directo e indirecto de la memoria de


datos RAM .

Comentario:

Esto pareciera complicado pero no lo es. El micro tiene que ubicar los datos de la memoria de alguna
forma a través de una dirección única; Según la imagen de arriba esa es la manera en que este
microcontrolador en especifico lo hace.

Solo hay que saber lo siguiente… como la memoria de DATOS RAM es de 368 Bytes eso significa que
se necesitan x cantidad de bit para direccionar esta parte de la memoria. Si utilizáramos 8 bit ocurriría
lo siguiente

28 = 256

Como se pueden dar cuenta con 8 bit podemos direccionar solo 256 posiciones, pero 8 bit no es
suficiente para movernos en el rango requerido que es 368. En cambio con 9 bit

29 = 512

Bueno en este caso 9 bit nos permite direccionar 512 posiciones. Pero este micro solo se usaran las
368 primeras posiciones (porque la memoria es de 368 Byte), el resto que sobran no son utilizados.

En conclusión se requieren 9 bit para direccionar la memoria RAM de datos. Y en la imagen de arriba
explica como están distribuidos esos 9 bit según el tipo de direccionamiento (directo o indirecto)

Prof.: Yoel Pire


Microcontroladores – Tema 2

Arquitectura del PIC16F877 10

El registro STATUS (parte I - Direccionamiento)


Este registro tiene varias funciones. Una de ella es para seleccionar el banco de trabajo . También
sirve para saber ciertas condiciones de las operaciones lógicas

El registro tiene el siguiente aspecto

STATUS
7 6 5 4 3 2 1 0

IRP RP1 RP0 #TO #PD Z DC C

Como pueden observar, cada bit tiene un nombre. Los bit <0,1,2> tienen por nombre C, DC, Z
respectivamente.

La función de los bit <6,5> Se utiliza principalmente para seleccionar el banco de la memoria de
datos RAM a través de los bit 5 y 6 (RP0 yPR1) según la tabla 1 (ver tabla)

Tala 1. Selección del banco


Banco RP1 RP0
0 0 0
1 0 1
2 1 0
3 1 1

Si queremos acceder al banco 1 hay que colocar el bit RP0=1 y el bit RP1=0 tal como se muestra a
continuación.
STATUS
7 6 5 4 3 2 1 0

IRP 0 1 #TO #PD Z DC C

Utilizando las instrucciones adecuada podemos hacer que el bit <5> RP0 tome el valor lógico alto
(uno), y que el bit <6> RP1 tome el valor lógico bajo (cero) de esa manera le estaremos indicando a
la CPU que direccione la memoria hacia el banco 1.

Nota: Es de vital importancia indicar el banco al que queremos acceder antes de


manipular el registro que a su vez debe estar en el mismo banco al cual accedimos .

Prof.: Yoel Pire


Microcontroladores – Tema 2

Arquitectura del PIC16F877 11

Memoria de programa

 Almacena todas las instrucciones del código que ejecutara el microcontrolador.


 Se graba previamente mediante un equipo programador o grabador.
 Esta organizada en palabras de 14bits .
 Cada instrucción ocupa una posición de memoria (una palabra de 14bits).
 La primera posición de memoria (la dirección 0000h) de este micro se conoce como
VECTOR DE RESET.
 El micro inicia en la dirección 0000h tras un Reinicio o Reset.
 La dirección 0004h se conoce como el VECTOR DE INTERRUPCIÓN.
 Esta memoria esta dividida en 4 paginas de 2K cada una.
 La memoria esta hecha con tecnología tipo Flash.

*Nota: La h significa que el numero esta en hexadecimal. Ejemplo 0004h


**Nota: no confundir memoria de programa con memoria de datos RAM

Figura. Memoria de Programa


13 0
0000h

Pagina 0
2K
07FFh

0800h

Pagina 1
2K
0FFFh
1000h

Pagina 2
2K
17FFh

1800h

Pagina 3
2K
1FFFh

• La pagina 0 esta desde la posición 0000h hasta la 07FFh


• La pagina 1 esta desde la posición 0800h hasta la 0FFFh
• La pagina 2 esta desde la posición 1000h hasta la 17FFh
• La pagina 3 esta desde la posición 1800h hasta la 1FFFh
Prof.: Yoel Pire
Microcontroladores – Tema 2

Arquitectura del PIC16F877 12

Contador de programa (PC)

 Es un registro de 13 bits que tiene una ubicación propia.


 El microcontrolador ejecuta la instrucción que el PC indique o apunte, es decir el PC indica
la dirección de la instrucción a ejecutar.
 Automáticamente el PC se incrementa en paso de uno en uno (Ascendente). Sin embargo
dependiendo de la instrucción (goto, call, return, retlw) el PC puede realizar
un salto hacia adelante o hacia atrás.

Pila

 Una pila (stack en inglés) es una lista ordenada o estructura de datos que permite
almacenar y recuperar datos. En este caso almacena direcciones .
 Este microcontrolador puede almacenar 8 direcciones en la pila.
 Los 8 niveles son de 13 bit cada uno, al igual que el PC
 El modo de acceso a sus elementos es de tipo LIFO (del inglés Last In, First Out, «último en
entrar, primero en salir»).
 La función de una pila es de ser un buffer temporal en que se guarda el PC (contador de
programa).

A continuación se representa al contador de programa (PC) junto a la pila de 8 niveles

Figura. Contador de Programa (PC) y Pila de 8 niveles


12 0
PC

12 0
Nivel 1
Nivel 2
Nivel 3
Nivel 4
:
Nivel 8

Prof.: Yoel Pire


Microcontroladores – Tema 2

Arquitectura del PIC16F877 13

Comentario:

‘’Una metáfora que se utiliza con frecuencia es la idea de una pila de platos dispuesta en
una cafetería en un contenedor con un muelle que mantiene la pila a nivel. En esa serie,
solo el primer plato es visible y accesible para el usuario, todos las demás permanecen
ocultos. Como se añaden nuevos platos, cada nuevo plato se convierte en la parte
superior de la pila, permaneciendo escondidos debajo los demás. A medida que el plato
superior se extrae de la pila, el inmediatamente inferior pasa a ocupar la parte superior de
la pila. Dos principios importantes son ilustrados por esta metáfora: únicamente se
accede al plato que se encuentra en la parte superior (el último en depositarse), y el resto
de platos de la pila permanecen ocultos. Para extraer un plato distinto al superior habrá
que extraer antes los que se encuentran sobre él. ‘’

Fuente: https://es.wikipedia.org/wiki/Pila_(informatica)

Prof.: Yoel Pire


Microcontroladores – Tema 2

Arquitectura del PIC16F877 14

De acuerdo al DataSheet del microcontrolador PIC16f877. La memoria de programa junto a la


PILA y el PC están representados de la siguiente manera

 Las instrucciones CALL, RETURN, RETFIE y REETLW son las que afectan y hacen uso de la pila.

 La instrucción CALL se puede utilizar todas las veces que el programador necesite; Pero como
la pila es de 8 niveles, eso significa que solo se podrá utilizar la instrucción CALL una cantidad
máxima de 8 veces de manera anidada (un CALL dentro de otro CALL)

Prof.: Yoel Pire


Microcontroladores – Tema 2

Arquitectura del PIC16F877 15

El registro STATUS (parte II - Banderas)

STATUS
7 6 5 4 3 2 1 0

IRP RP1 RP0 #TO #PD Z DC C

La función de los bit <5,6,7> se utilizan para seleccionar el banco de la memoria de datos RAM.

Los bit <0,1,2,3,4> son banderas las cuales sirve para indicar algún evento interno dentro del
microcontrolador.

Además del registro STATUS existen otros registro que albergan bandera en su interior para
señalizar ciertas condiciones del microcontrolador.

Los bit #TO, #PD Sirven para indicar las causas que ha provocado la reinicialización del
microcontrolador. El símbolo de # (numeral) indica que son activos en bajo.

Los bit C,DC y Z del registro STATUS son las banderas de señalización en las operaciones lógicas
aritméticas. Y son afectadas por ciertas instrucciones (no todas las instrucciones afectan a estas
banderas).

• Bit <0> C Acarreo / llevada del 8vo bit: Se pone a 1 automáticamente cuando existe acarreo
en el bit de mas peso en la instrucción de suma. También actúa como señalizador de llevada
en las instrucciones de restas, pero en este caso la correspondencia es inversa, es decir, si
vale cero hay llevada.

• Bit <1> DC Acarreo / llevada del 4vo bit: Funciona igual que C pero en el 4to bit, es utilizado
en operaciones con números BCD.

• Bit <2> Z Señalizador de cero: Se pone a 1 automáticamente cuando el resultado de una


operación es cero. En caso contrario si el resultado en distinto a cero se pone a cero

Es necesario aprenderse de memoria la función de los bit RP1, RP0, Z y C ya que estos son
muy utilizados.

STATUS
7 6 5 4 3 2 1 0

IRP RP1 RP0 #TO #PD Z DC C

Prof.: Yoel Pire


Microcontroladores – Tema 2

Arquitectura del PIC16F877 16

Aspecto físico del microcontrolador PIC16F877


Se presenta el diagrama de asignación y conexión de los pines del microcontrolador PIC16F877

Figura. Diagrama del PIC16F877


#MCLR 1 40 RB7
RA0 2 39 RB6
RA1 3 38 RB5
RA2 4 37 RB4
RA3 5 36 RB3
RA4 6 35 RB2
RA5 7 34 RB1
RE0 8 33 RB0
RE1 9 32 VDD
RE2 10 31 VSS
VDD 11 30 RD7
VSS 12 29 RD6
OSC1 13 28 RD5
OSC2 14 27 RD4
RC0 15 26 RC7
RC1 16 25 RC6
RC2 17 24 RC5
RC3 18 23 RC4
RD0 19 22 RD3
RD1 20 21 RD2

• Pin 1. Es el MASTER CLEAR y se utiliza para reiniciar el microcontrolador


• Pin 2 al 7. Es el puerto A
• Pin 8 al 10 Es el puerto E
• Pin 11, 12, 31 y 32 corresponde a los pin de la alimentación
• Pin 13 y 14 es la entrada del oscilador (señal de reloj del micro)
• Pin 15 al 18 y del 23 al 26 Es el puerto C
• Pin 19 al 22 y del 27 al 30 Es el puerto D
• Pin de 33 al 40 Es el puerto B

En la imagen solo se especifican la función principal de cada pin. Ya que los


microcontroladores PIC tienen los pines multiplexados los cuales permiten configurarlos
para realizar otras funciones.

Por ejemplo: el pin 2 RA0/AN0 del micro aparte de ser RA0 , también puede ser AN0, es
decir tiene dos funciones multiplexada y dependiendo de la configuración interna de los
registro, este pin puede trabajar como entrada o salida digital (RA0) o como entrada
analógica (AN0)

En la próxima pagina se presenta el diagrama completo según el DataSheet

Prof.: Yoel Pire


Microcontroladores – Tema 2

Arquitectura del PIC16F877 17

El Diagrama de los pines del microcontrolador PIC16f877. De acuerdo al DataSheet De acuerdo .

Como se Observa cada pin tiene mas de una función multiplexada, están separadas por
una diagonal (/)

Pero cada pin solo puede trabajar en un solo modo según la programación.

Por ahora se estudiara la función de los pines como puertos digitales, ya sea como
entrada o salida.

Prof.: Yoel Pire


Microcontroladores – Tema 2

Arquitectura del PIC16F877 18

Puertos
Este microcontrolador esta conformado por 5 puertos (PORT) que van de la A a la E:

 PORTA
 PORTB
 PORTC
 PORTD
 PORTE

Los puertos representan el estado lógico de cada bit. A continuación se presenta una tabla con la
cantidad de entradas y salida (cada uno de los bit que posee cada puerto) y del numero de pin
correspondiente al microcontrolador.

Tabla. Puertos del PIC16F877


Puerto Entradas/salidas (E/S) Bit N° de Pin

RA0 2
RA1 3
RA2 4
PORTA 6
RA3 5
RA4 6
RA5 7

RB0 33
RB1 34
RB2 35
RB3 36
PORTB 8
RB4 37
RB5 38
RB6 39
RB7 40
RC0 15
RC1 16
RC2 17
RC3 18
PORTC 8
RC4 23
RC5 24
RC6 25
RC7 26

RD0 19
RD1 20
RD2 21
RD3 22
PORTD 8
RD4 27
RD5 28
RD6 29
RD7 30

RE0 8
PORTE 3 RE1 9
RE2 10

Prof.: Yoel Pire


Microcontroladores – Tema 2

Arquitectura del PIC16F877 19

Puertos
o Todos los puertos (A,B,C,D,E) pueden funciona como estrada o salidas (E/S) digitales.

o Solo los puerto A y E pueden funcionar como entradas analógicas.

o Los puertos B,C y D son de 8 bit, mientras que los puerto A y E son de 6 bit y 3bit
respectivamente

o Cada uno de los bit que conforman los puertos tienen funciones multiplexadas, es decir que
un bit puede tener mas de una función. Dicha función es configurada en el programa fuente.

o Para configurar un puerto como entrada se debe colocar un uno (1) y para configurarlo como
salida se debe colocar un cero (0) en el registro correspondiente al puerto.

 El registro TRISA configura al puerto A ya sea como entrada (1) o salida (0)
 El registro TRISB configura al puerto B ya sea como entrada (1) o salida (0)
 El registro TRISC configura al puerto C ya sea como entrada (1) o salida (0)
 El registro TRISD configura al puerto D ya sea como entrada (1) o salida (0)
 El registro TRISE configura al puerto E ya sea como entrada (1) o salida (0)

Como se pueden dar cuenta, existe un registro llamado TRISX para cada puerto, donde la
x es la letra que corresponde al puerto, y sirve para configurar los puertos del
microcontrolador ya sea como una entrada o como una salida.

El registro TRISA esta en la posición de memoria 85h del banco 1


El registro TRISB esta en la posición de memoria 86h del banco 1
El registro TRISC esta en la posición de memoria 87h del banco 1
El registro TRISD esta en la posición de memoria 88h del banco 1
El registro TRISE esta en la posición de memoria 89h del banco 1

Todos las TRISX se encuentran en el banco 1. eso quiere decir que para configurar los
puertos se debe primero ingresar al banco 1 con los bit RP0 y RP1 del registro STATUS

Prof.: Yoel Pire


Microcontroladores – Tema 2

Arquitectura del PIC16F877 20

Puertos

Ejemplo 1: Configure el puerto B como entrada.

Solución: Para configurar todo el puerto B como entrada se debe colocar a 1 los bit del registro
TRISB entonces:

TRISB=11111111

Por lo tanto el registro quedara así:

TRISB
7 6 5 4 3 2 1 0

1 1 1 1 1 1 1 1

Ejemplo 2: Configure el puerto C como salida.

Solución: Para configurar todo el puerto C como salida se debe colocar a 0 los bit del registro
TRISC entonces:

TRISC=00000000

Por lo tanto el registro quedara así:

TRISC
7 6 5 4 3 2 1 0

0 0 0 0 0 0 0 0

Ejemplo 3: ¿Como esta configurado el puerto?, según el siguiente registro:


TRISD
7 6 5 4 3 2 1 0

1 0 0 1 0 1 1 0

Solución: Se trata del puerto D y esta configurado como entrada en los bit <7,4,2,1> y como salida
en los bit <6,5,3,0>

Prof.: Yoel Pire


Microcontroladores – Tema 2

Arquitectura del PIC16F877 21

Puertos

Ejemplo 4: ¿Como esta configurado el puerto?, según el siguiente registro:

TRISE
7 6 5 4 3 2 1 0

x x x x x 1 0 1

Solución: Se trata del puerto E y esta configurado como entrada en los bit <2 y 0> y como salida
en el bit <1>.

*Nota:

En el ejemplo 3 se puede observar que un mismo puerto puede tener bit como entrada y
otros como salida.

Con respecto al ejemplo 4, a los bit <7 al 3> se le colocan una x (don’t care) ya que el
puerto E es de 3 bit por lo tanto los bit <7 al 3> no se toman en cuenta y pueden ser cero
o uno.

El programador decide que puerto trabajaran como entradas o como salidas mediante la
configuración de los registros TRIS en el código fuente según el diseño electrónico del
circuito al cual va estar destinado el microcontrolador, es decir:

Una entrada se utiliza para conectar: un pulsador, un teclado, un sensor, una señal.

Una salida es utilizada para conectar: un LED, una pantalla LCD, la activación de una carga
(por medio de un transistor y relé), un display BCD 7 segmentos, otro circuito integrado
compatible (con niveles TTL).

Prof.: Yoel Pire


Microcontroladores – Tema 2

Arquitectura del PIC16F877 22

Alimentación eléctrica del PIC

Los niveles de voltaje de los PIC oscilan entre 2 y 5,5 V.

El voltaje de alimentación ideal es de 5V.

Según el DataSheet del PIC16F877 los pines de alimentación son:

 Pin 11 VDD
 Pin 12 VSS
 pin 31 VSS
 Pin 32 VDD

Donde: VDD es alimentación positiva (5V)


Vss es alimentación negativa ( 0V -tierra-)

Por lo tanto los Pin 11 y 32 se conectan al positivo, y los pin 12 y 31 al negativo.

Figura. Conexión de alimentación

#MCLR 1 40 RB7
RA0 2 39 RB6
RA1 3 38 RB5
RA2 4 37 RB4
RA3 5 36 RB3 +5V
RA4 6 35 RB2
+5V RA5 7 34 RB1
RE0 8 33 RB0
RE1 9 32 VDD
RE2 10 31 VSS
VDD 11 30 RD7
VSS 12 29 RD6
OSC1 13 28 RD5
OSC2 14 27 RD4
RC0 15 26 RC7
RC1 16 25 RC6
RC2 17 24 RC5
RC3 18 23 RC4
RD0 19 22 RD3
RD1 20 21 RD2

Prof.: Yoel Pire


Microcontroladores – Tema 2

Arquitectura del PIC16F877 23

Palabra de Configuración
 Se utiliza para seleccionar ciertas configuraciones del microcontrolador .
 Es un registro de 14 bit propio en la posición 2007h (mas haya de la memoria de programa)
 Solo puede accederse durante la programación.
 Hay que configurarlos en el programa fuente (si se configuran mal el micro no funcionara
según lo deseado ya sea al principio o en algún punto del programa)

CONFIG
13 12 11 10 9 8 7 6 5 4 3 2 1 0

CP1 CP0 DEBUG - WRT CPD LVP BODEN CP1 CP0 PWRTE WDTE FOSC1 FOSC0

Bit <0,1> Oscilador (FOSC1, FOSC2): Estos son los bit de selección del tipo de oscilador que usara el microcontrolador.
puede trabajar en modo LP, XT HS, RC

Bit <2> Watch Dog Timer Enable (WDTE): El "Perro Guardián" (algunos prefieren llamarle simplemente "Guardián") es
otra característica de seguridad en los microcontroladores cuyo objeto es prevenir que el microcontrolador se quede
indefinidamente bloqueado o "colgado" debido a fallas en la lógica del software y en algunos casos debido a fallas de
hardware . Se trata de un contador que trabaja con los impulsos de su propio oscilador y que provoca un reset cuando se
desborda . cuando el conteo llega a su máximo, se produce efectivamente el reinicio de todo el sistema, dándole al mismo
la posibilidad de restaurarse a su funcionamiento normal. En aplicaciones simples que no requieren alta confiabilidad
generalmente es más práctico dejarlo deshabilitado (especialmente para los principiantes).

Bit <3> Power up Timer (PWRT) : El temporizador de Power-up proporciona un retardo fijo de unos 72ms desde que se
produce el pulso de POR. Mientras que dura esta temporización el micro se mantiene en un estado de RESET. Este retardo
PWRT permite a la tensión VDD crecer hasta un valor aceptable de alimentación para el propio micro y para el resto de
circuitería que exista en la tarjeta y que se alimente desde la misma fuente de alimentación.

Bit <4,5> Code Protection bits (CP1,CP0): Bits de Protección de Código. Cuando se ha activado la protección de código en
un dispositivo, la memoria de éste ya no puede ser re-leída para verificación; de ahí que al verificar el código programado
se obtenga un mensaje de error que haría suponer que el código de programa no se ha grabado correctamente, sin
embargo éste no es el caso.

Bit <6> Brown out reset (BODEN): Detecta si la tensión de alimentación cae por debajo de un determinado valor (BVDD)
provocando un RESET del dispositivo. Esto asegura que el dispositivo no continúe con la ejecución del programa si la
alimentación se sale del rango de funcionamiento válido.

Bit <7> Low Voltage Programming (LVP): Programación en bajo Voltaje

Bit <8> Data EE Memory Code Protection (CPD): Protección de código en la memoria EEPROM

Bit <9> FLASH Program Memory Write Enable (WRT): Habilitación de escritura de la memoria de programa FLASH.

Bit <11> In-Circuit Debugger Mode (DEBUG): Habilitador del modo depuración

bit 12-13> FLASH Program Memory Code Protection bits (CP1:CP0):

Prof.: Yoel Pire


Microcontroladores – Tema 2

Arquitectura del PIC16F877 24

Palabra de Configuración

Comentario:

La palabra de configuración se coloca en el código fuente utilizando la directiva


__CONFIG seguido de los parámetros seleccionados por el programador.

El compilador da la opción de colocar un numero en hexadecimal que represente cada


uno de los estados de los bit.

Lo mas importante de la palabra de configuración es, primero, la selección del oscilador


que depende del uso o no del cristal y lo segundo es deshabilitar el perro guardián
(WDTE=OFF).

Prof.: Yoel Pire


Microcontroladores – Tema 2

Arquitectura del PIC16F877 25

Oscilador
El microcontrolador requiere de una señal de reloj (clock) para generar los impulsos que
necesita la CPU para ejecutar las instrucciones. Se utilizan dos pines del micro para introducir
dicha señal. La frecuencia máxima a la que puede trabajar este microcontrolador es de 20Mhz,
pero se puede utilizar frecuencias mas bajas como 16, 8, 4 Mhz. Dependiendo de la velocidad
se deben de seleccionar dos bit de la palabra de configuración (FOSC1-FOSC0), de acuerdo a la
siguiente tabla.

Tabla. Bit de selección de los modo de operación del oscilador


FOSC1 FOSC0 Modo de operación del oscilador

0 0 LP Baja frecuencia (y bajo consumo de potencia)

0 1 XT Cristal / Resonador cerámico externos, (Media frecuencia)

1 0 HS Alta velocidad (y alta potencia) Cristal/resonador

1 1 RC Resistencia capacitor externos

Circuito RC externa es generalmente más económica, pero la frecuencia de oscilación no es


muy estable y varía en función a factores como la precisión de los componentes, el desgaste por
su uso y la temperatura ambiente.

Los osciladores HS, XT y LP representan básicamente el uso de la misma técnica, con la


diferencia de que el tipo HS requiere mayor consumo de potencia; esto debido a que la
ganancia del inversor en el circuito interno del oscilador es mayor, lo cual es necesario a fin de
lograr frecuencias más altas. En cambio, el tipo LP (Low Power) es el que menor ganancia
requiere y por lo tanto tiene menor consumo de potencia y como consecuencia sólo se
alcanzan frecuencias relativamente bajas. El tipo XT es un tipo intermedio entre los dos
anteriores.

si lo que se busca es bajar costos, la elección es usar un circuito RC externa o mejor aún el
oscilador RC interno que muchos microcontroladores actuales traen incorporados y evitar así el
uso de componentes externos adicionales. Si lo que se requiere es precisión, la elección es el
cristal; si adicionalmente se requiere bajo consumo de potencia, un cristal LP de bajo consumo
de potencia, y si lo que se requiere es velocidad, un cristal HS, pero tengamos siempre presente
como regla general que, a mayor frecuencia es también mayor el consumo de corriente.

Prof.: Yoel Pire


Microcontroladores – Tema 2

Arquitectura del PIC16F877 26

Osccilador

Comentario:

Lo habitual es trabajar con un cristal de cuarzo, los mas comunes son de 4Mhz, 8Mhz,
16Mhzy 20Mhz.

Por lo general se suele utilizar el de 20Mhz para así poder trabajar a la máxima velocidad.

El cristal es un elemento electrónico de dos terminales que al alimentarlo genera un pulso


estable y confiable.
Figura. Símbolo electrónico del Cristal

Cuando se usa un cristal, se recomienda colocar un capacitor cerámico conectados a


tierra en los pines del oscilador del micro (OSC1, OSC2), ambos capacitores deben ser del
mismo valor de lo contrario el micro no funcionara. Esto asegura una mayor estabilidad en
la resonancia del cristal

Aunque también se puede omitir la conexión de los dos condensadores.

El condensador se debe seleccionar según especificaciones del fabricante. En la siguiente


tabla se presenta las frecuencias típicas con el condensador recomendado.

Tabla. Selección de los capacitores del oscilador


Capacitores recomendados
Modo Frecuencia típica
C1 C2

32 khz 33pf 33pf


LP
200 khz 15 pf 15 pf

200 Khz 47 a 68 pf 47 a 68 pf
XT 1 Mhz 15 pf 15 pf
4 Mhz 15 pf 15 Pf

8 Mhz 15 a 30 pf 15 a 30 pf
HS 10 Mhz 15 a 30 pf 15 a 30 pf
20 Mhz 15 a 33 pf 15 a 33 pf

Prof.: Yoel Pire


Microcontroladores – Tema 2

Arquitectura del PIC16F877 27

Oscilador

Comentario:

El cristal se conecta al micro en los pines 13 y 14 (OSC1, OSC2) tal como se muestra a
continuación junto con los condensadores.

Figura. Conexión del oscilador (cristal) al microcontrolador.


#MCLR 1 40 RB7
RA0 2 39 RB6
RA1 3 38 RB5
RA2 4 37 RB4
RA3 5 36 RB3
RA4 6 35 RB2
RA5 7 34 RB1
RE0 8 33 RB0
RE1 9 32 VDD
RE2 10 31 VSS
VDD 11 30 RD7
C1 VSS 12 29 RD6
OSC1 13 28 RD5
OSC2 14 27 RD4
Cristal RC0 15 26 RC7
C2
RC1 16 25 RC6
RC2 17 24 RC5
RC3 18 23 RC4
RD0 19 22 RD3
RD1 20 21 RD2

Prof.: Yoel Pire


Microcontroladores – Tema 2

Arquitectura del PIC16F877 28

Sistema mínimo (conexión electrónica del PIC)

El sistema mínimo para que el microcontrolador realice una función, consiste en la


conexión de la alimentación, del oscilador y del reset.

El circuito de reset puede ser un Pull-Up en el pin 1 (#MCLR) del microcontrolador. Y al


presionar el pulsador el micro se reiniciaría; Otra alternativa para el reset es conectar el
pin 1 (#MCLR) a 5 voltios directamente. Este pin #MCLR no debe quedar al aire. Si se
conecta a tierra el micro se reiniciaría.

en la siguiente imagen se presenta el sistema mínimo.

Figura. Sistema Mínimo

+5V

10k

#MCLR 1 40 RB7
RA0 2 39 RB6
RA1 3 38 RB5
RA2 4 37 RB4
RA3 5 36 RB3 +5V
RA4 6 35 RB2
+5V RA5 7 34 RB1
RE0 8 33 RB0
RE1 9 32 VDD
RE2 10 31 VSS
VDD 11 30 RD7
C1 VSS 12 29 RD6
OSC1 13 28 RD5
OSC2 14 27 RD4
Cristal RC0 15 26 RC7
C2
RC1 16 25 RC6
RC2 17 24 RC5
RC3 18 23 RC4
RD0 19 22 RD3
RD1 20 21 RD2

Prof.: Yoel Pire

También podría gustarte