+ All Categories
Home > Documents > Microcontroladores (Introducción a la Programación)

Microcontroladores (Introducción a la Programación)

Date post: 21-Jan-2023
Category:
Upload: itsz
View: 2 times
Download: 0 times
Share this document with a friend
37
Uso y programación del PIC16F84 Microcontroladores PIC 1 ITSZ - Lic. Edgar Hernández García
Transcript

Uso y programación del PIC16F84

Microcontroladores PIC

1 ITSZ - Lic. Edgar Hernández García

TiposExiste una gran diversidad de microcontroladores. Quizá la clasificación más importante sea entre microcontroladores de 4, 8, 16 ó 32 bits. Aunque las prestaciones de los microcontroladores de 16 y 32 bits son superiores a los de 4 y 8 bits, la realidad es que los microcontroladores de 8 bits dominan el mercado y los de 4 bits se resisten adesaparecer. La razón de esta tendencia es que los microcontroladores de 4 y 8 bits son apropiados para la gran mayoría de las aplicaciones, lo que hace absurdo emplear micros más potentes y consecuentemente más caros. Uno de los sectores que más tira del mercado del microcontrolador es el mercado automovilístico.

También los modernos microcontroladores de 32 bits van afianzando sus posiciones en el mercado, siendo las áreas de más interés el procesamiento de imágenes, las comunicaciones, las aplicaciones militares, los procesos industriales y el control de los dispositivos de almacenamiento masivo de datos.

2 ITSZ - Lic. Edgar Hernández García

Microcontroladores RISC y CISC

Existen tres orientaciones en cuanto a la arquitectura y funcionalidad de los procesadores actuales:

CISC: Un gran número de procesadores usados en los microcontroladores están basados en la filosofía CISC (Computadores de Juego de Instrucciones Complejo). Disponen de más de 80 instrucciones máquina en su repertorio, algunas de las cuales son muy sofisticadas y potentes, requiriendo muchos ciclos para su ejecución. Una ventaja de los procesadores CISC es que ofrecen al programador instrucciones complejas que actúan como macros.

RISC: Tanto la industria de los computadores comerciales como la de los microcontroladores están tendiendo hacia la filosofía RISC (Computadores de Juego de Instrucciones Reducido). En estos procesadores el repertorio de instrucciones máquina es muy reducido y las instrucciones son simples y, generalmente, se ejecutan en un ciclo. La sencillez y rapidez de las instrucciones permiten optimizar el hardware y el software del procesador.

SISC: En los microcontroladores destinados a aplicaciones muy concretas, el juego de instrucciones, además de ser reducido, es “específico”, o sea, las instrucciones se adaptan a las necesidades de la aplicación prevista. Esta filosofía se ha bautizado con el nombre de SISC (Computadores de Juego de Instrucciones Específico).3 ITSZ - Lic. Edgar Hernández García

Arquitectura del MicrocontroladorGeneralmente se compone de:

Procesador o UCP (Unidad Central de Proceso). Memoria RAM para Contener los datos. Memoria para el programa tipo ROM / PROM / EPROM.

Líneas de E/S para comunicarse con el exterior. Diversos módulos para el control de periféricos (temporizadores, Puertas Serie y Paralelo, CAD: Conversores Analógico / Digital, CDA: Conversores Digital / Analógico, etc.).

Generador de impulsos de reloj que sincronizan el funcionamiento de todo el sistema.

4 ITSZ - Lic. Edgar Hernández García

Arquitectura del Microcontrolador

5 ITSZ - Lic. Edgar Hernández García

La MemoriaEn los microcontroladores la memoria de instrucciones y datos está integrada en el propio chip:ROM se destina a contener el programa de instrucciones que gobierna la aplicación.

RAM se destina a guardar las variables y los datos.La ROM en general tiene capacidades de 512 B a 8 KB y la RAM entre 20 y 512 B.

En los microcontroladores:1. No existen sistemas de almacenamiento masivo como

