Tema 6: Microcontroladores



Documentos relacionados
Instrucciones para programar el PIC16F877

Las Instrucciones. A continuación vamos a presentar el conjunto de instrucciones básico de los Microcontroladores Picmicro.

Practica de PIC 16F84

Programa del PIC 16F877A

DESCRIPCIÓN DE LAS INSTRUCCIONES

INSTRUCCIONES DE ENSAMBLADOR

ORGANIZACIÓN INTERNA + INTRODUCCIÓN AL ENSAMBLADOR

Indice. Escrito por Administrator Martes, 02 de Septiembre de :45 - Actualizado Domingo, 20 de Septiembre de :45 1 / 15

El único lenguaje que entienden los microcontroladores es el código máquina formado por ceros y unos del sistema binario.

Características generales

Set de instrucciones Microcontrolador PIC.

El Microcontrolador PIC16F877. Resumen de hoja de datos

Microcontrolador PIC 16F84

GAMA BAJA (PIC16C5X) ARQUITECTURA BÁSICA

CODIGO EN ASSEMBLER TRANSMISOR. list p=16f876 ;selecion de pic

UNIDAD IV PROGRAMACION. Programación del microcontrolador

RB7/PGD RB6/PGC RB5 RB4 RB3/PGM RB2. RB1 RB0/INT VDD Vss RD7/PSP7 RD6/PSP6 RD5/PSP5 RD4/PSP4 RC7/RX/DT RC6/TX/CK RC5/SD0 RC4/SDI/SDA RD3/PSP3 RD2/PSP2

Interrupciones Fuentes de Interrupciones para el PIC16F1787

Microcontrolador PIC16F84: Arquitectura

Pines de entrada/salida (I/O) de propósito general. Mediante ellos, el micro PIC puede monitorizar y controlar otros dispositivos.

Apéndice B Programa para calcular inclinación con PIC 16F877A

CONCEPTOS BÁSICOS. + Intensidad

UNIVERSIDAD DON BOSCO

Programación en PIC Los primeros pasos

INFORMÁTICA INDUSTRIAL. 3º INGENIERÍA TÉCNICA INDUSTRIAL. ESPECIALIDAD ELECTRÓNICA BOLETÍN 1. CURSO 2003/04

REGISTRO DE TEMPERATURA USANDO EL MICROCONTROLADOR PIC16C71. José González Flórez *, Eusebio García García ** Abstract

Lenguaje ensamblador Semana 2 Trabajando con el lenguaje ensamblador

EDUPIC Módulo 16F628 Manual del Usuario

Tema: Utilización del módulo ADC en los microcontroladores PIC.

MICROCONTROLADORES PIC EEPROM. Memoria de programa Características

MICROCONTROLADOR PIC DE MICROCHIP

CODIGO EN ASSEMBLER ;************************************************************************

D:\ACCESO\ACCESO.ASM. list p=16f877 include "p16f877.inc" ROTA equ 0x20 TEMP equ 0x21 TECLA equ 0x22 DIGITOS equ 0x23 DIR equ 0x24

Microcontrolador PIC 16F84

CCP. comparación para la captura y reset del TMR1. Pueden usarse CCPx en modo captura y CCPy en modo

Seguidores de clase. Universidad Pontificia de Salamanca (Madrid) Microcontrolador PIC 16F877

APÉNDICE B APÉNDICE B. PROGRAMA DEL PIC16F874 EN LENGUAJE ENSAMBLADOR

Programación de microcontroladores usos y aplicaciones. Desde Ensamblador a C.

Tema: Comunicación serie entre PIC y PC.

UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO FACULTAD DE INGENIERÍA DIVISIÓN DE INGENIERÍA ELÉCTRICA DEPARTAMENTO DE INGENIERÍA EN COMPUTACIÓN

2.- Descripción General del PIC16F877

Programación y diseño de dispositivos mediante microcontroladores PIC

MANUAL DE MICROCONTROLADORES PIC

Capítulo VIII: PROGRAMACIÓN DEL PIC 16F876A

PIC16F88. Características

TUTORIAL PIC S INNOVACIÓN TECNOLÓGICA ELECTRÓNICA ESTUDIANTIL EN CIENCIAS INTEEC

Dentro del PIC16F877 se distinguen tres bloques de memoria.

Registros SFR vistos hasta ahora: Microcontroladores PIC

Módulos CCP. Registro de captura Registro de comparación Registro de ciclo de servicio PWM

PIC s 1ª PARTE RESUMEN Y EJERCICIOS_06/07

PIC 16F87X TRABAJO EXPLICACIÓN

MICROCONTROLADORES PIC

GUIA GENERAL PARA LA PROGRAMACIÓN DEL SISTEMA PICCITO 16F88 INDICE

