Download Tema 2. Arquitectura Del PIC...
Tema 2
Arquitectura del PIC16F877 PIC16F 877
Prof.: Yoel Pire
[email protected] [email protected] 2020
Contenido:
Recursos 1. Recursos 2. Organizac Organización ión de la memoria de datos datos Registro 3. Registro 4. Registro de funciones especiales (SFR) (SFR) STA ATUS (parte I Direccion Direccionamiento amiento)) 5. El registro ST 6. Direccionamiento de la memoria de datos RAM RAM 7. Memoria de programa programa 8. Contador de programa (PC) (PC) (stack) 9. Pila (stack) 10. El registro ST STA ATUS (parte II Banderas Banderas)) 11. Aspecto Físico del microcontr microcontrolador olador PIC16F877 PIC16F877 Puertos 12. Puertos 13. Alimentación eléctrica del PIC PIC Configuración 14. Palabra de Configuración 15. Oscilador Oscilador 16. Sistema mínimo (conexión electrónica del PIC) PIC)
Prof.: Yoel Pire
Microcontroladores – Tema 2
Arquitectura del PIC16F877
2
Recursos del PIC16F877
Arquitecturaa Harvard. Con procesador tipo RISC Arquitectur
Voltaje de alimentación comprendido entre 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 dire directo cto e indir indirecto. ecto.
Frecuencia máxima de 20Mhz.
Juego de 35 instrucciones de 14 bit de longitud .
Cada instrucción se ejecuta en un cic ciclo, lo, excepto 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 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 se diferencia con el PIC16F877.
‘’A’’ este
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 especificar si se trata del PIC16F877 o del PIC16F877A
Prof.: Yoel Pire
Microcontroladores – Tema 2
Arquitectura del PIC16F877
3
Organización Organiz ación de la memoria de datos
Tiene posiciones de memoria implementada en :
RAM EEPROM
(Volátil de 368byte) (No volátil de 256byte)
Memoria de datos RAM
Se alojan los registros del funcio funcionamiento namiento del microcontrolador microcontrolador (SFR) y del manejo de todos los periféricos, también se encuentra en cuentra 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 dat datos os RAN esta dividida en cuatro bancos de 128 byt bytee cada uno ccomo omo 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 DataSheet del PIC16F877. La memoria de dat datos os RAM esta repre representada sentada 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 registros de este este microc microcontrolador ontrolador son grupo de 8bit, es decir de 1Byt 1Bytee (un Byte es igual a 8bit).
Los registros son una estructura de datos, esta formados por un vvector ector 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 incluyendo el 0)
Cada registro tiene una dirección especifica en la memoria RAM.
Los SFR (Registros (Registros de funciones especiales ) tienen asociado un nombre proporcionado 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 estado lógico y dependiendo del valor (0 u 1) en el caso de los SFR realizara una función especificada por el fabricante. fabricante.
Es importante importante familiarizarse familiarizarse con los registros para ma manipular nipular aadecuadamente decuadamente los elementos interno de los PIC, para ello hay que conocer exactamente la misión que cumple cada uno de los registros 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 STA STATUS y que los bit < 0 al 3 > tienen un estado lógico cero cero (bajo) y que los bit tienen un un estado lógico uno (alto). Este 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 103h del banco 2 183h del banco 3
ver memoria de datos RAM pagina 4 Y localice este registro.
Ejemplo 2: PORTA 7
6
5
4
3
2
1
0
0
0
1
1
0
0
1
0
El nombre del registro registro es POR PORTTA y en este ccaso aso los bit toman el estado lógic lógico o bajo (un cero) mientras que los bit están en estado lógico alto (uno). El registro PORTA esta ubicado en la posición 05h del banc banco o0 Ejemplo 3: TRISA 7
6
5
4
3
2
1
0
1
x
0
1
0
1
1
0
El registro registro se llama TRISA TRISA . Se observa que el bit tienen una x (don’t care care -no impor importa-) ta-) eso significa que no sabemos cual valor toma ese bit (puede ser un cero o uno) en los bit toma el estado lógico uno uno y los demás están a cer cero. o. Esta ubicado een n 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) mayúsculas) mientras que los GPR el nombre es asignado por el programador programador..
Prof.: Yoel Pire
Microcontroladores – Tema 2
Arquitectura del PIC16F877
8
Direccionamiento Direccionamient o 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 direccionamie nto directo se realiza a través del registro ST STA ATUS con los bit RP1 y RP0 mientras que el indirecto con el bit IRP del registro ST STA ATUS mas el registro FSR Se requieren 9 bit para para direccionar la memoria RAM de datos , esos bit están distribu distribuidos idos de la siguiente manera: Direccionamiento Directo
2 bit en el registro STATUS (RP0 y RP1) 7 bit en la propia instrucción
Direccionamiento Direccionamient o Indirecto
1 bit en el registro STATUS (IRP) 8 bit en el regis registro tro FSR
El direccionamiento mas utilizado es el directo mientras que el indirecto se utiliza en algunas aplicaciones especificas. Cuando se este pr programando ogramando es necesario acceder al banco en donde se encue encuentre ntre el registro en especifico, ya ya sea un SFR o GPR. Est Esto o se logra con las debidas inst instrucciones rucciones a través través del registro ST STA ATUS.
*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 indirec indirecto to **Nota: Los bit se suelen indicar encerrados ent entre re los signos mayor y menor . Ejemplo 1: quiere decir que se hace referenc referencia ia al bit 6 Ejemplo 2: 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 dir directo ecto 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 microcontr olador 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 8
2
= 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 9
2 = 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 registro tiene varias funciones. funciones. Una de ella es para seleccionar el banc banco o de trabajo . TTambién ambién sirve para saber ciertas condiciones de las operaciones lógicas El registro tiene el siguiente s iguiente aspecto STATUS 7
6
5
4
3
2
1
0
IRP
RP1
RP0
#TO
#PD
Z
DC
C
Como pueden observar, observar, cada bit tiene un nombr nombre. e. Los bit tienen por nombre C, DC, Z respectivamente. La función de los bit 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 instrucciones adecuada podemos hacer que el bit RP0 ttome ome el valor lógico alt alto o (uno), y que el bit 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. acceder antes de Nota: Es de vital importancia indicar el banco al que queremos acceder accedimos . . 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 microcontr microcontrolador olador.. Se graba previamente mediante un equipo programador o grabador grabador.. Esta organizada en palabras de 14bits . Cada instrucción ocupa posición (la de memoria palabra dete14bits). La primera primer a posición deuna memoria direcc dirección ión (una 0000h) de este es micro se conoce ccomo omo VECTOR DE RESET RESET.. El micro inicia en la dirección 0000h tras un Reinicio Reinicio o Reset. La dirección 0004h se conoce conoce como el VECTOR DE INTERRUPCIÓN. Esta memoria esta esta dividida en 4 paginas de 2K ccada ada una. La memoria esta hecha con tecnología tipo Flash.
*Nota: La h significa que el numero esta en hexadecimal. 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 esta desde la posición La pagina 1 esta esta desde la posición La pagina 2 esta esta desde la posición La pagina 3 esta esta desde la posición
0000h hasta la 07FFh 0800h hasta la 0FFFh 1000h hasta la 17FFh 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 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 aatrás. trá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 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» entrar 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 progr programa ama (PC) junto a la pila de 8 niveles
Figura. Contador Contador de Programa 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
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 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) https://es.wikipedia.org/wiki/Pila_(informatica)
13
Prof.: Yoel Pire
Microcontroladores – Tema 2
Arquitectura del PIC16F877
De acuerdo al DataSheet del microcontr microcontrolador olador PIC16f877. La memoria de programa junto a la PILA y el PC están represent representados ados de la siguiente manera
Las instrucciones CALL, RETURN, RETFIE y REETL REETLW W 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 Pero como la pila es de 8 niveles, eso significa que solo se podrá utilizar la ins instrucción trucción CALL una cantidad máxima de 8 veces de manera anidada (un CALL dentro de otro CALL)
14
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 se utilizan para seleccionar el banco de la memoria de datos R RAM. AM. Los bit son banderas las cuales sirve para indicar algún evento interno dentro del microcontrolador. Además del registro STA STATUS existen otros registro que albergan bandera en su interior para señalizar ciertas condiciones del microcontrolador microcontrolador.. Los bit #TO, #PD Sirven para indicar las causas que ha provocado la reinicialización del microcontrolador microcon trolador.. El símbolo de # (numeral) indica que son activos en bajo. Los bit C,DC y Z del registro ST STA ATUS 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 C Acarreo 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. Acarreo / llevada del 4 4vo vo bit : Funciona igual que C pero en el 4to bit, es utilizado Bit DC Acarreo en operaciones con números BCD.
Bit 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 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 microcon microcontrolador trolador PIC16F877 Figura. Diagrama del PIC16F877 #MCLR RA0 RA1 RA2 RA3 RA4 RA5 RE0 RE1 RE2 VDD VSS OSC1 OSC2 RC0 RC1 RC2 RC3 RD0 RD1
•
•
•
•
•
• •
•
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21
RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0 VDD VSS RD7 RD6 RD5 RD4 RC7 RC6 RC5 RC4 RD3 RD2
Pin 1. Es el MASTER CLEAR y se utiliza para reiniciar el microcontrolador 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 RA0/AN0 del micro aparte de ser RA0 , también puede puede ser AN0, es decir tiene dos funciones multiplexada multiplexada y dependiendo de la con configuración figuració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
El Diagrama de los pines del microcontrolador 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 estudiara la fu función nción de los pines ccomo omo puertos digitales, ya sea como entrada o salida.
17
Prof.: Yoel Pire
Microcontroladores – Tema 2
Arquitectura del PIC16F877
18
Puertos
Este microcontrolador 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
PORTA
PORTB
PORTC
PORTD
PORTE
Entradas/salidas (E/S)
Bit
N° de Pin
6
RA0 RA1 RA2 RA3 RA4 RA5
2 3 4 5 6 7
8
RB0 RB1 RB2 RB3 RB4 RB5 RB6 RB7
33 34 35 36 37 38 39 40
RC0
15
RC1 RC2 RC3 RC4 RC5 RC6 RC7
16 17 18 23 24 25 26
RD0 RD1 RD2 RD3 RD4 RD5 RD6
19 20 21 22 27 28 29
RD7 RE0 RE1 RE2
30 8 9 10
8
8
3
Prof.: Yoel Pire
Microcontroladores – Tema 2
Arquitectura del PIC16F877
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, 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 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 yyaa sea como entrada (1) o salida (0) El registro TRISC configura al puerto C yyaa sea como entrada (1) o salida (0) El registro TRISD configura al puerto D yyaa 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 microcontr olador ya sea como una entrada o como una salida. El registro El registro El registro El registro El registro
TRISA esta en la posición de memoria 85h del banco 1 TRISB esta en la posición de memoria 86h del banco 1 TRISC esta en la posición de memoria 87h del banco 1 TRISD esta en la posición de memoria 88h del banco 1 TRISE esta en la posición de memoria 89h del banco 1
Todos las TRISX se encuentran en el banc banco o 1. eso quiere decir que par paraa configur configurar ar los puertos se debe primero ingresar al banco 1 con los bit RP0 y RP1 del registro ST STA ATUS
19
Prof.: Yoel Pire
Microcontroladores – Tema 2
Arquitectura del PIC16F877
20
Puertos Ejemplo 1: Configure el puerto B como entrada. Solución: Para configurar configurar todo el puerto B como entra entrada da 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 configurado como entrada en los bit y como salida
en los bit
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 configurado como entrada en los bit y como salida
en el bit .
*Nota: En el ejemplo 3 se puede observar que un mismo puerto puede tener bit como entrada y otros como salida. Con respecto respecto al ejemplo 4, a los bit se le colocan colocan una x (don’t care) ya que el puerto E es de 3 bit por lo tanto los bit no se toman en cuenta y pueden ser cero cero o uno.
El programador decide que puerto tr trabajaran abajaran 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 microcontrolador,, es decir: Una entrada se utiliza para conectar: un pulsador, pulsador, un teclado, un sensor sensor,, una señal. Una salida es utilizada para conect conectar: ar: un LED, una pantalla LCD, la activación de una carga (por medio de un transistor transistor y relé), un display display BCD 7 segmentos, otro circ circuito uito integrad integrado o 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. 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
+5V
#MCLR RA0 RA1 RA2 RA3 RA4 RA5 RE0 RE1 RE2 VDD VSS OSC1 OSC2 RC0 RC1 RC2 RC3 RD0 RD1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21
RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0 VDD VSS RD7 RD6 RD5 RD4 RC7 RC6 RC5 RC4 RD3 RD2
+5V
Prof.: Yoel Pire
Microcontroladores – Tema 2
Arquitectura del PIC16F877
23
Palabra de Configuración
Se utiliza para seleccionar ciertas configuraciones del microcon microcontrolador trolador . Es un registro registro de 14 bit propio en la posición 2007h (mas hay hayaa de la memoria de programa) Solo puede accederse 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
CP1
CP0
DEBUG
-
WRT
CPD
LVP
BODEN
CP1
CP0
PWRTE
2
1
0
WDTE FOSC1 FOSC0
Bit Oscilador (FOSC1, FOSC2): Estos son los bit de selección selección del tipo de oscilador que usara el microcontrolador.
puede trabajar en modo LP, XT HS, RC Bit 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 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 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 Brown out reset (BODEN): (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 Low Voltage Voltage Programming (LVP): Programación en bajo Voltaje Bit Data EE EE Memory Code Protection (CPD): Protección de código en la memoria EEPROM Bit FLASH Program Memory Write Enable Enable (WRT): Habilitación de escritura de la memoria de programa FLASH. Bit In-Circuit Debugger 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
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. 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).
24
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 eexterna xterna es generalment generalmentee más ec económica, onómica, pero pero la frecue frecuencia ncia 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 elem ento electrónico electrónico de dos terminales que al alimentarlo genera un pulso estable y confiable. Figura. Símbolo Símbolo electrónic electrónico o 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 capacitores deben ser del mismo valor de lo contrario el micro no funcionara. Esto asegura una mayor estabilidad 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
LP
32 khz 200 khz
33pf 15 pf
33pf 15 pf
XT
200 Khz 1 Mhz 4 Mhz
47 a 68 pf 15 pf 15 pf
47 a 68 pf 15 pf 15 Pf
HS
8 Mhz 10 Mhz 20 Mhz
15 a 30 pf 15 a 30 pf 15 a 33 pf
15 a 30 pf 15 a 30 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. microcontrolador. #MCLR RA0 RA1 RA2 RA3 RA4 RA5
C1
C2
Cristal
RE0 RE1 RE2 VDD VSS OSC1 OSC2 RC0 RC1 RC2 RC3 RD0 RD1
1 2 3 4 5 6 7
40 39 38 37 36 35 34
RB7 RB6 RB5 RB4 RB3 RB2 RB1
8 9 10 11 12 13 14 15 16 17 18 19 20
33 32 31 30 29 28 27 26 25 24 23 22 21
RB0 VDD VSS RD7 RD6 RD5 RD4 RC7 RC6 RC5 RC4 RD3 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 eldepulsador reset puede reset ser un en el pin 1 (#MCLR)para del el microcontrolador microcont . Y el al presionar el micro se Pull-Up reiniciaría; Otr Otra a alternativa reset esrolador. conec conectar tar pin 1 (#MCLR) a 5 voltios direct directamente. amente. Este pin #MCLR no de debe be quedar al ai aire. re. Si se conecta a tierra el micro se reiniciaría. en la siguiente imagen se presenta el sistema mínimo. mín imo. Figura. Sistema Mínimo +5V
10k
+5V
C1
C2
Cristal
#MCLR RA0 RA1 RA2 RA3 RA4 RA5 RE0 RE1 RE2 VDD VSS OSC1 OSC2 RC0 RC1 RC2 RC3 RD0 RD1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21
RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0 VDD VSS RD7 RD6 RD5 RD4 RC7 RC6 RC5 RC4 RD3 RD2
+5V