disco duro o disquetes.2. Como el microcontrolador sólo se destina a una

tarea en la memoria ROM, sólo hay que almacenar un único programa de trabajo.

6 ITSZ - Lic. Edgar Hernández García

Microcontrolador PIC16F84A (Pines)El microcontrolador PICI6F84A de la marca Microchip es del tipo de 8 bits con EEPROM tipo flash reforzado.

Pines del PIC. La función que cumple cada una de ellas es la siguiente:

Pines 1, 2, 3 17 y 18 – RA0-RA4/TOCKI : Es el PORT A. Corresponden a 5 Iíneas bidireccionales de E/S. Es capaz de entregar niveles TTL cuando la tensión de alimentación aplicada en VDD es de 5V + 5%. El pin RA4 como entrada puede programarse en funcionamiento normal o como entrada del contador/temporizador TMR0.

Pin 4 - MCR / Vpp: Es una pata de múltiples aplicaciones, es la entrada de Reset si está a nivel bajo y también es la habilitación de la tensión de programación cuando se está programando el dispositivo. Cuando su tensión es la de VDD el PIC funciona normalmente.

Pines5 y 14 - VSS y VDD: Son respectivamente las patas de masa y alimentación. La tensión de alimentación de un PIC está comprendida entre 2V y 6V aunque se recomienda no sobrepasar los 5.5V.

Pines 6, 7, 8, 9, 10, 11, 12, 13 – RB0-RB7: Es el PORT B. Corresponden a ocho líneas bidireccionales de E/S. Pueden manejar niveles TTL cuando la tensión de alimentación aplicada en VDD es de 5V ± 5%. RB0 puede programarse además como entrada de interrupciones externas INT. Los pines RB4 a RB7 pueden programarse para responder a interrupciones por cambio de estado. Las patas RB6 y RB7 se corresponden con las líneas de entrada de reloj y entrada de datos respectivamente, cuando está en modo programación del integrado.

Pines 15 y 16 – OSC1/CLKIN y OSC2/CLKOUT. Corresponden a los pines de la entrada externa de reloi y salida de oscilador a cristal respectivamente.7 ITSZ - Lic. Edgar Hernández García

PIC16F84AAspectos Generales

8 ITSZ - Lic. Edgar Hernández García

CaracterísticasMEMORIA FLASH DEL PROGRAMA: 1 KMEMORIA DE DATOS RAM: 68 bytesMEMORIA DE DATOS EEPROM: 64 bytesPILA (STACK): 8 nivelesINTERRUPCIONES: 4 tipos diferentes (Pata externa RB0/INT, exceso del temporizador TMR0, Interrupción al cambio PORTB<7:4> y al completar la escritura del EEPROM de datos)

JUEGO DE INSTRUCCIONES: 35FRECUENCIA DE TRABAJO: 20Mhz máximaTEMPORIZADORES: Sólo uno, el TMR0 de 8 bits con preescaler (divisor de frecuencia) programable de 8 bits.. También tienen Perro Guardián (WDT)

LÍNEAS DE E/S DIGITALES: 13 (5 Puerta A y 8 Puerta B) con control individual de dirección.

VOLTAJE DE ALIMENTACIÓN: 2 a 6V DCREGISTROS DE HARDWARE DE FUNCIONES ESPECIALES: 15EXTENSIÓN DE INSTRUCCIONES:14 bitsEXTENSIÓN DE DATOS: 8 bitsMODOS DE ACCESO: directo, indirecto y relativoCICLO DE INSTRUCCIÓN: 2 para saltos y 1 para el resto9 ITSZ - Lic. Edgar Hernández García

Características (continuación)

Memoria de programa de 1000 ciclos de escritura/borrado de flash reforzado.Memoria de datos EEPROM de 10,000,000 de ciclos de borrado/escritura típica.

Retención de datos de EEPROM de >40 años.Programación en serie dentro del circuito (ICSP = In Circuit Serial Programming) mediante dos pines.