Conversores Análogo-Digital

GUIA GENERAL PARA LA PROGRAMACIÓN DEL SISTEMA EVOLUPIC Bootloader 16F88 BOOTLOADER: AN1310 DE MICROCHIP INDICE

Microcontroladores PIC

Jesús Alberto Díaz Carmona Ingeniería en Informática. Curso 2005/06. Diseño de Sistemas Basados en Microprocesador

Tema. Módulo Captura Comparación Modulación n de Achura de Pulsos. C. F. G.S. D.P.E. Módulo de Proyectos 1

Microcontroladores PIC de Microchip: generalidades

GUIA GENERAL PARA LA PROGRAMACIÓN DEL SISTEMA EB88 BOOTLOADER: TINY INDICE

UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLÓGICOS COORDINACIÓN DE ELECTRÓNICA GUÍA DE LABORATORIO Nº 02

2.- Descripción General del PIC16F877

Características Técnicas del PIC 16F84

Alarma con Interfaz DTMF de Línea Telefónica basado en PIC16F84

LCD. Las pantallas de cristal líquido o módulos LCD, como. Módulo. con interface serial

PIC Programable Integrates Circuit o Peripheral Interface Controller

Assembler para PICs. Permite la utilización de etiquetas, tanto para apuntar a direcciones como para definir valores constantes.

- FUNDAMENTOS TEÓRICOS - EJEMPLOS DE APLICACIÓN. 09/01/2009 Ing. José A. Picón - - (0416)

SISTEMA DE NUMERACIÓN DECIMAL

1. ÍNDICE. Índice de contenido 2. INTRODUCCIÓN 3. CONTENIDO 1. OBJETIVOS DEL PROYECTO

CURSO BÁSICO DE PIC16F877

SISTEMAS ELECTRÓNICOS AVANZADOS. ING. TÉC. INDUSTRIAL ELECTRÓNICO

INGENIERIA EN MICROCONTROLADORES. Maquinas de Estado. Introducción

Tema 11. Introducción a los Microprocesadores y Microcontroladores

Fundamentos Taller de interrupciones

Carrera: Técnico Superior en Técnicas Digitales. Alumnos: Emiliano Teseo y José Luis Fernández

MICROCONTROLADORES PIC BÁSICO (PIC 16F84A / 16F627)

TUTORIAL PRIMERA PARTE: GENERACIÓN DE UN RETARDO CON TIMER.

:: Microcontroladores PIC - Tabla de Referencias. Conceptos Básicos

TEMA 6 MICROCONTROLADORES. PIC 16F Introducción Referencia histórica.

Práctica 1. Introducción al laboratorio y al ensamblador del PIC. 1. Objetivos. 2. Introducción. 2.1 Ensamblar y simular

Cartilla para Microcontrolador PIC16F /40 Pin 8-Bit CMOS FLASH.

Programación y Aplicaciones de los Microcontroladores PIC16FXXX (Nivel Básico) ING. EULER DEZA FIGUEROA

PRÓLOGO... Capítulo 1: MICROCONTROLADOR PICI6F84: Microcontroladores PIC :...

El Microcontrolador PIC16F873. Resumen de hoja de datos

SALTOS EN FUNCIONDE UN BIT Aquéllas que pueden producir el salto en función del estado de un bit. Son btfsc y

TIMER0 (T0) TMR0 (01h,101h)

Energía fotovoltaica y su aplicación rural

Control de pantallas de cristal líquido mediante PIC

Rutinas de programación

MONITOR REMOTO DE TEMPERATURA Y HUMEDAD

Tema: Utilización del módulo CCP (PWM) en los microcontroladores PIC.

PROFESOR: Práctica 10. Manejo de Tabla de datos con Microcontrolador PIC

x u 05h - - RA5 RA4 RA3 RA2 RA1 RA0 Bit Registro PORTA (05h)

Microchip dispone de cuatro familias de microcontroladores de 8 bits para adaptarse a las necesidades de la mayoría de los clientes potenciales.

MICROCONTROLADORES (III)

Aplicaciones de mc Lenguaje C- CC5x-Temporizadores

Transcripción:

Tema 6: Microcontroladores Carlos Garre del Olmo 1

Microcontroladores Contenidos Introducción a los microcontroladores. Principales familias y sus características. La familia PIC16. Programación de microcontroladores. Diseño de sistemas empotrados. Introducción a los DSP 2

