Sistemas Digitales PDF: Microcontroladores PIC16F877A
Document Details

Uploaded by UseableFermat9903
UPNA
Tags
Summary
Este documento presenta una introducción a los sistemas digitales, cubriendo temas como la memoria y la arquitectura de microcontroladores PIC16F877A. Explora la programación en lenguaje ensamblador y C, incluyendo instrucciones, directivas y la manipulación de puertos. Se abordan conceptos como timers, interrupciones y módulos CCPWM, consolidando los conocimientos sobre microcontroladores.
Full Transcript
SISTEMAS DIGITALES Contenido Tema 1 – Introducción 4 Tipos de memorias 4 Capacidad de memoria 5 Expansión de capacidad 5 Ejercicio mapa de memoria...
SISTEMAS DIGITALES Contenido Tema 1 – Introducción 4 Tipos de memorias 4 Capacidad de memoria 5 Expansión de capacidad 5 Ejercicio mapa de memoria 7 Arquitectura 8 Lenguajes de programación 8 Tema 2 – PIC16F877A 9 Memoria de programa 9 PCLATH 10 La pila 13 Memoria de datos 13 Mapa de memoria de datos 15 Direccionamiento 16 Registros de funciones especiales 17 Registro STATUS 17 Tema 3 – Programación en ensamblador 18 Instrucciones 19 Clasificación de instrucciones por funcionalidad 19 Directivas del programa ensamblador 23 Macros 27 Operandos 28 Direccionamiento 31 Estructuras básicas de datos 32 Subrutina 35 Organización de un programa en lenguaje ensamblador 37 Codificación absoluta 37 Codificación reubicable/relativa 39 Ciclos de instrucción 41 Temporizaciones 42 Temporizaciones con bucles 43 Tema 4 – Puertos E/S 45 1 Funcionamiento de los puertos 46 Puerto A 49 Funcionamiento entradas/salidas 49 Parte analógica 50 Registros asociados al puerto A 51 Puerto B 52 Puerto C 53 Puerto D 54 Puerto E 55 Conexiones con periféricos comunes 56 Puerto paralelo esclavo (PSP) 60 Tema 5 -Programación en C 62 Tipos de datos 62 Operadores 63 Instrucciones 65 Organización del programa 65 Funciones 65 Inicialización del microcontrolador 66 Acceso a los registros 67 Recordatorio puertos y registros asociados 68 Conexiones asociadas a la placa PICDEM2+ (INPUTS) 69 Generación de retardos 69 Mezclar ensamblador y C (embeber ensamblador) 70 Manejo de la pantalla LCD en C 70 Tema 6 – Timers, interrupciones y módulos CCPWM 72 TIMER0 73 Relación con el WDT 75 TIMER1 76 TIMER2 77 Interrupciones 79 Fuentes de interrupción en el PIC16F877A 79 Registros asociados a las interrupciones 79 Interrupciones en ensamblador 82 Interrupciones en C 83 Módulos CCP 83 Modo de captura 85 2 Modo comparador 87 Modo PWM (Pulse Width modulation) 88 Tema 7 – Módulos analógicos 92 Conversión analógica/digital 92 Registros de control del módulo A/D 95 Efectos de un reset sobre el módulo A/D 96 Tiempos relacionados con la digitalización en el módulo conversión A/D 96 Programación del módulo de conversión A/D 98 Conversión de señal digital en analógica 99 Registros de control del módulo D/A 100 Comparadores analógicos 100 Registros de control del módulo comparador 102 Tema 8 – Circuitos auxiliares 103 Palabra de configuración 103 Módulo oscilador 104 RESET 104 Interrupciones 105 Memoria EEPROM y FLASH de datos 106 Lectura y escritura 107 Tema 9 – Comunicación serie 109 Módulo USART 109 Modos de comunicación 110 Standard RS-232 110 Módulo USART del PIC16F877A 111 Configuración 113 Generador de baudios 114 Módulo MSSP 115 Módulo I2C 115 Configuración 115 3 Tema 1 – Introducción Tipos de memorias 4 Capacidad de memoria Expansión de capacidad 5 6 Ejercicio mapa de memoria 7 Arquitectura 8 Lenguajes de programación Tema 2 – PIC16F877A 9 Memoria de programa 10 PCLATH 11 12 13 La pila Memoria de datos 14 15 Mapa de memoria de datos 16 Direccionamiento 17 Registros de funciones especiales 18 Registro STATUS 19 Tema 3 – Programación en ensamblador 20 Instrucciones Clasificación de instrucciones por funcionalidad 21 22 23 24 Directivas del programa ensamblador 25 26 27 28 29 Macros 30 Operandos 31 32 33 34 Direccionamiento 35 Estructuras básicas de datos 36 37 38 Subrutina 39 40 Organización de un programa en lenguaje ensamblador Codificación absoluta 41 42 Codificación reubicable/relativa 43 44 Ciclos de instrucción 45 Temporizaciones 46 Temporizaciones con bucles 47 48 Tema 4 – Puertos E/S 49 Funcionamiento de los puertos 50 51 52 Puerto A Funcionamiento entradas/salidas 53 Parte analógica 54 Registros asociados al puerto A 55 Puerto B 56 Puerto C 57 Puerto D 58 Puerto E 59 Conexiones con periféricos comunes 60 61 62 63 Puerto paralelo esclavo (PSP) 64 65 Tema 5 -Programación en C Tipos de datos 66 Operadores 67 68 69 Instrucciones Organización del programa Cuerpo del programa: Función main(), aquí va el programa principal Funciones Creación de funciones: Normalmente se ponen al final del archivo (después de main()) Deben estar declaradas antes de usarse – Normalmente se añade una lista de declaraciones de funciones antes del main() Se pueden pasar parámetros de entrada y resultados Declaración: Antes de la función main t_dato_retorno nombre_función(t_dato nombre1, t_dato2 nombre2, …); Donde: t_dato_retorno = tipo de dato que devuelve la función (puede ser void) nombre función = nombre con el que se llamará a la función desde el programa. t_dato1, t_dato2 … = tipo de dato de entrada (esta parte puede estar vacia). nombre1, nombre2 … = nombres de cada una de las variables de entrada que existirán únicamente de manera interna a la función. Código: Después de la función main t_dato_retorno nombre_función(t_dato nombre1, t_dato2 nombre2, …){ 70 DECLARACIÓN DE VARIABLES INTERNAS DE LA FUNCIÓN; CODIGO DE LA FUNCIÓN; return variable; // en el caso de que retorne algo } Inicialización del microcontrolador 71 Acceso a los registros El fichero.h (ej. ) incluye las definiciones de todos los registros de control de periféricos. Cualquier registro de control se puede acceder de dos modos: o En formato byte al registro completo (ej. PORTA) o Bit a bit: bits. o (ej. PORTAbits.RA0 o RA0) 72 Recordatorio puertos y registros asociados 73 Conexiones asociadas a la placa PICDEM2+ (INPUTS) Generación de retardos Hay tres maneras de generar retardos con el Pic16: – Temporizadores (Timers) => Capítulo 6. – Bucles (similar a ensamblador, pero sin control). 74 – Funciones de la librería delays.h o htc.h (programadas en ensamblador). Mezclar ensamblador y C (embeber ensamblador) 75 Manejo de la pantalla LCD en C *Importante: para poder introducir los valores en la memoria de la pantalla LCD, esta debe estar iniciada. Es decir, si utilizamos la función dispDefineChar antes de lcd_init, no se va a guardar el nuevo carácter. 76 La función printf internamente utiliza la función putch, que nosotros debemos definir a partir de la función lcd_putch: void putch (unsigned char c) { lcd_putch(c); } Tema 6 – Timers, interrupciones y módulos CCPWM 77 78 TIMER0 79 Relación con el WDT 80 TIMER1 81 82 TIMER2 83 Interrupciones FUNCIONAMIENTO Al generarse una interrupción: – Se pone a ‘0’ el bit GIE (no se permiten interrupciones simultáneas). – La dirección de retorno (PC) se coloca en la cima de la pila. – Se lleva al PC el vector de interrupciones (la dirección 0x0004) Cuando se retorna de una interrupción (RETFIE): 84 – Se activa el bit GIE (se pone a ‘1’ => Interrupciones globales habilitadas). – Se transfiere la dirección de la cima de la pila al PC. Fuentes de interrupción en el PIC16F877A – Interrupción externa por el terminal INT del microcontrolador (RB0). – Interrupción por cambio en el nivel lógico de las entradas RB4:RB7 del puerto B. – Interrupción por desbordamiento de los temporizadores TIMER0, TIMER1 y TIMER2. – Interrupción por algún evento en el módulo CCP – Interrupción por el puerto serie USART. – Interrupción por el convertidor A/D. Registros asociados a las interrupciones En el PIC16F877A tenemos: INTCON, PIR1, PIR2, PIE1, PIE2. 85 86 87 Interrupciones en ensamblador Interrupciones en C 88 Módulos CCP 89 90 Modo de captura 91 92 Modo comparador 93 Modo PWM (Pulse Width modulation) 94 95 96 97 Tema 7 – Módulos analógicos Conversión analógica/digital 98 99 100 Registros de control del módulo A/D 101 Efectos de un reset sobre el módulo A/D Tiempos relacionados con la digitalización en el módulo conversión A/D 102 103 Programación del módulo de conversión A/D 104 105 Conversión de señal digital en analógica 106 Registros de control del módulo D/A Comparadores analógicos 107 108 Registros de control del módulo comparador Tema 8 – Circuitos auxiliares Palabra de configuración 109 Módulo oscilador 110 RESET 111 Interrupciones Memoria EEPROM y FLASH de datos 112 113 Lectura y escritura 114 Tema 9 – Comunicación serie 115 Módulo USART Modos de comunicación 116 Standard RS-232 117 Módulo USART del PIC16F877A 118 Configuración 119 120 Generador de baudios 121 Módulo MSSP Modulo I2C Configuración 122 123 124