Power-on Reset (POR), Power-up Timer (PWRT), Oscillator Start-up Timer (OST).

Watchdog Timer (WDT) con su propio oscilador RC incorporado en el chip para un funcionamiento confiable.

Protección de códigos.Modo SLEEP para economizar consumo.Opciones seleccionables de oscilador.Tecnología CMOS con Flash reforzado y EEPROM.Tecnología de baja potencia y alta velocidad.Diseño estático completo.Rango amplio de tensiones de funcionamiento:Comercial: 2,0 Volt a 5,5 VoltIndustrial: 2,0 Volt a 5,5 VoltConsumo muy bajo:

< 2mA típico a 5 Volt, 4MHz< 0,5μA típico de corriente en reposo a 2 Volt

10 ITSZ - Lic. Edgar Hernández García

La Memoria: Memoria de ProgramaLos PIC de la gama media admiten un mapa de memoria de programa capaz de contener 8,192 instrucciones de 14 bits cada una. Este mapa se divide en páginas de 2,048 posiciones. El PIC16F84A sólo tiene implementadas 1 K posiciones, por lo que ignora los 3 bits de más peso del Contador de Programa.

El contador de programa está implementado sobre un par de posiciones de la memoria RAM. Los 8 bits de menos peso del PC residen en el registro PCL, que ocupa, repetido, la posición de los dos bancos de memoria de datos. Los bits de más peso PC<12:8>, residen en los 5 bits de menos peso del registro PCLATH, que ocupa la posición 0A H de los dos bancos de la memoria RAM. Con los dos bits más significativos del PC se apunta a una de las 4 páginas de 2 K del mapa de memoria.

Las características esenciales de la pila son:Zona aislada de las memorias de instrucciones y datos.

Estructura LIFO8 niveles de profundidad cada uno con 13 bitsBuffer circular

La instrucción CALL y las interrupciones originan la carga del contenido del PC en el nivel superior de la pila y con las instrucciones RETURN, RETLW y RETFIE se saca el contenido del nivel superior de la misma.11 ITSZ - Lic. Edgar Hernández García

La Memoria: Memoria de DatosLos microcontroladores PIC funcionan con datos de 8 bits por lo que las posiciones de la memoria de datos tienen esa longitud. La capacidad de esta memoria varía entre 25 y 73 posiciones de un byte, en los modelos de la gama baja.

La memoria de datos se organiza en "bancos", pudiendo existir hasta cuatro en los modelos de mayor capacidad. El banco 0 tiene un tamaño de 32 bytes, mientras que todos los demás sólo disponen de 16. El banco 0 ocupa las 32 primeras posiciones de la memoria y lo poseen todos los modelos de PIC16C5X. Las 16 posiciones de menos peso de los bancos 1, 2 y 3 no son accesibles y cuando se direcciona desde el valor 00h al 0Fh, siempre se acude al banco 0. Cuando la dirección está comprendida entre la 10h y la 1Fh, hay que seleccionar a cuál de los cuatro posibles bancos corresponde con los bits 6 y 5 del registro FSR.

La memoria de datos funciona de forma similar al "banco de registros" de un procesador por lo cual sus posiciones implementan registros de propósito especial y propósito general. Las ocho primeras posiciones del banco 0 soportan registros específicos.12

ITSZ - Lic. Edgar Hernández García

Memoria de Datos 16F84A

Tiene dos zonas diferentes:RAM estática ó SRAM, donde residen los Registros Específicos (SFR) con 24 posiciones de tamaño byte, aunque dos de ellas no son operativas y los Registros de Propósito General (GPR) con 68. La RAM del PIC16F84A se halla dividida en dos bancos (banco 0 y banco 1) de 128 bytes cada uno.

2. EEPROM, de 64 bytes donde, opcionalmente, se pueden almacenar datos que no se pierden al desconectar la alimentación.

