You are on page 1of 81

Sistemas con Microprocesadores II

Mauricio Lopez Villase nor


Departamento de Ingeniera Electrica
Universidad Autonoma Metropolitana
c 2013. Derechos reservados.
Mauricio L opez V. (Ingeniera) Presentacion e introduc . . . Enero, 2013 1 / 71
Sistemas con Microprocesadores II
1
Curso
Horario de clases y asesoras y criterios de calicaci on
Pagina
2
Antecedentes
Antecedentes
3
Trabajo a desarrollar
Practicas
4
El PIC16F877
Caractersticas relevantes
Palabra de conguracion
Perifericos
Arquitectura
Clasicacion de las instrucciones
Estado de reposo
Organizaci on memoria de programa
Organizaci on memoria de datos
Direccionamiento de datos
Mauricio L opez V. (Ingeniera) Presentacion e introduc . . . Enero, 2013 2 / 71
Curso Horario de clases y asesoras y criterios de calificaci on
Horario y m as . . .
Horario:
Martes: 15:00 a 17:00 (Teora)
Miercoles: 18:00 a 21:00 (Laboratorio)
Jueves: 18:00 a 21:00 (Laboratorio)
Viernes: 17:00 a 19:00 (Teora)
Asesoras:
Lunes: 17:00 a 19:00
Miercoles: 15:00 a 17:00
Jueves: 15:00 a 17:00
Viernes: 15:00 a 17:00
Mauricio L opez V. (Ingeniera) Presentacion e introduc . . . Enero, 2013 3 / 71
Curso Horario de clases y asesoras y criterios de calificaci on
Horario y m as . . .
Horario:
Martes: 15:00 a 17:00 (Teora)
Miercoles: 18:00 a 21:00 (Laboratorio)
Jueves: 18:00 a 21:00 (Laboratorio)
Viernes: 17:00 a 19:00 (Teora)
Asesoras:
Lunes: 17:00 a 19:00
Miercoles: 15:00 a 17:00
Jueves: 15:00 a 17:00
Viernes: 15:00 a 17:00
Criterios de calicaci on:
Porcentaje
Teora (2 ex amenes parciales): 50 %
Laboratorio (asistir al menos el 85 %): 50 %
Tareas: 0 %
Ponderaciones
MB [9.0, 10.0]
B [8.0, 8.99]
S [6.0, 7.99]
NA [0, 5.99]
Mauricio L opez V. (Ingeniera) Presentacion e introduc . . . Enero, 2013 3 / 71
Curso Horario de clases y asesoras y criterios de calificaci on
Horario y m as . . .
Horario:
Martes: 15:00 a 17:00 (Teora)
Miercoles: 18:00 a 21:00 (Laboratorio)
Jueves: 18:00 a 21:00 (Laboratorio)
Viernes: 17:00 a 19:00 (Teora)
Asesoras:
Lunes: 17:00 a 19:00
Miercoles: 15:00 a 17:00
Jueves: 15:00 a 17:00
Viernes: 15:00 a 17:00
Criterios de calicaci on:
Porcentaje
Teora (2 ex amenes parciales): 50 %
Laboratorio (asistir al menos el 85 %): 50 %
Tareas: 0 %
Ponderaciones
MB [9.0, 10.0]
B [8.0, 8.99]
S [6.0, 7.99]
NA [0, 5.99]
Mauricio L opez V. (Ingeniera) Presentacion e introduc . . . Enero, 2013 3 / 71
Curso Pagina
Pagina
Pagina del curso de Sistemas con Microprocesadores II
http://laryc.izt.uam.mx/e-edu/claroline196/
Mauricio L opez V. (Ingeniera) Presentacion e introduc . . . Enero, 2013 4 / 71
Antecedentes Antecedentes
Antecedentes
Caractersticas principales de un microcontrolador PIC.
Arquitectura Harvard,
Aplicacion de tecnica de segmentacion (pipe line),
Procesador RISC (Reduced Instruction Set Computer; Conjunto de juego de
instrucciones reducido),
Las instrucciones son ortogonales y
Arquitectura basada en banco de registros.
Distribuci on de Memoria RAM (SFR y bancos).
Mauricio L opez V. (Ingeniera) Presentacion e introduc . . . Enero, 2013 5 / 71
Antecedentes Antecedentes
Antecedentes
Caractersticas principales de un microcontrolador PIC.
Arquitectura Harvard,
Aplicacion de tecnica de segmentacion (pipe line),
Procesador RISC (Reduced Instruction Set Computer; Conjunto de juego de
instrucciones reducido),
Las instrucciones son ortogonales y
Arquitectura basada en banco de registros.
Distribuci on de Memoria RAM (SFR y bancos).
Smbolos basicos en los diagramas de ujo y Pseudoc odigo.
Mauricio L opez V. (Ingeniera) Presentacion e introduc . . . Enero, 2013 5 / 71
Antecedentes Antecedentes
Antecedentes
Caractersticas principales de un microcontrolador PIC.
Arquitectura Harvard,
Aplicacion de tecnica de segmentacion (pipe line),
Procesador RISC (Reduced Instruction Set Computer; Conjunto de juego de
instrucciones reducido),
Las instrucciones son ortogonales y
Arquitectura basada en banco de registros.
Distribuci on de Memoria RAM (SFR y bancos).
Smbolos basicos en los diagramas de ujo y Pseudoc odigo.
Conjunto de instrucciones.
Mauricio L opez V. (Ingeniera) Presentacion e introduc . . . Enero, 2013 5 / 71
Antecedentes Antecedentes
Antecedentes
Caractersticas principales de un microcontrolador PIC.
Arquitectura Harvard,
Aplicacion de tecnica de segmentacion (pipe line),
Procesador RISC (Reduced Instruction Set Computer; Conjunto de juego de
instrucciones reducido),
Las instrucciones son ortogonales y
Arquitectura basada en banco de registros.
Distribuci on de Memoria RAM (SFR y bancos).
Smbolos basicos en los diagramas de ujo y Pseudoc odigo.
Conjunto de instrucciones.
Estructura de un programa Ensamblador y su programaci on (MPLAB IDE:
Fusibles y Palabra de conguracion).
Mauricio L opez V. (Ingeniera) Presentacion e introduc . . . Enero, 2013 5 / 71
Antecedentes Antecedentes
Antecedentes
Caractersticas principales de un microcontrolador PIC.
Arquitectura Harvard,
Aplicacion de tecnica de segmentacion (pipe line),
Procesador RISC (Reduced Instruction Set Computer; Conjunto de juego de
instrucciones reducido),
Las instrucciones son ortogonales y
Arquitectura basada en banco de registros.
Distribuci on de Memoria RAM (SFR y bancos).
Smbolos basicos en los diagramas de ujo y Pseudoc odigo.
Conjunto de instrucciones.
Estructura de un programa Ensamblador y su programaci on (MPLAB IDE:
Fusibles y Palabra de conguracion).
Caractersticas principales del microcontrolador PIC16F84.
Mauricio L opez V. (Ingeniera) Presentacion e introduc . . . Enero, 2013 5 / 71
Antecedentes Antecedentes
Antecedentes
Caractersticas principales de un microcontrolador PIC.
Arquitectura Harvard,
Aplicacion de tecnica de segmentacion (pipe line),
Procesador RISC (Reduced Instruction Set Computer; Conjunto de juego de
instrucciones reducido),
Las instrucciones son ortogonales y
Arquitectura basada en banco de registros.
Distribuci on de Memoria RAM (SFR y bancos).
Smbolos basicos en los diagramas de ujo y Pseudoc odigo.
Conjunto de instrucciones.
Estructura de un programa Ensamblador y su programaci on (MPLAB IDE:
Fusibles y Palabra de conguracion).
Caractersticas principales del microcontrolador PIC16F84.
Mauricio L opez V. (Ingeniera) Presentacion e introduc . . . Enero, 2013 5 / 71
Antecedentes Antecedentes
Antecedentes
Directivas y Macros.
Rutina de retardo y Tablas.
Mauricio L opez V. (Ingeniera) Presentacion e introduc . . . Enero, 2013 6 / 71
Antecedentes Antecedentes
Antecedentes
Directivas y Macros.
Rutina de retardo y Tablas.
Uso de un display de 7 segmentos.
Mauricio L opez V. (Ingeniera) Presentacion e introduc . . . Enero, 2013 6 / 71
Antecedentes Antecedentes
Antecedentes
Directivas y Macros.
Rutina de retardo y Tablas.
Uso de un display de 7 segmentos.
Mauricio L opez V. (Ingeniera) Presentacion e introduc . . . Enero, 2013 6 / 71
Trabajo a desarrollar Practicas
Practicas de laboratorio
1. Uso de interrupciones y de temporizadores (Relojes de tiempo rela, TMR0, y el
Prescaler).
2. Uso de un sensor optico de barrera (optoacoplador).
3. Comunicaci on serial RS232.
4. Uso del visualizador LCD.
5. Conversion anal ogica digital y sensor de temperatura.
6. Direccionamiento de la memoria de datos EEPROM y de programa FLASH.
7. Uso de un teclado matricial con cuatro display de 7 segmentos.
8. Control de motores de DC usando el protocolo PWM.
9. Control de motores paso a paso.
10. Comunicaci on usando el protocolo I2C entre un microcontrolador y memorias
externas (24C04).
11. Uso de un Reloj de tiempo real usando el protocolo SPI (DS1302).
Mauricio L opez V. (Ingeniera) Presentacion e introduc . . . Enero, 2013 7 / 71
El PIC16F877 Caractersticas relevantes
Diagrama de terminales
Mauricio L opez V. (Ingeniera) Microcontrolador PIC16F877 Enero, 2013 8 / 71
El PIC16F877 Caractersticas relevantes
Caractersticas relevantes
Memoria de programa ROM de 8192 x 14 bytes (8K x 14).
Memoria de datos RAM de 368 bytes (368 x 8).
Memoria de datos EEPROM de 256 bytes (256 x 8).
Cinco puertos (33 lneas de E/S).
PORTB, PORTC y PORTD de 8 bits cada uno.
PORTA de 6 bits.
PORTE de 3 bits.
Tres temporizadores.
Uno de 16 bits (Timer1: TMR1).
Dos de 8 bits (Timer0: TMR0, y Timer2: TMR2).
Un WDT.
Mauricio L opez V. (Ingeniera) Microcontrolador PIC16F877 Enero, 2013 9 / 71
El PIC16F877 Caractersticas relevantes
Caractersticas relevantes
Arquitectura Harvard.
Arquitectura tipo RISC.
Procesador segmentado o Pipeline.
Estructura basada en cuatro bancos de 128 bytes.
Convertidor A/D con cinco canales de entrada y 10 bits de resolucion. Dispone
de un multiplexor que permite aplicar, a la entrada del CAD, diversas se nales
anal ogicas desde sus terminales.
Mauricio L opez V. (Ingeniera) Microcontrolador PIC16F877 Enero, 2013 10 / 71
El PIC16F877 Caractersticas relevantes
Caractersticas relevantes: interrupciones
Catorce posibles fuentes de interrupcion.
Mauricio L opez V. (Ingeniera) Microcontrolador PIC16F877 Enero, 2013 11 / 71
El PIC16F877 Caractersticas relevantes
Caractersticas relevantes: interrupciones
Interrupcion
Es un mecanismo por el cual se detiene el programa en curso para realizar una
determinada rutina que atienda la causa que ha provocado la interrupcion.
Se produce un salto a una subrutina de interrupcion.
Esta tecnica atiende de manera inmediata el evento y retoma luego la ejecuci on
del programa exactamente donde estaba en el momento de ser interrumpido.
Es m as ecaz que la tecnica Polling, ya que no pierde tiempo preguntando el
estado de la lnea de entrada al microcontrolador.
El funcionamiento de las interrupciones es similar al de las subrutinas, diere en
los procedimientos que las ponen en marcha.
Mauricio L opez V. (Ingeniera) Microcontrolador PIC16F877 Enero, 2013 12 / 71
El PIC16F877 Caractersticas relevantes
Caractersticas relevantes: interrupciones
El registro de interrupciones, INTCON, contiene algunos bits que act uan como
banderas y otros como bits de permiso para que se pueda generar la interrupcion.
El registro INTCON diere del PIC16F84 en el bit 6, PEIE (permiso de
interrupcion de perifericos), en lugar de EEIE. El PEIE act ua como una segunda
llave de permiso o prohibici on de las causas de interrupcion que no se
contemplan en INTCON.
Mauricio L opez V. (Ingeniera) Microcontrolador PIC16F877 Enero, 2013 13 / 71
El PIC16F877 Caractersticas relevantes
Caractersticas relevantes: interrupciones
Los registros PIE1 y PIE2 contienen los bits que autorizan o prohben las
interrupciones producidas por los perifericos del microcontrolador y que no est an
incluidos en el registro INTCON.
Mauricio L opez V. (Ingeniera) Microcontrolador PIC16F877 Enero, 2013 14 / 71
El PIC16F877 Caractersticas relevantes
Caractersticas relevantes: interrupciones
Los registros PIR1 y PIR2 contienen los bits que act uan como banderas de
se nalizaci on de la causa que origina la interrupcion.
Las banderas de las fuentes de interrupciones se deben borrar por software,
despues de atender una de ellas, para prevenir falsas interrupciones.
Mauricio L opez V. (Ingeniera) Microcontrolador PIC16F877 Enero, 2013 15 / 71
El PIC16F877 Caractersticas relevantes
Caractersticas relevantes: interrupciones
Mauricio L opez V. (Ingeniera) Microcontrolador PIC16F877 Enero, 2013 16 / 71
El PIC16F877 Caractersticas relevantes
Fase de una interrupci on
1
o
. En el programa se debe habilitar las interrupciones correspondientes, al
modicar el registro INTCON.
2
o
. Cuando ocurre una interrupcion la bandera (ag) correspondiente se activa. Si el
bit de permiso est a a 1 y el bit de habilitaci on de todas las interrupciones GIE
est a a 1, y en su caso el permiso de interrupcion de perifericos est a a 1, se
produce la interrupcion.
3
o
. Para evitar que se produzca otra interrupcion mientras se est a atendiendo a otra
anterior, el bit GIE se pone automaticamente a 0 por hardware.
Mauricio L opez V. (Ingeniera) Microcontrolador PIC16F877 Enero, 2013 17 / 71
El PIC16F877 Caractersticas relevantes
Fase de una interrupci on
4
o
. El valor del contador del programa (PC) se guarda en la pila (stack).
5
o
. El PC se carga con el valor 004h, que es el vector de interrupciones.
6
o
. El programa debe comenzar la subrutina de atencion a la interrupcion con un
salto a la posicion de memoria, donde se encuentra las instrucciones
correspondientes a la interrupcion.
ORG 0 ; Direccin de comienzo de programa.
GOTOinicio ;
ORG 4 ; Direccin de vector de interrupcin.
GOTOISR ; Interrupt Service Routine.
Mauricio L opez V. (Ingeniera) Microcontrolador PIC16F877 Enero, 2013 18 / 71
El PIC16F877 Caractersticas relevantes
Fase de una interrupci on
7
o
. El programa debe guardar todos los registros que puedan ser modicados por la
subrutina de interrupcion.
;===================================================================
; Rutina de interrupcion
; Se procede a dar servicio a la interrupcion.
; Esta corresponde a una interrupcion periferica. No se usa.
;===================================================================
ISR MOVWF STORW ; Respaldar el acumulador, W, en la localidad de memoria STORW.
MOVF STATUS, W ; El contenido de STATUS register se almacena en el acumulador.
MOVWF STRST ; Respaldar el STATUS register en la localidad de memoria STRST.
; Se incluye el banco en uso antes de la interrupcion.
. . .
banco0 ; Direcciona el Banco 0.
MOVF STRST, W ; Se almacena en el acumulador el registro STRST.
MOVWF STATUS ; Se restaura el STATUS register.
SWAPF STORW, F ; Se almacena en el acumulador el registro STRST.
SWAPF STORW, W ; Se almacena en el acumulador el registro STRST.
RETFIE ; Terminal la rutina de interrupcion, regresa al programa principal.
Mauricio L opez V. (Ingeniera) Microcontrolador PIC16F877 Enero, 2013 19 / 71
El PIC16F877 Caractersticas relevantes
Fase de una interrupci on
8
o
. Si est an habilitadas varias vas de interrupcion el programa debe explorar el
valor de los ags para determinar la causa de la interrupcion.
9
o
. Dependiendo de la causa de la interrupcion, se bifurca a la subrutina
correspondiente. Ejemplo cuando las posibles interrupciones son producidas por
INTF, RBIF y T0IF.
Atiende INTF
INTF <-- 0
INTF RBIF T0IF
Subrutina ISR
Atiende RBIF Atiende T0IF
SALE
Fin de la subrutina
de interrupcin.
Inicio de la subrutina
de interrupcin.
RBIF <-- 0 T0IF <-- 0
Mauricio L opez V. (Ingeniera) Microcontrolador PIC16F877 Enero, 2013 20 / 71
El PIC16F877 Caractersticas relevantes
Fase de una interrupci on
Ejemplo cuando las posibles interrupciones son producidas por INTF, RBIF y T0IF.
Subrutina ISR
Inicio de la subrutina
de interrupcin.
INTF = 1 ?
NO
SALE
Fin de la subrutina
de interrupcin.
RBIF = 1 ?
NO
Atiende INTF Atiende RBIF Atiende T0IF
T0IF <-- 0 RBIF <-- 0 INTF <-- 0
SI SI
Mauricio L opez V. (Ingeniera) Microcontrolador PIC16F877 Enero, 2013 21 / 71
El PIC16F877 Caractersticas relevantes
Fase de una interrupci on
10
o
. Una vez nalizado la atencion a la subrutina de interrupcion el programa debe
borrar las ags que indican las fuentes de interrupciones (ejemplo: INTF, RBIF,
T0IF, EEIF, etc.) antes del retorno al programa principal.
11
o
. El programa debe devolver los valores que tenan los registros antes de
producirse la interrupcion.
;===================================================================
; Rutina de interrupcion
; Se procede a dar servicio a la interrupcion.
; Esta corresponde a una interrupcion periferica. No se usa.
;===================================================================
ISR MOVWF STORW ; Respaldar el acumulador, W, en la localidad de memoria STORW.
MOVF STATUS, W ; El contenido de STATUS register se almacena en el acumulador.
MOVWF STRST ; Respaldar el STATUS register en la localidad de memoria STRST.
; Se incluye el banco en uso antes de la interrupcion.
. . .
banco0 ; Direcciona el Banco 0.
MOVF STRST, W ; Se almacena en el acumulador el registro STRST.
MOVWF STATUS ; Se restaura el STATUS register.
SWAPF STORW, F ; Se almacena en el acumulador el registro STRST.
SWAPF STORW, W ; Se almacena en el acumulador el registro STRST.
RETFIE ; Terminal la rutina de interrupcion, regresa al programa principal.
Mauricio L opez V. (Ingeniera) Microcontrolador PIC16F877 Enero, 2013 22 / 71
El PIC16F877 Caractersticas relevantes
Fase de una interrupci on
12
o
. Cuando llega a la ultima instruccion de la rutina de interrupcion RETFIE, el
contador de programa se carga con el valor de se guardo inicialmente en la pila y
el bit GIE se pone automaticamente a 1.
Mauricio L opez V. (Ingeniera) Microcontrolador PIC16F877 Enero, 2013 23 / 71
El PIC16F877 Caractersticas relevantes
Formas de distribuir el codigo del programa
Mauricio L opez V. (Ingeniera) Microcontrolador PIC16F877 Enero, 2013 24 / 71
El PIC16F877 Caractersticas relevantes
Formas de distribuir el codigo del programa
Mauricio L opez V. (Ingeniera) Microcontrolador PIC16F877 Enero, 2013 25 / 71
El PIC16F877 Caractersticas relevantes
Formas de distribuir el codigo del programa
Mauricio L opez V. (Ingeniera) Microcontrolador PIC16F877 Enero, 2013 26 / 71
El PIC16F877 Caractersticas relevantes
Estructura de la pila y memoria de programa
Mauricio L opez V. (Ingeniera) Microcontrolador PIC16F877 Enero, 2013 27 / 71
El PIC16F877 Palabra de configuraci on
Palabra de conguraci on
FOSC1-FOSC0: Seleccion del tipo de oscilador
11 = Oscilador RC (Resistencia-Condensador).
10 = Oscilador HS (M as de 4 MHz).
01 = Oscilador XT (100 KHz a 4 MHz).
00 = Oscilador LP (Bajo consumo 35 a 200 KHz).
WDTE: Activacion del WDT (Perro guardian).
1 = WDT activado.
0 = WDT desactivado.
PWRTE: Activacion del temporizador (Power-Up).
1 = Desactivado.
0 = Activado.
Mauricio L opez V. (Ingeniera) Microcontrolador PIC16F877 Enero, 2013 28 / 71
El PIC16F877 Palabra de configuraci on
Palabra de conguraci on
BODEN: Deteccion del Brown-Out (Fallo de alimentaci on).
1 = Detecci on activada.
0 = Detecci on desactivada.
LVD: Programaci on a bajo voltaje.
1 = Activada. RB3/PGM.
0 = Desactivada. Se programa normalmente.
CPD: Protecci on a bajo voltaje.
1 = Sin protecci on.
0 = EEPROM datos protegida.
Mauricio L opez V. (Ingeniera) Microcontrolador PIC16F877 Enero, 2013 29 / 71
El PIC16F877 Palabra de configuraci on
Palabra de conguraci on
WRT: Permiso de escritura en la memoria FLASH.
1 = Se puede escribir la parte no protegida de esta memoria.
0 = Prohibida la escritura.
DEBUG: Modo de depuracion en circuito.
1 = Desactivado.
0 = Activado.
CP1:PC0: Bits de protecci on de codigo
11 = Sin protecci on c odigo.
10 = Protecci on desde 1F00h a 1FFFh.
01 = Protecci on desde 1000h a 1FFFh.
00 = Todo el c odigo protegido.
Mauricio L opez V. (Ingeniera) Microcontrolador PIC16F877 Enero, 2013 30 / 71
El PIC16F877 Palabra de configuraci on
Fallo de alimentaci on
Protecci on ante fallo de alimentacion: BOR (Brown-Out) y POR (Power On Reset).
Circuito que resetea al microcontrolador cuando el voltaje de alimentacion
(V
DD
) es inferior a un voltaje mnimo (brownout).
Mientras el voltaje de alimentacion sea inferior al de brownout el dispositivo se
mantendra reseteado comenzando a funcionar normalmente cuando sobrepase
dicho valor.
El recurso denominado POR produce el reset automatico al conectar la
alimentacion.
Registro PCON:
Mauricio L opez V. (Ingeniera) Microcontrolador PIC16F877 Enero, 2013 31 / 71
El PIC16F877 Perifericos
Caractersticas relevantes
Dos m odulos CCP (Capture/Compare/PWM). Son capaces de capturar y
comparar impulsos. La captura y la comparaci on se efect uan con una resolucion
de 16 bits.
Comparador analogico:
Internamente se dispone de un Amplicador operacional que act ua como
comparador entre una se nal ja de referencia y otra variable que se aplica por una
de sus terminales.
La salida del comparador proporciona un nivel l ogico 1 o 0 seg un una se nal sea
mayor o menor que la otra.
La secci on PWM vara el ancho de los pulsos, tecnica empleada en el control de
motores.
Mauricio L opez V. (Ingeniera) Microcontrolador PIC16F877 Enero, 2013 32 / 71
El PIC16F877 Perifericos
Caractersticas relevantes
Puerto serial sncrona (SSP) e interfaz de comunicaci on serial (SCI). La tpica
USRAT, orientada a la comunicaci on entre subsistemas o m aquinas (RS-232) y
la MSSP, destinada a la comunicaci on entre diversos circuitos integrados y que
admite el protocolo I2C y SPI.
Puerto paralelo esclavo (protocolo PSP). Comunicaci on que es m as r apida que la
comunicaci on en serie, pero que hipoteca mucha lneas de E/S; ocho del
puerto D y tres del puerto E.
Mauricio L opez V. (Ingeniera) Microcontrolador PIC16F877 Enero, 2013 33 / 71
El PIC16F877 Perifericos
Caractersticas relevantes
Perifericos
Son los dispositivos auxiliares e independientes conectados a la unidad central de
procesamiento de un microprocesador o microcontrolador.
Se consideran perifericos tanto a las unidades o dispositivos a traves de los
cuales el microcontrolador se comunica con el mundo exterior, como a los
sistemas que almacenan la informaci on, sirviendo de memoria auxiliar de la
memoria principal.
Mauricio L opez V. (Ingeniera) Microcontrolador PIC16F877 Enero, 2013 34 / 71
El PIC16F877 Perifericos
Caractersticas relevantes
Tipos de perifericos:
Perifericos de entrada: captan y digitalizan los datos de ser necesario,
introducidos por el usuario o por otro dispositivo y los envan al
microcontrolador para ser procesados.
Perifericos de salida: son dispositivos que muestran o proyectan informaci on
hacia el exterior del microcontrolador. La mayora son para informar, alertar,
comunicar o dar al usuario cierta informaci on. Sin embargo, no todos de este
tipo de perifericos es informaci on para el usuario.
Perifericos de almacenamiento: son los dispositivos que almacenan datos e
informaci on por bastante tiempo. La memoria de acceso aleatorio no puede ser
considerada un periferico de almacenamiento, ya que su memoria es volatil y
temporal.
Perifericos de comunicaci on: son los perifericos que se encargan de
comunicarse con otras m aquinas, ya sea para trabajar en conjunto, o para enviar
y recibir informaci on.
Mauricio L opez V. (Ingeniera) Microcontrolador PIC16F877 Enero, 2013 35 / 71
El PIC16F877 Arquitectura
Arquitectura del PIC16F877
Mauricio L opez V. (Ingeniera) Microcontrolador PIC16F877 Enero, 2013 36 / 71
El PIC16F877 Arquitectura
Arquitectura del PIC16F877
Mauricio L opez V. (Ingeniera) Microcontrolador PIC16F877 Enero, 2013 37 / 71
El PIC16F877 Clasificacion de las instrucciones
Clasicaci on de instrucciones
Instrucciones aritmeticas
ADDWF f, d
SUBWF f, d
INCF f, d
COMF f, d
RLF f, d
RRF f, d
Instrucciones l ogicas
ANDWF f, d
IORWF f, d
XOR f, d
ANDLW f, d
IORLW f, d
XORLW f, d
Mauricio L opez V. (Ingeniera) Microcontrolador PIC16F877 Enero, 2013 38 / 71
El PIC16F877 Clasificacion de las instrucciones
Clasicaci on de instrucciones
Instrucciones de salto
CALL k
RETLW k
GOTO k
DECFSZ f, d
INCFSZ f, d
Instrucciones para la
manipulacion de bits
BCF f, d
BSF f, d
BTFSC f, d
BTFSS f, d
Mauricio L opez V. (Ingeniera) Microcontrolador PIC16F877 Enero, 2013 39 / 71
El PIC16F877 Clasificacion de las instrucciones
Clasicaci on de instrucciones
Instrucciones de puesta a cero
CLRF
CLRW
CLRWDT
Instrucciones especiales
NOP
SLEPP
Mauricio L opez V. (Ingeniera) Microcontrolador PIC16F877 Enero, 2013 40 / 71
El PIC16F877 Estado de reposo
Estado de reposo o de bajo consumo
En muchas ocasiones el microcontrolador debe esperar, sin hacer nada, a que se
produzca alg un acontecimiento externo que lo ponga de nuevo en
funcionamiento.
Para ahorrar energa se dispone de una instruccion especial (SLEEP), que lo pasa
al estado de reposo o de bajo consumo.
En estado de reposo los requerimientos de potencia son mnimo, se detiene el
reloj principal y se congelan sus circuitos asociados, quedando sumiso a un
profundo sue no.
Al activar una interrupcion asociada por el acontecimiento esperado, el
microcontrolador se despierta y reanuda su trabajo.
Mauricio L opez V. (Ingeniera) Microcontrolador PIC16F877 Enero, 2013 41 / 71
El PIC16F877 Estado de reposo
Estado de reposo o de bajo consumo
Cuando se ejecuta la instruccion SLEEP, ocurren las siguientes acciones:
a) Si el Perro guardian est a activado, se refresca su valor (se borra) pero sigue
funcionando normalmente.
b) El oscilador principal del sistema deja de funcionar.
c) Los puertos E/S mantienen el mismo estado que tenan antes de ejecutar SLEEP.
d) El TMR0 se para, al no recibir se nal desde el oscilador principal.
e) Los bits TO y PD del Registro de Estados toman los valores 1 y 0,
respectivamente.
Mauricio L opez V. (Ingeniera) Microcontrolador PIC16F877 Enero, 2013 42 / 71
El PIC16F877 Estado de reposo
Estado de reposo o de bajo consumo
Para salir del estado de reposo hay varias posibilidades:
Activacion de la terminal MCLR, generando un reset.
Desbordamiento de Perro guardian WDT que sigue trabajando en reposo y que
estaba activado cuando se ejecut o SLEEP, generando un reset.
Lectura o escritura del puerto paralelo esclavo (PSP).
Interrupci on por el TMR1.
Disparo especial del TMR1 funcionando como reloj externo en modo asncrono.
Interrupci on por el m odulo CCP funcionando en modo captura.
Interrupci on por el m odulo de comunicacion SSP (Stara/Stop).
Transmisi on o recepci on del MSSP en modo esclavo (SPI/I2C).
Transmisi on o recepci on USART.
Fin de conversion analogica-digital A/D.
Terminaci on de la escritura de la memoria EEPROM.
Para las dos primeras, para conocer la causa por la que se ha salido del Estado
de Reposo se analizan los bits TO y PD.
Si el bit GIE est a desactivado, se contin ua la ejecuci on de instrucciones con la
siguiente a la SLEEP. Si est a activado, se ejecuta la siguiente a SLEEP y luego se
salta al vector de interrupciones.
Mauricio L opez V. (Ingeniera) Microcontrolador PIC16F877 Enero, 2013 43 / 71
El PIC16F877 Estado de reposo
Estado de reposo o de bajo consumo
Para salir del estado de reposo hay varias posibilidades:
Activacion de la terminal MCLR, generando un reset.
Desbordamiento de Perro guardian WDT que sigue trabajando en reposo y que
estaba activado cuando se ejecut o SLEEP, generando un reset.
Lectura o escritura del puerto paralelo esclavo (PSP).
Interrupci on por el TMR1.
Disparo especial del TMR1 funcionando como reloj externo en modo asncrono.
Interrupci on por el m odulo CCP funcionando en modo captura.
Interrupci on por el m odulo de comunicacion SSP (Stara/Stop).
Transmisi on o recepci on del MSSP en modo esclavo (SPI/I2C).
Transmisi on o recepci on USART.
Fin de conversion analogica-digital A/D.
Terminaci on de la escritura de la memoria EEPROM.
Para las dos primeras, para conocer la causa por la que se ha salido del Estado
de Reposo se analizan los bits TO y PD.
Si el bit GIE est a desactivado, se contin ua la ejecuci on de instrucciones con la
siguiente a la SLEEP. Si est a activado, se ejecuta la siguiente a SLEEP y luego se
salta al vector de interrupciones.
Mauricio L opez V. (Ingeniera) Microcontrolador PIC16F877 Enero, 2013 43 / 71
El PIC16F877 Organizaci on memoria de programa
Memoria de programa
Mauricio L opez V. (Ingeniera) Microcontrolador PIC16F877 Enero, 2013 44 / 71
El PIC16F877 Organizaci on memoria de programa
Organizaci on de la memoria de programa
La memoria FLASH tiene una
capacidad de 8 K palabras de 14 bits
cada una.
Esta dividida en paginas de 2 K
palabras y se controla con el PC, que
tiene un tama no de 13 bits.
La pila tiene 8 niveles de profundidad,
y con la instruccion CALL y con las
interrupciones el valor del PC se salva
en el nivel superior. Con las
instrucciones RETURN, RETLW y RETFIE
el valor contenido en el nivel superior
de la Pila se carga en PC.
El vector de Reset ocupa la direcci on
0000h y el vector de interrupciones la
0004h.
Mauricio L opez V. (Ingeniera) Microcontrolador PIC16F877 Enero, 2013 45 / 71
El PIC16F877 Organizaci on memoria de programa
Registros especcos para el control de la memoria de programa
Los 13 bits contenidos en el PC, que direccionan la memoria de c odigo, est an
guardados en dos registros especcos:
el registro PCL guarda los 8 bits menos signicativos y se puede leer y escribir.
los bits <12:8> del PC se alojan en el registro PCH, que no puede ser ledo ni
escrito.
se accede al registro PCH a traves del PCLATH (Program Counter Latch High).
Mauricio L opez V. (Ingeniera) Microcontrolador PIC16F877 Enero, 2013 46 / 71
El PIC16F877 Organizaci on memoria de programa
Registros especcos para el control de la memoria de programa
Las instrucciones de salto CALL y GOTO s olo proporcionan 11 bits de la direcci on
a saltar. Esto limita el salto dentro de cada banco de 2 K. Cuando se desea salir
del banco actual hay que programar correctamente los bits PCLATH<4:3> que
selecciona el banco.
Es labor del programador modicar el valor de dichos bits en las instrucciones
CALL y GOTO.
Mauricio L opez V. (Ingeniera) Microcontrolador PIC16F877 Enero, 2013 47 / 71
El PIC16F877 Organizaci on memoria de programa
El PCLATH
Mauricio L opez V. (Ingeniera) Microcontrolador PIC16F877 Enero, 2013 48 / 71
El PIC16F877 Organizaci on memoria de programa
Afectando el PC en diferentes situaciones
Situacion 1 Instrucci on con PCL como destino:
Situacion 2 Instrucci on GOTO:
Mauricio L opez V. (Ingeniera) Microcontrolador PIC16F877 Enero, 2013 49 / 71
El PIC16F877 Organizaci on memoria de programa
Afectando el PC en diferentes situaciones
Situacion 3 Instrucci on CALL:
Situacion 4 Instrucci on RETURN, RETFIE o RETLW:
Nota: El PCLATH nunca se actualiza con el contenido de PCH.
Mauricio L opez V. (Ingeniera) Microcontrolador PIC16F877 Enero, 2013 50 / 71
El PIC16F877 Organizaci on memoria de programa
Formato general para instrucciones
Mauricio L opez V. (Ingeniera) Microcontrolador PIC16F877 Enero, 2013 51 / 71
El PIC16F877 Organizaci on memoria de programa
Paginado de la memoria de programa
Bits de PCLATH<4:3> Apunta a la pagina
4 3
0 0 Pagina 0
0 1 Pagina 1
1 0 Pagina 2
1 1 Pagina 3
Bits de PCLATH<2:0> Apunta a la subpagina
2 1 0
0 0 0 Subp agina 0
0 0 1 Subp agina 1
0 1 0 Subp agina 2
0 1 1 Subp agina 3
1 0 0 Subp agina 4
1 0 1 Subp agina 5
1 1 0 Subp agina 6
1 1 1 Subp agina 7
Mauricio L opez V. (Ingeniera) Microcontrolador PIC16F877 Enero, 2013 52 / 71
El PIC16F877 Organizaci on memoria de programa
Ejemplo: Llamando una subrutina de la pagina 1 desde la pagina 0
Mauricio L opez V. (Ingeniera) Microcontrolador PIC16F877 Enero, 2013 53 / 71
El PIC16F877 Organizaci on memoria de datos
Memoria RAM y SFR
Mauricio L opez V. (Ingeniera) Microcontrolador PIC16F877 Enero, 2013 54 / 71
El PIC16F877 Organizaci on memoria de datos
Memoria RAM
Mauricio L opez V. (Ingeniera) Microcontrolador PIC16F877 Enero, 2013 55 / 71
El PIC16F877 Organizaci on memoria de datos
Organizaci on de la memoria de datos RAM
Consta de 4 bancos con 128 bytes cada uno.
En las posiciones iniciales de cada banco se ubican los registros de funciones
especiales (SFR).
Mauricio L opez V. (Ingeniera) Microcontrolador PIC16F877 Enero, 2013 56 / 71
El PIC16F877 Organizaci on memoria de datos
Estructura basada en bancos
Mauricio L opez V. (Ingeniera) Microcontrolador PIC16F877 Enero, 2013 57 / 71
El PIC16F877 Organizaci on memoria de datos
Organizaci on de la memoria de datos RAM
Para direccionar la memoria RAM de datos, estructurada en 4 bancos de 128
bytes cada uno, existen dos modos diferentes:
Direccionamiento directo.
Direccionamiento indirecto.
Mauricio L opez V. (Ingeniera) Microcontrolador PIC16F877 Enero, 2013 58 / 71
El PIC16F877 Direccionamiento de datos
Direccionamiento directo
Es el metodo m as utilizado (acceso a la memoria de datos SRAM).
Consiste en codicar el nombre del registro en cuestion directamente en la
instruccion.
Ejemplo: MOVWF f , desplaza el contenido de W al registro f .
El registro f se referencia mediante su n umero codicado en 7 bits.
Este n umero es en realidad la direcci on del byte de la RAM correspondiente.
Mauricio L opez V. (Ingeniera) Microcontrolador PIC16F877 Enero, 2013 59 / 71
El PIC16F877 Direccionamiento de datos
Direccionamiento directo
As, la direcci on dentro del banco la determinan los 7 bits menos signicativos
procedentes de la instruccion (que es la direcci on del byte de la RAM
correspondiente).
Mauricio L opez V. (Ingeniera) Microcontrolador PIC16F877 Enero, 2013 60 / 71
El PIC16F877 Direccionamiento de datos
Formato general para instrucciones
Mauricio L opez V. (Ingeniera) Microcontrolador PIC16F877 Enero, 2013 61 / 71
El PIC16F877 Direccionamiento de datos
Direccionamiento directo
Para seleccionar el banco al que
se desea acceder en la RAM se
emplean los bits 6 y 5, del
Registro de Estados,
STATUS<6:5>, denominados
RP1 y RP0, respectivamente.
Mauricio L opez V. (Ingeniera) Microcontrolador PIC16F877 Enero, 2013 62 / 71
El PIC16F877 Direccionamiento de datos
Direccionamiento indirecto
El direccionamiento indirecto es el m as potente.
La idea del direccionamiento indirecto es que la direcci on de memoria del
registro al que se quiere acceder se introduce en otro registro.
Mauricio L opez V. (Ingeniera) Microcontrolador PIC16F877 Enero, 2013 63 / 71
El PIC16F877 Direccionamiento de datos
Direccionamiento indirecto
Emplea los registros INDF (posicion 00h de la memoria de datos) y el registro
FSR (File Select Register; posicion 04h de la memoria de datos) o registro de
seleccion de registro, en el que se introduce el n umero de registro direccionado.
La direcci on de la memoria del registro al que se quiere acceder se introduce en
el registro FSR. Es decir, el registro FSR sirve como puntero para el
direccionamiento indirecto.
Los 7 bits menos signicativos de FSR seleccionan la posicion y el bit m as
signicativo, junto con el bit IRP (Register Bank Select) del registro
STATUS<7> selecciona el banco.
Este tipo de direccionamiento permite acceder a 128 direcciones.
Mauricio L opez V. (Ingeniera) Microcontrolador PIC16F877 Enero, 2013 64 / 71
El PIC16F877 Direccionamiento de datos
Direccionamiento indirecto
Los 7 bits menos signicativos
de FSR seleccionan la posicion y
el bit m as signicativo, junto con
el bit IRP selecciona el banco.
Mauricio L opez V. (Ingeniera) Microcontrolador PIC16F877 Enero, 2013 65 / 71
El PIC16F877 Direccionamiento de datos
Direccionamiento indirecto
Cuando se quiere operar sobre el registro cuya direcci on de memoria
est a almacenada en FSR, se usar a el registro INDF (ejemplo, MOVWF INDF).
INDF no est a implementado fsicamente, en realidad se estara operando con la
direcci on a la que apunte el contenido de FSR.
El direccionamiento indirecto permite al programador crear rutinas generales
que no usen registros especcos. Las direcciones de dichos registros se asignaran
antes dentrar a la rutina.
La notaci on MOVWF INDF, desplaza el contenido del registro de trabajo W al
registro apuntado por FSR.
Mauricio L opez V. (Ingeniera) Microcontrolador PIC16F877 Enero, 2013 66 / 71
El PIC16F877 Direccionamiento de datos
Direccionamiento indirecto.
Ejemplo:
Si el FSR contiene el valor de 23h una instruccion que opere sobre INDF, opera
en realidad sobre la direcci on 23h.
Se puede decir, que la posicion 23h de memoria fue direccionada en forma
indirecta a traves del puntero FSR.
Si FSR = 23h, la instruccion MOVWF INDF carga el contenido del registro W en la
direcci on 23h de la RAM.
si FSR = 23h, la instruccion MOVF INDF, W carga el contenido de la direcci on
23h de la RAM en el registro de trabajo W.
El direccionamiento indirecto es muy util para el procesamiento de posiciones
consecutiva de memoria RAM de datos.
Mauricio L opez V. (Ingeniera) Microcontrolador PIC16F877 Enero, 2013 67 / 71
El PIC16F877 Direccionamiento de datos
Direccionamiento indirecto.
Mauricio L opez V. (Ingeniera) Microcontrolador PIC16F877 Enero, 2013 68 / 71
El PIC16F877 Direccionamiento de datos
Direccionamiento indirecto: Limpiando secci on de memoria de datos
El direccionamiento indirecto es muy util para el procesamiento de posiciones
consecutiva de memoria RAM de datos.
Mauricio L opez V. (Ingeniera) Microcontrolador PIC16F877 Enero, 2013 69 / 71
El PIC16F877 Direccionamiento de datos
Direccionamiento de datos
Mauricio L opez V. (Ingeniera) Microcontrolador PIC16F877 Enero, 2013 70 / 71
El PIC16F877 Direccionamiento de datos
Direccionamiento de datos
Mauricio L opez V. (Ingeniera) Microcontrolador PIC16F877 Enero, 2013 71 / 71

You might also like