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