DIRECCIONAMIENTO En los PIC de la gama media la

memoria de datos está organizada para alojar un máximo de 4 bancos de 128 bytes cada uno. El PIC16F84A sólo tiene implementados los 80 primeros bytes de los bancos 0 y 1. Se toman 9 bits para seleccionar una localidad en la memoria de bits.

13 ITSZ - Lic. Edgar Hernández García

Registros de Función Especial

14ITSZ - Lic. Edgar Hernández García

Registro StatusContiene el estado aritmético de la ALU, el estado del reset y los bits para selección del banco.

L=bit de lectura E=bit de escritura 0/1/x=Valor después de un RESET

En el PIC16F84A:

15ITSZ - Lic. Edgar Hernández García

Registro OptionContiene varios bits de control para configurar el divisor de frecuencia o prescaler del TMR0/WDT, la interrupción externa INT, TMR0 y los pull-ups en el PORTB.

L=bit de lectura E=bit de escritura 0/1/x=Valor después de un RESET.

En el 16F84A

16 ITSZ - Lic. Edgar Hernández García

Registro INTCONContiene los bits para habilitar cada una de las fuentes de interrupción.

L=bit de lectura E=bit de escritura 0/1/x=Valor después de un RESET

En el PIC16F84A:Int.= interrupciones

17ITSZ - Lic. Edgar Hernández García

Dispositivos de Entrada/SalidaLa arquitectura de los PIC’s es RISC, con juegos de instrucciones reducidas que se ejecutan en un ciclo de máquina (equivalente a 4 del ciclo de reloj del sistema).

Los operandos pueden actuar como objetos fuente o destinos.

Tipos de direccionamiento: 1º Inmediato: El valor del dato está incluido en el propio código OP, junto a la instrucción.

2º Directo: La dirección del dato está incluido en el propio código OP, junto a la instrucción.

3º Indirecto: La dirección de la memoria de datos que guarda el operando está contenida en un registro.

18 ITSZ - Lic. Edgar Hernández García

Dispositivos de Entrada/Salida (cont.)Puertos de Entrada/Salida

La principal utilidad de los pines que posee la cápsula que contiene un microcontrolador es soportar las líneas de E/S que comunican al computador interno con los periféricos exteriores. Según los controladores de periféricos que posea cada modelo de microcontrolador, las líneas de E/S se destinan a proporcionar el soporte a las señales de entrada, salida y control. Un recurso imprescindible en los microcontroladores es el que soporta las Entradas y Salidas con los periféricos del mundo exterior. Los PIC16C5X sólo disponen de líneas de E/S digitales, cada una de las cuales tiene su correspondencia con una patita de la cápsula. Dichas líneas se agrupan en tres puertos Puerto A, Puerto B y Puerto C. El Puerto A actúa lo mismo que un registro de E/S de lectura y escritura. Sólo son válidos los 4 bits de menos peso que corresponden con las patitas RA3:RA0. Los 4 bits de más peso no están implementados y cuando se leen siempre valen 0. El Puerto B funciona como un registro de E/S de 8 bits bidireccionales, siendo accesibles todos ellos por las patitas RB7:RB0.

Vector de ResetCuando ocurre un reset al micro, el contador de programa se pone en ceros (0000H). Por esta razón en la primera dirección del programa se debe escribir todo lo relacionado con la inicialización del mismo.19 ITSZ - Lic. Edgar Hernández García

Dispositivos de Entrada/Salida (cont.)Vector de Interrupción Cuando el micro recibe la señal de una interrupción en el programa,

el contador de programa apunta a la dirección 04H de la memoria de programa, por esta razón ahí se debe escribir toda la programación necesaria para atender dicha interrupción.

Reloj Principal Todos los microcontroladores disponen de un circuito oscilador

