Electrónica Industrial Tema 11. Introducción a los Microprocesadores y Microcontroladores Unidad 11 Introducción a los microprocesadores y microcontroladores Andres.Iborra@upct.es Juan.Suardiaz@upct.es Septiembre 2002 ⋅1⋅ Electrónica Industrial Tema 11. Introducción a los Microprocesadores y Microcontroladores CONTENIDO Unidad 11. Introducción a los microprocesadores y microcontroladores. 11.1 Elementos básicos de un sistema microprocesador. 11.2 Microprocesadores frente a microcontroladores. 11.3 Arquitectura del PIC16F84. 11.4 Fundamentos de programación del PIC16F84. 11.5 Ejemplos de programación del PIC16F84. OBJETIVOS ESPECÍFICOS ! Estudiar los bloques básicos de un microprocesador. ! Comprender la diferencia entre lenguaje máquina y lenguaje ensamblador. ! Comprender el funcionamiento básico de una CPU. ! Estudiar la arquitectura básica del microcontrolador PIC 16F84 ! Distinguir entre puerto de E/S dedicado y puerto de E/S “mapeado” en memoria. ! Estudiar la E/S por sondeo (“polling”), la E/S controlada por interrupción, y las interrupciones software. ! Saber programar aplicaciones sencillas en un PIC16F84. ⋅2⋅ Electrónica Industrial Tema 11. Introducción a los Microprocesadores y Microcontroladores 1. ELEMENTOS BÁSICOS DE UN SISTEMA MICROPROCESADOR El microprocesador El microprocesador es un circuito integrado digital que puede programarse con una serie de instrucciones, para realizar funciones específicas con los datos. Cuando un microprocesador se conecta a un dispositivo de memoria y se provee de dispositivos de entrada salida, pasa a ser un sistema microprocesador. ⋅3⋅ Electrónica Industrial Tema 11. Introducción a los Microprocesadores y Microcontroladores 1. ELEMENTOS BÁSICOS DE UN SISTEMA MICROPROCESADOR Bus de direcciones Bus de datos CPU (µP) Bus de control Memoria • • • • • • • • • Puerto de entrada Puerto de salida Periférico (Teclado, ratón, monitor) Periférico (Impresora, monitor) Existen tres bloques funcionales básicos: CPU, memoria y puertos. Los tres se encuentran conectados mediante buses. Los dispositivos de entrada y salida se conectan mediante puertos. Un puerto es una interfaz física de una computadora a través del la cual pasan los datos hacía y desde los periféricos. Los programas son un conjunto de instrucciones que entiende la CPU y que se ejecutan para resolver un problema específico. El programa se almacena en memoria. Cada posición de memoria tiene asignada una dirección exclusiva. Las instrucciones son leídas por la CPU a través del bus de datos cuando ésta las solicita. La CPU las interpreta, y las ejecuta secuencialmente. Con frecuencia las instrucciones vienen acompañadas de datos o direcciones, con objeto de modificarlos. La CPU genera señales de control para coordinar las transacciones. ⋅4⋅ Electrónica Industrial Tema 11. Introducción a los Microprocesadores y Microcontroladores 1. ELEMENTOS BÁSICOS DE UN SISTEMA MICROPROCESADOR Unidad central de proceso(CPU) (I). Unidades funcionales Es un circuito de gran escala de integración que contiene la CPU completa de una computadora en un único circuito integrado. Los microprocesadores contienen diversas unidades funcionales que realizan trabajos específicos. El modo de relacionarse entre ellas establece la arquitectura interna del µP, el conjunto de instrucciones disponibles y el modo de ejecutarse cada una de ellas. 6800 de Motorola Unidad aritmético lógica (ALU) Es el elemento clave de procesamiento del µP. Esta gobernada por la unidad de control. Se utiliza para realizar operaciones aritméticas y lógicas. Los datos de la ALU se obtienen de la matriz de registros. Matriz de registros Es la colección de registros disponibles pro el programador dentro del microprocesador. Existen también, registros invisibles no disponibles por el programador. Unidad de control Proporciona las señales de temporización y control. ⋅5⋅ Electrónica Industrial Tema 11. Introducción a los Microprocesadores y Microcontroladores 1. ELEMENTOS BÁSICOS DE UN SISTEMA MICROPROCESADOR Unidad central de proceso(CPU) (II). Buses Bus de direcciones Es un bus de un solo sentido a través del cual el microprocesador envía un código de dirección a una memoria o dispositivo externo. 16 líneas = 216= 65.536 posisiones = 64 K (8080) 20, 24 bits 32 líneas = 232= 4.294.467.296 = 4 Gigas (Pentium) Bus de datos Es un bus de dos sentidos (8, 16, 32 o 64 bits). Bus de control Señales para ciclos de lectura / escritura, ciclos de espera, interrupciones, etc. ⋅6⋅ Electrónica Industrial Tema 11. Introducción a los Microprocesadores y Microcontroladores 1. ELEMENTOS BÁSICOS DE UN SISTEMA MICROPROCESADOR Unidad central de proceso(CPU) (III)Programación. Todos los µP disponen de un conjunto básico de instrucciones que se pueden agrupar según su funcionalidad. En el Pentium se pueden distinguir siete grupos básicos: • • • • • • • Transferencia de datos. Aritmética. Manipulación de bits. Bucles y saltos. Cadenas de caracteres. Subrutinas e interrupciones. Control del procesador. Las instrucciones son decodificadas antes de que sean ejecutadas. A las instrucciones en código binario se denomina lenguaje máquina. Con objeto de no escribir los programas en lenguaje máquina se utilizan nemónicos que constituyen lo que se conoce como lenguaje ensamblador. Los programas ensambladores se encargan de traducir los nemónicos en código máquina. También incluyen pseudo-instrucciones necesarias para facilitar la programación (reserva de zonas de datos, código, stack, variables, etc.). Un compilador traduce las instrucciones de un lenguaje de alto nivel máquina. ⋅7⋅ Electrónica Industrial Tema 11. Introducción a los Microprocesadores y Microcontroladores 2. MICROPROCESADORES VS MICROCONTROLADORES. Concepto general de microcontrolador. " Es un C.I. que contiene todos los componentes de un computador. Aplicaciones 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Periféricos y dispositivos auxiliares de los computadores. Electrodomésticos. Aparatos portátiles y de bolsillo (tarjetas, monederos, teléfonos..) Máquinas expendedoras y juguetería. Instrumentación. Industria de automoción. Control industrial y robótica. Electromedicina. Sistema de navegación espacial. Sistemas de seguridad y alarma. Domótica en general. Panel de instrumentos Control de velocidad Sistema de navegación Control climatización Control del motor Sistema antirrobo Antideslizamiento ⋅8⋅ Electrónica Industrial Tema 11. Introducción a los Microprocesadores y Microcontroladores 2. MICROPROCESADORES VS MICROCONTROLADORES. Arquitectura Von Newman VS Harvard Algunos microcontroladores optimizan su operatividad mediante una arquitectura Harvard. Procesador (CPU) Memoria Entrada/Salida Bus de Bus de direcciones Bus de control Memoria datos Procesador Memoria programa Bus de datos Bus de direcciones Bus de control de datos (instrucciones) Bus de datosBus de memoria de programa Bus de direcciones de memoria de programa ⋅9⋅ Electrónica Industrial Tema 11. Introducción a los Microprocesadores y Microcontroladores 2. MICROPROCESADORES VS MICROCONTROLADORES. Implantación en el mercado Algunos fabricantes de µC con algunos modelos. Modelos de µC Fabricante INTEL 8048, 8051, 80C196, 80186, 80188, 80386EX MOTOROLA 6805, 68HC11, 68HC12, 68HC16, 683XX HITACHI HD64180 PHILIPS Gama completa de clónicos del 8051 SGS-THOMSON (ST) ST-62XX MICROCHIP PICs NATIONAL SEMICONDUCTOR COP8 ZILOG Z8, Z80 TEXAS INSTRUMENTS TMS370 TOSHIBA TLCS-870 INFINEON C500 DALLAS DS5000 NEC 78K Ranking europeo de ventas de MCU de 8 bits (año 1999). ⋅10⋅ Electrónica Industrial Tema 11. Introducción a los Microprocesadores y Microcontroladores 3. ARQUITECTURA DEL PIC16F84 Microcontroladores PIC de Microchip En la actualidad se emplean cada vez más debido a: # Velocidad # Precio # Facilidad de uso # Información y herramientas de apoyo. Gamas # # # Familia PIC12C5XX PIC12C67X PIC12F6XX PIC16C5X PIC16C55X PIC16C6X PIC16X62X PIC16C64X PIC16C7X PIC16C71X PIC16C43X PIC16C78X PIC16C7X5 PIC16C77X PIC16F87X PIC16X8X PIC16F7X PIC16C9XX PIC17C4X PIC17C75X PIC18CXXX PIC18F0XX PIC18FXX2 PIC18FXX31 PIC12C5X, gama baja o clásica ( palabra de programa de 12 bits). PIC16CXXX, gama media (palabra de programa de 14 bits). PIC17CXXX, PIC18XXX, gama alta (palabra de programa de 16 bits). Descripción 8-Pin, 8-Bit CMOS 8-Pin, 8-Bit CMOS con Convertidor A/D 8-Pin, 8-Bit Flash con EEPROM y A/D EPROM/ROM 8-Bit CMOS EPROM-Based 8-Bit CMOS 8-Bit CMOS 8-Pin EPROM-Based 8-Bit CMOS con Comparador 8-Bit EPROM con Comparador analógico 8-Bit CMOS con convertidor A/D. 18 Pin, 8-Bit CMOS con convertidor A/D. 18/20 Pin, 8-Bit CMOS con bus LIN. Convertidor A/D, D/A, amplificador operacional, comparadores y PSMC. 8-Bit CMOS, A/D , para aplicaciones de USB, PS/2 y dispositivo serie. 20-pin, 28-pin y 40-Pin, 8-Bit CMOS con convertidor A/D 12-bit. 28/40-Pin, 8-Bit CMOS FLASH con convertidor A/D 10-bit . 18-Pin, 8-Bit CMOS FLASH/EEPROM Microcontrollers 28/40-pin 8-bit CMOS FLASH LCD, convertidor A/D 8 y 10-bit . 8-Bit CMOS EPROM/ROM, alto rendimiento. 8-Bit CMOS EPROM, alto rendimiento 8-Bit, arquitectura mejorada. 8-Pin, 8-Bit FLASH con EEPROM, PLVD, BOR y PWM. Protección de código, 256 EEPROM, LVD, PLL, SLEEP ,multiplicador 8x8 , PSP. 28/40-Pin FLASH con EEPROM, PLVD, PBOR, A/D 10-bit PWM. ⋅11⋅ Electrónica Industrial Tema 11. Introducción a los Microprocesadores y Microcontroladores 3. ARQUITECTURA DEL PIC16F84 Arquitectura general Características generales. # Consta de una ALU, decodificador de instrucciones, y una matriz de registros. # Incluye también un módulo de memoria para programa y una memoria auxiliar para datos del tipo EEPROM, por si falla la alimentación. # Arquitectura Harvard. # Bus de datos de 8 bits, bus de instrucciones de 14 bits. # Conjunto de instrucciones reducido, RISC (35 instrucciones). # Las instrucciones se ejecutan en 1 ciclo, excepto los saltos (2 ciclos). # Dispone de dos puertos de entrada salida. # Entradas multiplexadas para interrupciones y el contador/temporizador. # Dispone de un perro guardian o watchdog. ⋅12⋅ Electrónica Industrial Tema 11. Introducción a los Microprocesadores y Microcontroladores 3. ARQUITECTURA DEL PIC16F84 Memoria de programa # Tipo Flash integrada en el propio chip. # Memoria de 1K x 14 (000h – 3FFh). # En la posición 000h está el Vector de Reset. o Conexión alimentación o Al aplicar 0V al terminal MCLR o Desbordamiento perro guardián (watchdog). # En la posición 04h está el Vector de Interrupción. o Activación del pin INT o Desbordamiento del temporizador TMR0 o Cambio de estado en pines RB4 - RB7 o Final de escritura en la EEPROM de datos. # Todo lo grabado (datos y programa) se puede modificar sobre el circuito por las antradas series RB6(clk)/RB7(datos) ⋅13⋅ Electrónica Industrial Tema 11. Introducción a los Microprocesadores y Microcontroladores 3. ARQUITECTURA DEL PIC16F84 Memoria de datos Tipo SRAM Dos bancos o páginas de 128 registros de 8 bits. o Página ‘0’ ⇒ 80 registros: 12 especiales (SFR) y 68 generales (GPR). o Página ‘1’ ⇒ 12 registros de funciones específicas (SFR). Tipo EEPROM • 64 registros de 8 bits cada uno. La información puede permanecer hasta 40 años. • No se puede acceder a los mismos de una manera directa, sino que hay que hacerlo por medio del los Registros de Función Específica (SFR). ⋅14⋅ Electrónica Industrial Tema 11. Introducción a los Microprocesadores y Microcontroladores 3. ARQUITECTURA DEL PIC16F84 Puertos de entrada /salida PUERTO RA0-RA4 Puerto bidireccional de Entrada/Salida. RA4/T0CKL puede comportarse como una Entrada/Salida normal, o bien como una entrada de reloj del contador/temporizador TMR0. PUERTO RB0-RB7 Puerto bidireccional de Entrada/Salida. RB0/INT puede ser utilizado como una entrada de interrupciones. RB4/RB7 pueden ser utilizados para generar interrupciones ante un cambio de nivel. RB6/RB7 pueden ser utilizados para programa el PIC. ⋅15⋅ Electrónica Industrial Tema 11. Introducción a los Microprocesadores y Microcontroladores 3. ARQUITECTURA DEL PIC16F84 Recursos auxiliares (I) Oscilador # Mediante los condensadores y el oscilador se puede seleccionar la frecuencia del reloj: 455KHz, 2 MHz, 4MHz, 8MHz y 10 MHz. # Ciclo de instrucción = 4 · Periodo de reloj Ejemplo: Frecuencia de reloj = 4MHz ⇒ Periodo de reloj = 250ns. Ciclo de instrucción = 1/Fosc x 4 = 250 ns x 4 = 1 µs. Estado de reposo (SLEEP) # Consumo < 3µA ⋅16⋅ Electrónica Industrial Tema 11. Introducción a los Microprocesadores y Microcontroladores 3. ARQUITECTURA DEL PIC16F84 Recursos auxiliares (II) Temporizador/Contador Consiste en un contador cíclico de 00h a FFh. Cuando se llega a FF se produce un desbordamiento. Dos modos de trabajo: # Temporizador: determinar intervalos concretos de tiempo. Se incrementa con cada ciclo de instrucción o divisor. # Contador: contar impulsos producidos en el exterior del sistema. Perro guardián (watchdog) # Temporizador independiente del reloj principal. Tiene su propio oscilador, luego sigue funcionando en modo de bajo consumo. # Permite detectar cuando se ha “colgado” el programa. Cuando llega a FFh, se produce el desbordamiento y se provoca el RESET del PIC. # El tempo típico de un ciclo es de 18 ms. pero se puede ampliar a 2,5 seg. ⋅17⋅ Electrónica Industrial Tema 9. Introducción a los Microprocesadores y Microconytroladores 3. ARQUITECTURA DEL PIC16F84 Distribución de los terminales # VDD y VSS : Alimentación (2 V - 6 V). # MCLR (Master Clear): Reset cuando la tensión < 1,7V . # RA0- RA4: Entradas/salidas del puerto A. o IO = 20mA; ∑ IO = 50mA o II = 25mA; ∑ II = 80mA o RA4/T0CK1 puede ser contador/temporizador externo TMR0. # RB0-RB7: Entradas/salidas del puerto B. o IO = 20mA; ∑ IO = 100mA o II = 25mA; ∑ II = 150mA o RB0/INT puede ser interrupción externa. # OSC1/CLKIN OSC2/CLKOUT : conexión del oscilador del reloj principal. VDD PIC16F84 10K 100 RA2 RA1 RA3 RA0 RA4/T0CKI OSC1 MCLR / Vpp OSC2 VDD VSS RB0/INT RB7 RB1 RB6 RB2 RB5 RB3 RB4 ⋅18⋅ Cristal 4MHz 27pF 27pF +5V Electrónica Industrial Tema 9. Introducción a los Microprocesadores y Microconytroladores 3. ARQUITECTURA DEL PIC16F84 Periféricos de entrada/salida Pulsadores Rebotes Pulsación Interruptores R IN S Diodos LED Relés ⋅19⋅ Electrónica Industrial Tema 9. Introducción a los Microprocesadores y Microconytroladores 4. FUNDAMENTOS DE PROGRAMACIÓN PIC16F84 Conceptos generales Un programa es un conjunto ordenado de instrucciones cuya ejecución determina el procesado de los datos y la obtención de resultados. EL PIC16F84 entiende un juego de 35 instrucciones (14 bits). Estructura del programa Modelo de procesador y sistema de numeración List Radix p=16F84 hex ;Se utiliza el microcontrolador PIC16F84 ; Se usará el sistema hexadecimal equ 0x03 equ 0x05 ;La etiqueta “ESTADO” está asociada a la dirección 0x03 ;La etiqueta “PUERTAA” está asociada a la dirección 0x05 Variables ESTADO PUERTAA Origen del programa org 0x00 ;Inicio de programa org 0x00 goto INICIO org 0x05 ;La siguiente instrucción estará al inicio de la memoria ;Salta a la dirección etiquetada con INICIO ;La siguiente instrucción estará en la dirección 0x05 INICIO ------------end Cuerpo del programa y final ....... ...... end ⋅20⋅ Electrónica Industrial Tema 9. Introducción a los Microprocesadores y Microconytroladores 5. EJEMPLOS DE PROGRAMACIÓN Ejemplo 1 - Sumar el contenido de dos posiciones de memoria (I) Banco 0 Registros especiales 5 2 ¿?? 00h 0Bh 0Ch OPERANDO1 0Dh OPERANDO2 0Eh RESULTADO 4Fh # Instrucción mov. Permite transferir el contenido de un registro fuente f a un registro destino d. En los PIC todos los datos residen en posiciones de la memoria de datos a excepción del registro W. La instrucción mov puede mover tres tipos fundamentales de operandos: 1. El contenido del registro W. 2. El contenido de una posición de memoria de datos. 3. Un literal o valor. # movf f,d : mueve el contenido del operando fuente f (posición de la memoria de datos) al destino d (puede ser W o la propia fuente). # movwf f : mueve el contenido del registro W a la posición de memoria especificada por f. # movlw k : mueve el valor k al registro W. # addwf f,d : suma el contenido del registro W con el de f y deposita el resultado en W si d = 0 (o W), o en f si d = 1. # addlw k : suma al contenido del registro W el valor k y deposita el resultado en W. ⋅21⋅ Electrónica Industrial Tema 9. Introducción a los Microprocesadores y Microconytroladores 5. EJEMPLOS DE PROGRAMACIÓN Ejemplo 1 - Sumar el contenido de dos posiciones de memoria (II) INICIO Declaración de variables OPERANDO1 ← ‘5’ OPERANDO2 ← ‘2’ RESULTADO = OPERANDO1 + OPERANDO2 END List OPERANDO1 OPERANDO2 RESULTADO org p=16f84 equ 0x0C equ 0x0D equ 0x0E 0x00 ;origen INICIO movlw movwf movlw movwf addwf movwf end 0x05 ;W ← ‘5’ OPERANDO1 ;OPERANDO1←W 0x02 ;W ← ‘2’ OPERANDO2 ;OPERANDO2←W OPERANDO1,W ;OPERANDO1+W →W RESULTADO ;RESULTADO ←W ⋅22⋅ Electrónica Industrial Tema 9. Introducción a los Microprocesadores y Microconytroladores 5. EJEMPLOS DE PROGRAMACIÓN Ejemplo 2 - Leer y sacar datos por los puertos (I) VDD VDD 10K VDD 2 x 10K PIC16F84 10K 100 RA2 RA1 RA3 RA0 RA4/T0CKI OSC1 MCLR / Vpp OSC2 4MHz 27pF VDD VSS RB0/INT RB7 RB1 RB6 RB2 RB5 RB3 RB4 27pF +5V 3x 680 Banco 0 Banco 1 00h 80h 03h STATUS 05h 06h PORTA PORTB 83h TRISA TRISB 85h 86h Registro STATUS (dirección 03h) RP1 RP0 bit7 # bit 6 – 5: RP0-RP1 Selección del banco de registros 00 = Banco 0 01 = Banco 1 0BH Registro PORTA (dirección 05h Banco 0) -RA4/T0CKI RA3 RA2 RA1 bit7 -- : los tres primeros bits de PORTA siempren se leerán como ‘0’ Registro TRISA (dirección 05h Banco 1) -TRISA4 bit7 TRISA3 TRISA2 TRISA1 RA0 bit0 TRISA0 bit0 ⋅23⋅ bit0 Electrónica Industrial Tema 9. Introducción a los Microprocesadores y Microconytroladores 5. EJEMPLOS DE PROGRAMACIÓN Ejemplo 2 - Leer y sacar datos por los puertos (II) Aparecen en este ejemplo algunas instrucciones nuevas: # bsf f,d : pone a ‘1’ el bit d del registro f . # bcf f,d : pone a ‘0’ el bit d del registro f . # goto etiqueta : salta hasta la instrucción que va precedida por la etiqueta. INICIO Declaración de variables Configuración de E/S PORTB ← PORTA List p=16f84 STATUS equ PORTA equ PORTB equ 0x03 0x05 0x06 org 0x00 goto INICIO org 0x05 INICIO bsf movlw movwf movlw movwf bcf STATUS,5 b’00000000’ PORTB b’00011111’ PORTA STATUS,5 ;salta el vector de interrupción ;cambia al banco1 ;W ← ‘00’ ;TRISB←W (PORTB salidas) ;W ← ‘FF’ ;TRISA←W (PORTA entradas) ;cambia al banco0 BUCLE movf PORTA,W movwf PORTB goto BUCLE end ;W ← PORTA ;PORTB ← W ⋅24⋅ Electrónica Industrial Tema 9. Introducción a los Microprocesadores y Microconytroladores 5. EJEMPLOS DE PROGRAMACIÓN Ejemplo 3 - Leer y sacar datos por los puertos, condiciones (I) VDD VDD PIC16F84 10K 100 RA2 RA1 RA3 RA0 RA4/T0CKI OSC1 MCLR / Vpp OSC2 VSS 680 10K 27pF 4MHz 27pF VDD RB0/INT RB7 RB1 RB6 RB2 RB5 RB3 RB4 +5V El LED se ilumina cuando se cierra el interruptor. Este ejemplo incorpora las instrucciones: # btfsc f,d : salta una instrucción si el bit d del registro f es ‘0’, si no, sigue por la siguiente instrucción. # clrf f : borra el contenido del registro f. ⋅25⋅ Electrónica Industrial Tema 9. Introducción a los Microprocesadores y Microconytroladores 5. EJEMPLOS DE PROGRAMACIÓN Ejemplo 3-Leer y sacar datos por los puertos, condiciones (II) INICIO Declaración de variables Configuración de E/S Apagar led RB0 =’0’ NO RA0 ON RA0=’0’ SI Encender led RB0 =’1’ List p=16f84 STATUS equ PORTA equ PORTB equ 0x03 0x05 0x06 org 0x00 goto INICIO org 0x05 ;salta el vector de interrupción INICIO bsf STATUS,5 clrf PORTB movlw b’00011111’ movwf PORTA bcf STATUS,5 ;cambia al banco1 ;Puerto B configurado como salidas ;Puerto A configurado como entradas ;cambia al banco0 BUCLE btfsc goto bsf goto RA0_es_1 bcf goto end PORTA,0 RA0_es_1 PORTB,0 BUCLE ;¿RA0=0? salta si RA0 es ‘0’ PORTB,0 BUCLE ;pone a ‘0’ RB0, apaga el led ;pone a ‘1’ RB0, enciende el led ⋅26⋅