Palabra de Configuración Palabra de configuración: Son 14 bits ubicados en la dirección 2007h de la memoria de programa. Sólo es accesible si la MCU está en modo de programación (mayor voltaje en Vdd). CP (Code Protection): Si está a 0, toda la memoria de programa está protegida. PWRTE: Habilita el Power-up Timer. WDTE: Habilita el Watchdog Timer. FOSC1-FOSC0: Seleccionan la fuente de reloj: 00: LP (Low Power Crystal) Cristal externo con baja frecuencia y mínimo consumo. 01: XT (Crystal/Resonator) Cristal externo con frecuencia media (4MHz) y consumo medio. 10: HS (High Speed Crystal/Resonator) Cristal externo con máximas frecuencia (20MHz) y consumo. 11: RC (Resistor/Capacitor) Circuito RC interno. Depende de: Rext, Cext, Vdd, ºC... 3

Modo SLEEP SLEEP: Instrucción para entrar en modo SLEEP. Para salir del modo SLEEP: Interrupciones: RB0/INT, EEPROM write, PORTB change. Reset externo en el pin MCLR. Fin de cuenta del WDT no provoca reset. La interrupción TMR0 no se puede dar, porque se detiene toda la temporización. Los pines de salida se congelan y mantienen el último valor. Cuando entramos en SLEEP, el WDT se pone a 0 pero no se detiene utiliza su propio oscilador RC. 4

PIC16F87xA 16F876A: 28 pines. 16F877A: Exactamente igual pero con 40 pines (3 más analógicos, y 9 más digitales). Comparten el mismo datasheet! 16F873A: Versión reducida del 16F876 (/2 las tres memorias). 16F874A: Versión reducida del 16F877 (/2 las tres memorias). Nos centramos en el 16F876A: Mismo juego de instrucciones que 16F84A. 14 3KB programa, 368B RAM, 256B EEPROM. 14 fuentes de interrupción. USART, SPI, I2C. 2x CCP. 2x Timers 8 bits + 1x 16 bits. 5 ADC de 10 bits. Sólo en los A: 2 comparadores analógicos. Puertos E/S: A (6b), B (8b), C (8b) MUX... 5

Arquitectura PIC16F876A 6

Memoria de datos del PIC16F876A Dividida en 4 bancos (RP1-RP0). No sólo cambian los SFR, sino también los GPR. Algunos SFR nuevos: PORTC, TRISC. PIR1, PIR2, INTCON, PIE1, PIE2: interrupciones. TMR1L, TMR1H, T1CON: Timer 16b. TMR2, T2CON, PR2: Timer 8b. SSPBUF, SSPCON, SSPCON2, SSPADD, SSPSTAT, TXREG, RCREG, RCSTA, TXSTA, SPBRG: puertos serie. CCPR1L, CCPR1H, CCP1CON: Módulo CCP1 (igual para CCP2). ADRESH, ADRESL, ADCON0, ADCON1: Entradas A/D. Memoria de programa paginada en 4 páginas. 7

16F876A: Interrupciones ADIF: Conversión A/D terminada. RCIF: Buffer de recepción de la USART lleno. TXIF: Buffer de transmisión de la USART lleno. SSPIF: Fin de transmisión SPI ó I2C. CCP1F: Capture en módulo CCP1. TMR2IF: Coinciden registros TMR2 y PR2. TMR1IF: Overflow en Timer 1. CMIF: Ha cambiado la entrada del comparador. BCLIF: Colisión en el bus I2C. CCP2IF: Capture/Compare en módulo CCP2. 8

PIC16F876A: Conversión A/D ADRESH y ADRESL: Resultado de la conversión en 10 bits. ADCON0: configuración del módulo A/D. ADCS2-ADCS0: fuente de reloj (Ej: 001 = Fosc/8). CHS2-CHS0: Selección de canal (hasta 100). GO/DONE: Si lo pones a 1, empieza una conversión. Se pone a 0 por hardware. ADON: Activa/desactiva el módulo A/D. ADCON1: configuración de los pines E/S. ADFM: 1 = Justificado a la derecha: (ADRESH = 000000xx; ADRESL = xxxxxxxx). PCFG3-PCFG0: Configuración de los pines (próxima transparencia...). 9

PIC16F876A: Pines A/D 10

PIC16F876A: Conversión A/D 1. Configurar módulo A/D: TRIS (=entradas), PCFG, ADFM (=1), ADCS (=001), ADON (=1). 2. Configurar interrupciones: ADIF (=0), ADIE (=1), PEIE (=1), GIE (=1). PEIE es la máscara para todas las interrupciones nuevas con respecto al 16F84 (llamadas interrupciones de periféricos). 3. Seleccionar un canal (CHS). 4. Activar el bit GO/DONE Momento en el que muestreamos. 5. Esperar fin de conversión: Polling al bit GO/DONE. Interrupción ADIF. 6. El resultado está en ADRH-ADRL. 7. Limpiar bit ADIF (ADIF = 0). 11

