Sistemas con Microprocesadores I 1 Microcontroladores Introducción Harvard vs. von-Neumann Clasificación del procesador Segmentado o Pipeline Ortogonal vs. No ortogonal 2 Microcontroladores PIC Siglas y fabricante Caracterı́sticas principales 3 El PIC16F84 Arquitectura Primer Ejemplo: Ejercicio 1 Sı́mbolos básicos en los diagramas de flujo Operaciones en la ALU Instrucciones utilizadas Solución al Ejercicio 1 Estructura básica de un programa en PIC Solución al Ejercicio 1 (Segunda parte) 4 Laminillas complementarias Mauricio López V. (Ingenierı́a) Microcontroladores PIC Mayo, 2015 1 / 40 Microcontroladores Introducción Microcontroladores Un microcontrolador es: Un integrado programable. Contiene todos los componentes necesarios para el control de las funciones de una tarea definida. Microcontroladores de arquitectura cerrada. Modelo construido con: Un determinado CPU (Unidad de Procesamiento Central). Cierta capacidad de memoria de datos. Cierto tipo y capacidad de memoria de instrucciones. Un número de terminales de E/S (Entrada/Salida). Un conjunto de recursos auxiliares muy concretos. El modelo no permite variaciones ni ampliaciones. Debe encontrarse en su estructura todo lo que precisa para la aplicación en particular. Microchip a elegido principalmente este modo de arquitectura. Mauricio López V. (Ingenierı́a) Microcontroladores PIC Mayo, 2015 2 / 40 Microcontroladores Introducción Microcontroladores Un microcontrolador es: Un integrado programable. Contiene todos los componentes necesarios para el control de las funciones de una tarea definida. Microcontroladores de arquitectura cerrada. Modelo construido con: Un determinado CPU (Unidad de Procesamiento Central). Cierta capacidad de memoria de datos. Cierto tipo y capacidad de memoria de instrucciones. Un número de terminales de E/S (Entrada/Salida). Un conjunto de recursos auxiliares muy concretos. El modelo no permite variaciones ni ampliaciones. Debe encontrarse en su estructura todo lo que precisa para la aplicación en particular. Microchip a elegido principalmente este modo de arquitectura. Mauricio López V. (Ingenierı́a) Microcontroladores PIC Mayo, 2015 2 / 40 Microcontroladores Introducción Sistema basado en microcontrolador (arquitectura cerrada) Formado por un solo circuito integrado. Reduce considerablemente el tamaño y el costo. Mauricio López V. (Ingenierı́a) Microcontroladores PIC Mayo, 2015 3 / 40 Microcontroladores Introducción Microcontroladores Microcontroladores de arquitectura abierta. Además de disponer de una estructura interna determinada: Pueden emplear sus lı́neas de E/S para sacar al exterior los bus de: datos, direcciones y control. Tienen la posibilidad de ampliar la memoria y las terminales de E/S con circuitos integrados externos. Sin embargo, esto se asemeja a la solución que emplean los clásicos microprocesadores. Microchip dispone de modelos PIC con arquitectura abierta. Mauricio López V. (Ingenierı́a) Microcontroladores PIC Mayo, 2015 4 / 40 Microcontroladores Introducción Sistema basado en microprocesador (arquitectura abierta) Su arquitectura está compuesta por varios circuitos integrados que incluyen memorias y módulos de E/S. Mayor tamaño. Más costo y menor fiabilidad. Mauricio López V. (Ingenierı́a) Microcontroladores PIC Mayo, 2015 5 / 40 Microcontroladores Introducción Microcontrolador vs. Microprocesador Mauricio López V. (Ingenierı́a) Microcontroladores PIC Mayo, 2015 6 / 40 Microcontroladores Harvard vs. von-Neumann Arquitectura Harvard vs. von−Neumann Arquitectura von-Neumann. El CPU está conectado a una memoria única que almacena las instrucciones del programa y los datos. El formato de la palabra de todas las instrucciones y de los datos tiene la misma longitud y éste está limitado de acuerdo al ancho del bus de datos de la memoria utilizada, que es de 8 bits. Cuando deba acceder a una instrucción o a un dato de longitud de más de un byte, deberá realizar más de un acceso a la memoria. Arquitectura Harvard. Dos memorias independientes a las que se conectan mediante dos grupos de bus separados: Memoria de datos. Memoria de programa. Mauricio López V. (Ingenierı́a) Microcontroladores PIC Mayo, 2015 7 / 40 Microcontroladores Clasificación del procesador Clasificación del procesador Las CPU, en relación al tipo de instrucción que utilizan, pueden clasificarse en: CISC (Complex Instruction Set Computer ). Procesadores con un juego de instrucciones complejo. Repertorio de instrucciones elevado y algunas muy sofisticadas y potentes. Requieren muchos ciclos de reloj para ejecutar las instrucciones complejas. RISC (Reduced Instruction Set Computer ). Procesadores con un repertorio de instrucciones reducido. Instrucciones simples y suelen ejecutarse en un ciclo de máquina. Por lo general tienen una estructura segmentada (Pipeline) y ejecutan casi todas las instrucciones utilizando el mismo intervalo de tiempo. SISC (Specific Instruction Set Computer). Procesadores con un juego de instrucciones especı́fico para cada aplicación. Están destinados a aplicaciones muy concretas. Mauricio López V. (Ingenierı́a) Microcontroladores PIC Mayo, 2015 8 / 40 Microcontroladores Segmentado o Pipeline Procesador segmentado o Pipeline Realiza de manera simultánea la ejecución de una instrucción y la búsqueda de la siguiente instrucción. Se puede ejecutar una instrucción en un ciclo de máquina (un ciclo de máquina puede abarcar varios ciclos de reloj). Mauricio López V. (Ingenierı́a) Microcontroladores PIC Mayo, 2015 9 / 40 Microcontroladores Ortogonal vs. No ortogonal Arquitectura Ortogonal vs. No ortogonal Arquitectura simplificada interna de la ruta de datos en la CPU : En una arquitectura NO ortogonal (Microprocesador tradicional ): La salida de la ALU (Unidad Aritmética y Lógica) tiene como destino la entrada del acumulador. En una arquitectura ortogonal (Microcontrolador PIC ): Una instrucción puede utilizar cualquier elemento de la arquitectura como fuente o destino. Mauricio López V. (Ingenierı́a) Microcontroladores PIC Mayo, 2015 10 / 40 Microcontroladores PIC Siglas y fabricante El microcontrolador PIC PIC − Peripheral Interface Controller. Fabricante: Microchip Technology Inc. Mauricio López V. (Ingenierı́a) Microcontroladores PIC Mayo, 2015 11 / 40 Microcontroladores PIC Caracterı́sticas principales Caracterı́sticas principales de un microcontrolador PIC Arquitectura Harvard . El CPU se conecta de forma independiente y con bus diferentes con la memoria de instrucciones y con la de datos. La arquitectura Hartad permite al CPU acceder simultáneamente a las dos memorias. Mauricio López V. (Ingenierı́a) Microcontroladores PIC Mayo, 2015 12 / 40 Microcontroladores PIC Caracterı́sticas principales Caracterı́sticas principales de un microcontrolador PIC Se aplica la técnica de segmentación (Pipeline) en la ejecución de las instrucciones. La segmentación permite al procesador realizar al mismo tiempo la ejecución de una instrucción y la búsqueda del código de la siguiente. La mayorı́a de las instrucciones se ejecutan en un ciclo de instrucción o de máquina y equivale a cuatro ciclos de reloj. Las instrucciones de salto ocupan dos ciclos de instrucción. En éstas, una vez que se completa el primer ciclo de instrucción, se conoce la dirección de la siguiente instrucción a ejecutar. Mauricio López V. (Ingenierı́a) Microcontroladores PIC Mayo, 2015 13 / 40 Microcontroladores PIC Caracterı́sticas principales Caracterı́sticas principales de un microcontrolador PIC El formato de todas las instrucciones tiene la misma longitud . Todas las instrucciones tiene la misma longitud. Longitud de 12 bits − Gama baja. Longitud de 14 bits − Gama media. Longitud de 16 bits − Gama alta y Gama mejorada. Permite la optimización de la memoria de instrucciones. Facilita la construcción de ensambladores y compiladores. Procesador RISC (Reduced Instruction Set Computer ; Conjunto de juego de instrucciones reducido). 33 instrucciones − Gama baja (PIC16C5X). 35 instrucciones − Gama media (PIC16CXX). 56 instrucciones − Gama alta (PIC17CXX). 75 instrucciones − Gama mejorada (PIC18CXX). Mauricio López V. (Ingenierı́a) Microcontroladores PIC Mayo, 2015 14 / 40 Microcontroladores PIC Caracterı́sticas principales Caracterı́sticas principales de un microcontrolador PIC Todas las instrucciones son ortogonales. Cualquier instrucción puede manejar cualquier elemento de la arquitectura como fuente o como destino. Mauricio López V. (Ingenierı́a) Microcontroladores PIC Mayo, 2015 15 / 40 Microcontroladores PIC Caracterı́sticas principales Caracterı́sticas principales de un microcontrolador PIC Arquitectura basada en banco de registros. Todos los objetos del sistema (puertos de E/S, temporizadores, memoria de datos, etc.) están implementados fı́sicamente como registros. Diversidad de modelos de microcontroladores con prestaciones y recursos diferentes. Gran variedad de modelos de microcontroladores PIC que permite al usuario seleccionar el más conveniente para su proyecto. Mauricio López V. (Ingenierı́a) Microcontroladores PIC Mayo, 2015 16 / 40 Microcontroladores PIC Caracterı́sticas principales Caracterı́sticas principales de un microcontrolador PIC Herramientas de soporte y económicas. Microchip y otras empresas ponen a disposición de los usuarios numerosas herramientas para desarrollar hardware y software (programadores, simuladores, ensambladores, compiladores C, intérpretes y compiladores BASIC, etc.). Formato uniforme de los datos. En general los datos y los operandos tienen una longitud de 8 bits. Mauricio López V. (Ingenierı́a) Microcontroladores PIC Mayo, 2015 17 / 40 El PIC16F84 Arquitectura Arquitectura del PIC16F84 Mauricio López V. (Ingenierı́a) Microcontrolador PIC16F84 Mayo, 2015 18 / 40 El PIC16F84 Arquitectura Arquitectura del PIC16F84 Memoria de programa Flash/ROM de 1K x 14 bits. Memoria de datos RAM 68 x 8 bits (dividida en dos): 22 registros de propósito especı́fico (SFR, Registros de Funciones Especiales). 68 de propósito general. Memoria de datos EEPROM de 64 x 8 bits. Mauricio López V. (Ingenierı́a) Microcontrolador PIC16F84 Mayo, 2015 19 / 40 El PIC16F84 Arquitectura Memoria de datos RAM ⇐= Registros de funciones especiales (SFR). Se usan para el control de los periféricos (o dispositivos). ⇐= Registros de propósito general. Mauricio López V. (Ingenierı́a) Microcontrolador PIC16F84 Mayo, 2015 20 / 40 El PIC16F84 Primer Ejemplo: Ejercicio 1 Primer Ejemplo Ejercicio 1 : Sumar dos datos, por ejemplo 05h más 02h. El valor 05h almacenado en el registro de usuario llamado Operando1 y el valor 02h en el registro Operando2. El resultado de la suma guardarlo en el registro de usuario llamado Resultado. Asociar el Operando1 a la localidad de memoria 0x0C, el Operando2 a la localidad de memoria 0x0D y el Resultado a la localidad de memoria 0x0E. Es decir: Resultado ← Operando1 + Operando2 Para ello: Realizar un programa que almacene el valor 05h en la localidad de memoria 0x0C (registro de usuario Operando1) y el valor 02h en la localidad de memoria 0x0D (registro de usuario Operando2). Sumar los contenidos de las localidades de memoria 0x0C (Operando1) y 0x0D (Operando2). Guardar el resultado de la suma en la localidad de memoria 0x0E (registro de usuario Resultado). Usar como referencia el PIC16F84. Mauricio López V. (Ingenierı́a) Microcontrolador PIC16F84 Mayo, 2015 21 / 40 El PIC16F84 Primer Ejemplo: Ejercicio 1 Ejercicio 1: Resultado ← Operando1 + Operando2 Primer Operando: Localidad de memoria 0x0C, con contenido 05. 0 0 0 0 0 1 0 0 + 0 0 0 0 Resultado: Localidad de memoria 0x0E, con contenido 07. 1 0 0 1 0 0 0 0 1 1 1 0 Segundo Operando: Localidad de memoria 0x0D, con contenido 02. Memoria de Datos Localidades de memoria 0x0C Operando 1 0x0D Operando 2 0x0E Resultado Mauricio López V. (Ingenierı́a) Microcontrolador PIC16F84 Sumar el contenido de estas localidades de memoria. La suma se almacena en esta localidad de memoria. Mayo, 2015 22 / 40 El PIC16F84 Primer Ejemplo: Ejercicio 1 Primer Ejemplo En este primer ejercicio, también se aprenderá: La simbologı́a básica de los diagramas de flujo. El conjunto de instrucciones del lenguaje ensamblador en los microcontroladores PIC (solamente las instrucciones involucradas en la solución del problema). La arquitectura interna de la ruta de datos que entran y salen de la CPU. La estructura básica de un programa en ensamblador. El uso del MPLAB como herramienta para simula y compilar el programa, y grabar el microcontrolador PIC. Por lo que antes de dar solución al problema, primero se analizan los temas, siguiendo el orden: La simbologı́a básica de los diagramas de flujo. La arquitectura interna de la ruta de datos que entran y salen de la CPU cuando se ejecuta una instrucción que utiliza cualquier elemento de la arquitectura como fuente o destino. El conjunto de instrucciones del lenguaje ensamblador utilizados en la solución del ejercicio. Mauricio López V. (Ingenierı́a) Microcontrolador PIC16F84 Mayo, 2015 23 / 40 El PIC16F84 Sı́mbolos básicos en los diagramas de flujo Sı́mbolos básicos en los diagramas de flujo Inicio o Fin (Óvalo o elipse): Representa inicio o fin de la secuencia de operaciones. Proceso (rectángulo): Representa una operación de proceso (son la mayorı́a de las operaciones realizadas en un programa). Decisión (rombo): Representa una decisión que da lugar a una transferencia condicional de control (bifurcación entre dos camino posibles dependiendo de la respuesta: SI o NO). Subrutina: Representa un conjunto de operaciones cuyo empleo se repite varias veces en el programa. Mauricio López V. (Ingenierı́a) Microcontrolador PIC16F84 Mayo, 2015 24 / 40 El PIC16F84 Sı́mbolos básicos en los diagramas de flujo Sı́mbolos básicos en los diagramas de flujo Conector: Indica el camino que sigue un programa. Indica los puntos de ruptura y reanudación de la trayectoria de flujo (cı́rculos identificados mediante un número o caracter). Lı́neas y flechas: los sı́mbolos están conectados por lı́neas sólidas con puntos de flecha que indican el camino a seguir por el programa. Finalidad de los diagramas de flujo: Simplificar la codificación del algoritmo en el lenguaje particular del microcontrolador. Facilitar la comprensión del algoritmo por otras personas. Mauricio López V. (Ingenierı́a) Microcontrolador PIC16F84 Mayo, 2015 25 / 40 El PIC16F84 Operaciones en la ALU Operaciones en la ALU y el registro W Para operaciones lógicas o aritméticas que involucran dos operandos, un operando provienen del registro W y el otro provienen de cualquier otro registro o del propio código de instrucciones. El destino del resultado de la operación puede ser el registro W o el registro que fungió como el otro operando. Mauricio López V. (Ingenierı́a) Microcontrolador PIC16F84 Mayo, 2015 26 / 40 El PIC16F84 Instrucciones utilizadas Instrucciones utilizadas Conjunto de instrucciones del lenguaje ensamblador en los microcontroladores PIC: M OV LW M OV F ADDW F M OV W F Mauricio López V. (Ingenierı́a) Microcontrolador PIC16F84 Mayo, 2015 27 / 40 El PIC16F84 Instrucciones utilizadas M OV LW : Mueve una literal a W Mauricio López V. (Ingenierı́a) Microcontrolador PIC16F84 Mayo, 2015 28 / 40 El PIC16F84 Instrucciones utilizadas M OV F : Mueve un registro Mauricio López V. (Ingenierı́a) Microcontrolador PIC16F84 Mayo, 2015 29 / 40 El PIC16F84 Instrucciones utilizadas ADDW F : Suma W y un registro Mauricio López V. (Ingenierı́a) Microcontrolador PIC16F84 Mayo, 2015 30 / 40 El PIC16F84 Instrucciones utilizadas M OV W F : Mueve W a un registro Mauricio López V. (Ingenierı́a) Microcontrolador PIC16F84 Mayo, 2015 31 / 40 El PIC16F84 Solución al Ejercicio 1 Solución al Ejercicio 1: Pseudocódigo a) Inicialización del PIC Variables de usuario. b) Inicialización del contenido de los dos operandos Operando1 ← 05h y Operando2 ← 02h. c) Suma de los operandos y almacenamiento del resultado. Resultado ← Operando1 + Operando2. d) Fin del programa. Mauricio López V. (Ingenierı́a) Microcontrolador PIC16F84 Mayo, 2015 32 / 40 El PIC16F84 Solución al Ejercicio 1 Solución al Ejercicio 1: Diagrama de flujo INICIO Configuración del PIC (puertos, SFR, constantes, variables). Inicialización del PIC (variables). Operando1 <-- H'05' Inicialización del contenido del primer operando. Operando2 <-- H'02' Inicialización del contenido del segundo operando. Resultado <-- Operando2 + Operando1 FIN Mauricio López V. (Ingenierı́a) Suma de los operandos. Fin del programa. Microcontrolador PIC16F84 Mayo, 2015 33 / 40 El PIC16F84 Solución al Ejercicio 1 Solución al Ejercicio 1: Diagrama de flujo extendido INICIO Configuración del PIC (puertos, SFR, constantes, variables). INICIO W <-- 05h Operando1 <-- W Configuración del PIC (puertos, SFR, constantes, variables). Inicialización del PIC (variables). Operando1 <-- H'05' Inicialización del contenido del primer operando. Operando2 <-- H'02' Inicialización del contenido del segundo operando. W <-- 02h Operando2 <-- W Resultado <-- Operando2 + Operando1 Suma de los operandos. W <-- Operando1 FIN Fin del programa. W <-- W + Operando2 Resultado <-- W FIN Mauricio López V. (Ingenierı́a) Microcontrolador PIC16F84 Mayo, 2015 34 / 40 El PIC16F84 Solución al Ejercicio 1 Solución al Ejercicio 1: Diagrama de flujo extendido INICIO Configuración del PIC (puertos, SFR, constantes, variables). W <-- 05h Operando1 <-- W W <-- 02h Operando1 Operando2 Resultado EQU EQU EQU 0x0c 0x0d 0x0e ; Define la posicion del Operando 1 ; Define la posicion del Operando 2 ; Define la posicion del Resultado Carga el número 5 a W. Mueve lo que tengas en W al "Operando1". Carga el número 2 a W. Operando2 <-- W Mueve lo que tengas en W al "Operando2". W <-- Operando1 Mueve el contenido de memoria "Operando1" al registro W. W <-- W + Operando2 Resultado <-- W FIN Suma contenido de memoria "Operando2" con W y lo almacena en W. Mueve W a la memoria "Resultado". Fin del programa. código Mauricio López V. (Ingenierı́a) Microcontrolador PIC16F84 Mayo, 2015 35 / 40 El PIC16F84 Estructura básica de un programa en PIC Estructura básica de un programa Ensamblador Mauricio López V. (Ingenierı́a) Microcontrolador PIC16F84 Mayo, 2015 36 / 40 El PIC16F84 Solución al Ejercicio 1 (Segunda parte) Consideraciones en la codificación del programa (Solución Ejercicio 1) Declaraciones de los registros especiales. Declaraciones de las constantes. Declaraciones de las variables en la RAM: Operando1, Operando2 y Resultado. Mauricio López V. (Ingenierı́a) Microcontrolador PIC16F84 Mayo, 2015 37 / 40 El PIC16F84 Solución al Ejercicio 1 (Segunda parte) Listado del programa (Solución Ejercicio 1) Programa que suma el contenido de la posicion 0x0C y 0x0D y guarda en 0x0E. List p=16f84 ; Introduce el modelo del PIC que se usa. ;----------------------------------------------------------------------------------------------; Zona de etiquetas Operando1 EQU 0x0C ; Define la posicion del Operando 1 Operando2 EQU 0x0D ; Define la posicion del Operando 2 Resultado EQU 0x0E ; Define la posicion del Resultado ;----------------------------------------------------------------------------------------------ORG 0 ; Comando que indica al ensamblador la dirección ; de la memoria de programa donde situa la siguiente ; instrucción. MOVLW 0x05 ; Carga el número 5 a W (acumulador). 5 ----> W. MOVWF Operando1 ; Mueve lo que tengas en el acumulador al ‘Operando 1’ ; W ----> Operando 1 MOVLW 0x02 ; Carga un número 2 al registro acumulador. 2 ----> W. MOVWF Operando2 ; Mueve lo que tengas en el acumulador al ‘Operando 2’ ; W ----> Operando 2. MOVF Operando1,0 ; Mueve lo que tengas en el contenido de memoria dado ; por el Operando 1 al registro acumulador. ; Operando 1 ----> W ADDWF Operando2,0 ; Suma lo que tengas en el contenido de memoria dado ; por el Operando 2 con el registro acumulador y lo ; almacena en el acumulador. ; W + Operando 2 ----> W MOVWF Resultado ; Mueve lo que tengas en el acumulador al contenido de ; memoria dado por el ‘Resultado’. ; W ----> Resultado END Mauricio López V. (Ingenierı́a) Microcontrolador PIC16F84 Mayo, 2015 38 / 40 Laminillas complementarias Laminillas complementarias Laminillas complementarias Mauricio López V. (Ingenierı́a) Microcontrolador PIC16F84 Mayo, 2015 39 / 40 Laminillas complementarias Solución al Ejercicio 1: Diagrama de flujo extendido INICIO Configuración del PIC (puertos, SFR, constantes, variables). W <-- 05h Operando1 <-- W W <-- 02h Operando2 <-- W W <-- Operando1 LIST p=16F84A ;----------------------------------------------------------------------------------------; Zona de etiquetas Operando1 EQU 0x0c ; Define la posicion del Operando 1 Operando2 EQU 0x0d ; Define la posicion del Operando 2 Resultado EQU 0x0e ; Define la posicion del Resultado MOVLW 0x05 ; Carga el número 5 a W. 5 ----> W. MOVWF Operando1 ; Mueve lo que tengas en W al ; Operando 1. W ----> Operando 1. MOVLW 0x02 ; Carga el número 2 a W. 2 ----> W. MOVWF Operando2 ; Mueve lo que tengas en W al ; Operando 2. W ----> Operando 2. MOVF Operando1,0 ; Mueve el contenido de memoria ; (Operando 1) al registro W. ADDWF Operando2,0 ; Suma contenido de memoria ; (Operando 2) con W y lo almacena ; en W. W + Operando 2 ----> W. MOVWF Resultado ; Mueve W a la memoria ; (Resultado). W ----> Resultado. W <-- Operando2 + Operando1 Resultado <-- W FIN END ; Fin del programa. return Mauricio López V. (Ingenierı́a) Microcontrolador PIC16F84 Mayo, 2015 40 / 40