que genera una onda cuadrada de alta frecuencia, que configura los impulsos de reloj usados en la sincronización de todas las operaciones del sistema. Generalmente, el circuito de reloj está incorporado en el microcontrolador y sólo se necesitan unos pocos componentes exteriores para seleccionar y estabilizar la frecuencia de trabajo. Dichos componentes suelen consistir en un cristal de cuarzo junto a elementos pasivos o bien un resonador cerámico o una red R-C.

Aumentar la frecuencia de reloj supone disminuir el tiempo en que se ejecutan las instrucciones pero lleva aparejado un incremento del consumo de energía.

20 ITSZ - Lic. Edgar Hernández García

Dispositivos de Entrada/Salida (cont.)Cada fabricante oferta numerosas versiones de una arquitectura básica de microcontrolador. En algunas amplía las capacidades de las memorias, en otras incorpora nuevos recursos, en otras reduce las prestaciones al mínimo para aplicaciones muy simples, etc. La labor del diseñador es encontrar el modelo mínimo que satisfaga todos los requerimientos de su aplicación. De esta forma, minimizará el costo, el hardware y el software.Los principales recursos específicos que incorporan los microcontroladores son:

Temporizadores o “Timers”.Perro guardián o “Watchdog”.Protección ante fallo de alimentación o “Brownout”.Estado de reposo o de bajo consumo.Conversor A/D.Conversor D/A.Comparador analógico.Modulador de anchura de impulsos o PWM.Puertas de E/S digitales.Puertas de comunicación.

21 ITSZ - Lic. Edgar Hernández García

PIC16F84AAspectos prácticos y programación

22 ITSZ - Lic. Edgar Hernández García

Set de InstruccionesLas instrucciones son de 14 bitsSe pueden clasificar en cinco grupos, estos son:

1. Operaciones orientadas a manejar registros de tamaño byte.

2. Operaciones orientadas a manejar bits.

3. Operaciones que manejan valores inmediatos.

4. Operaciones especiales y de control del flujo del programa.

5. Operaciones de salto condicional.23 ITSZ - Lic. Edgar Hernández García

1. Operaciones orientadas a manejar registros de tamaño byte

ITSZ - Lic. Edgar Hernández García24

2. Operaciones orientadas a manejar bits / 3. Operaciones que manejan valores inmediatos

ITSZ - Lic. Edgar Hernández García25

Al manejo de bits Al manejo de valores inmediatos

4. Operaciones especiales y de control de flujo del programa

ITSZ - Lic. Edgar Hernández García26

5. Operaciones de salto condicional

ITSZ - Lic. Edgar Hernández García27

Consideraciones previas a la programación de PIC’s

ITSZ - Lic. Edgar Hernández García28

Sobre la memoria de programa:Cuando ocurre un Reset, el contador de programa (PC) apunta a la dirección 0000h, y el micro se inicia nuevamente. Por esta razón , en la primera dirección del programa se debe escribir todo lo relacionado con la iniciación del mismo (por ejemplo, la configuración de los puertos...).

Ahora, si ocurre una interrupción el contador de programa (PC) apunta a la dirección 0004h, entonces ahí escribiremos la programación necesaria para atender dicha interrupción.

Algo que se debe tener en cuenta es la pila o Stack, que consta de 8 posiciones (o niveles), esto es como una pila de 8 platos: el último en ponerse es el primero en tomarse, si seguimos con este ejemplo, cada plato contiene la dirección y los datos de la instrucción que se está ejecutando, así cuando se efectúa una llamada (CALL) o una interrupción, el PC sabe donde debe regresar (mediante la instrucción RETURN, RETLW o RETFIE, según el caso) para continuar con la ejecución del programa.

Recuerda, sólo 8 llamadas "CALL", ten en cuenta las "INTERRUPCIONES".

Configuración de los puertos del PIC

ITSZ - Lic. Edgar Hernández García29

Por configurar puertos nos referimos a designar los pines y/o puertos que funcionarán como entradas o salidas.