Microcontroladores Contenidos Introducción a los microcontroladores. Principales familias y sus características. La familia PIC16. Programación de microcontroladores. Diseño de sistemas empotrados. Introducción a los DSP 12

Entornos de Desarrollo Los fabricantes de MCUs proveen al usuario de entornos de desarrollo, generalmente gratuitos. Estos entornos constan de varias herramientas: Editor: editor de texto para escribir el código fuente. Compiladores y ensamblador: generación de código máquina partiendo de código ensamblador o de lenguajes de alto nivel (C, Basic, Pascal). Simulador: ejecución del código generado sobre una MCU simulada en el propio PC. Simulación de periféricos, estímulos externos,... Depurador: puntos de ruptura, lectura de memoria, step into/over... Programador: conexión con tarjetas de programación para transmitir el código a la MCU. Emulador: permite emular el sistema sobre el propio circuito. Librerías: multitud de librerías para facilitar la programación. Entorno de desarrollo de Microchip: MPLAB MPLAB C Compiler, MPASM, MPSIM, MPLAB REAL ICE, MPLAB PM3,... Manejo de MPLAB Enunciado de la práctica. 13

PIC16 ASM: Operaciones de Byte ADDWF f,d: Si d=0: W = W + f. Si d=1: f = W + f f es un registro de 0 a 127: direccionamiento directo o indirecto (INDF). Modifica flags Z, C, DC. CLRF f: f = 0. CLRW: W = 0. COMF f,d: W/f = NOT(f). DECF f,d: W/f = f 1 DECFSZ f,d: SZ = Skip if Zero. Si el resultado del decremento es 0, entonces convierte la próxima instrucción en un NOP. MOVF f,d: W/f = f. MOVWF f: f = W. RLF f,d: Rotate Left through carry. SUBWF f,d: W/f = f W SWAPF f,d: d<7,4> = f<3:0>; d<3,0> = f<7,4> ANDWF, INCF, INCFSZ, IORWF, NOP, RRF, XORWF. 14

PIC16 ASM: Operaciones de Bit y de Control Operaciones de Bit: BCF f,b: Pone a 0 el bit b del registro f. BSF f,b: Pone a 1 el bit b del registro f. BTFSC f,b: Si el bit b del registro f es 0, convertimos la siguiente instrucción en un NOP. BTFSS f,b: Si el bit b del registro f es 1, convertimos la siguiente instrucción en un NOP. Operaciones de Control: CALL k: PC se guarda en la pila. PC<10:0> = k (k es de 11 bits). PC<12:11> = PCLATH<4:3> (PCLATH se usa para cambiar de página). Es una instrucción de 2 ciclos! GOTO k: Salto incondicional. No se guarda PC. 2 ciclos! RETFIE y RETURN: Retorno de interrupción y de subrutina. 2 ciclos! RETLW k: Retorno de subrutina, y W=k (8 bits). 2 ciclos! funciones. CLRWDT, SLEEP. 15

PIC16 ASM: Operaciones con Inmediatos ADDLW k: W = W + k (k es de 8 bits). ANDLW k: W = W and k IORLW k: W = W or k MOVLW k: W = k SUBLW k: W = k W XORLW k: W = W xor k processor radix DEC PORTA EQU 0x05 OPTION EQU 0x03 TRISA EQU 0x85 RP0 EQU 5 GOTO main 16F84A main BSF OPTION,RP0 ; Banco 1 (para usar TRISA) CLRF TRISA ; Puerto A = salidas BCF OPTION,RP0 ; Banco 0 (para usar PORTA) loop BCF PORTA,0 BSF PORTA,0 GOTO loop END ; Apagamos led ; Encendemos led ; bucle infinito... 16

PIC16: Programación en C #include <pic16f876a.h> void main(void) { TRISA = 0; // Puerto A = salidas } // Bucle infinito... while (1) { } RA0 = 0; // Apagamos led RA0 = 1; // Encendemos led 17

Proceso de Desarrollo 1. Escribir el código en el editor de MPLAB. 2. Simular y depurar el código. 3. Pinchar el PIC en el programador. 4. Conectar el programador al PC (USB, puerto paralelo, puerto serie...). 5. Enviar el programa desde el PC al programador: MPLAB sólo soporta algunos programadores. En la mayoría de los casos necesitaremos utilizar otro software para comunicarnos con el programador, como IC-Prog: 1. Cargamos en IC-Prog el fichero hexadecimal con el código máquina ya ensamblado. 2. Configuramos IC-Prog para nuestro programador. 3. Configuramos la MCU (code protection, fuente de reloj, WDT...). 4. Escribimos el código. 5. Verificamos la escritura. 6. Desconectamos el programador del PC. 7. Despinchamos el PIC del programador. 8. Pinchamos el PIC en nuestro circuito. 18