Para la configuración de puertos debe recordarse la dirección de los registros:STATUS dirección 3hPORTA dirección 5hPORTB dirección 6hTRISA dirección 85hTRISB dirección 86h

Por defecto el PIC tendrá todos los I/O port's (es decir los puertos RA y RB), colocados como entrada de datos, y si queremos cambiarlos habrá que configurarlos.

Al configurar los puertos deberá tener en cuenta que:

Si asigna un CERO (0) a un pin, éste quedará como salida y...Si le asigna un UNO (1), quedará como entrada

Esta asignación se hace en:

TRISA para los pines del PUERTO A (5 bits)TRISB para los pines del PUERTO B (8 bits)

Configuración de los puertos del PIC

ITSZ - Lic. Edgar Hernández García30

Si TRISA es igual a 11110 todos sus pines serán entradas salvo RA0 que esta como salida

Si TRISB es igual a 00000001 todos sus pines serán salidas salvo RB0 que esta como entrada

Cuando el PIC arranca se encuentra en el BANCO 0, como TRISA y TRISB están en el BANCO 1 no queda otra, deberemos cambiar de banco. Esto se logra a través del Registro STATUS

STATUS es un Registro de 8 bits u 8 casillas, en el cual la Nº 5 (RP0) define la posición del banco en donde nos encontramosSi se pone un CERO (0) a RP0 estaremos en el BANCO 0Si se pone un UNO (1), estaremos en el BANCO 1

REGISTRO STATUS7 6 5 4 3 2 1 0

IRP RP1 RP0 TO PD Z DC C

Proceso de implementación de proyectos

ITSZ - Lic. Edgar Hernández García31

El proceso que se seguirá de aquí en adelante consiste en:1. Editar el programa para el proyecto, es hacer una lista de

instrucciones en un lenguaje que nos permita indicarle al PIC lo que deseamos que haga. Existen varios lenguajes como: Ensamblador, Basic, C, etc. En nuestro caso usaremos el lenguaje Ensamblador. Para crear los archivos se puede usar cualquier editor de texto ASCII o bien algún entorno de programación como el mismo MPLAB de Microchip.

2. Compilar: Traducir el programa al lenguaje que “entiende” el PIC. Para realizar esta traducción hacemos uso de un software que transforma el “Programa Fuente”, aquel que editamos en el paso 1 en otro que si podemos comunicarle al PIC.

3. Simular el programa. Existen varias alternativas para esto último. En nuestro caso usaremos el PIC Simulator IDE.

4. Grabar el programa en el PIC, lo cual requiere de un hardware y software dedicado.

5. Probar el dispositivo en el arreglo del proyecto.

Inicializando puertos para un programa

ITSZ - Lic. Edgar Hernández García32

Para mostrar como configurar los puertos usaremos el PIC Simulator IDE que nos será útil como editor de código y simulador del mismo.

El listado del código ensamblador se muestra a continuación:

;------------mapa de memoria---------estado equ d'3'pto1 equ d'5'pto2 equ d'6';-------Configuración de puertos-------reset org d'0'

goto inicioorg d'5'

inicio bsf estado,5movlw b'11111'movwf trisamovlw b'00000000'movwf trisbbcf estado,5

;------------------------------------------

end;------------------------------------------

Nota: Aquí se desechan dos líneas antes del mapa de memoria:

list p=16f84 radix hex

El list para indicar el código del PIC y el radix para indicar el tipo de codificación que se usará en el código. El primero se configura en la ventana del Emulador y en el caso del segundo , el emulador sólo usa valores decimales.

El simulador

ITSZ - Lic. Edgar Hernández García33

Resultado

ITSZ - Lic. Edgar Hernández García34

Primer Programa PIC

ITSZ - Lic. Edgar Hernández García35

Diagrama de Flujo del Primer Programa

ITSZ - Lic. Edgar Hernández García36

Ejercicio

ITSZ - Lic. Edgar Hernández García37

Investigue que se “hace” en el siguiente código


Recommended