Microcontroladores MKT - Unidad I

Descargar como pptx, pdf o txt
Descargar como pptx, pdf o txt
Está en la página 1de 123

MICROCONTROLADORES

Ingeniería Mecatrónica
UNIDAD I
ARQUITECTURA DE
MICROCONTROLADORES

M.C. GILBERTO PÉREZ LUQUE


UNIDAD I
ARQUITECTURA DE MICROCONTROLADORES

COMPETENCIAS ESPECIFICAS A
DESARROLLAR

Identifica los elementos que integran un microcontrolador, sus


diferentes configuraciones, las herramientas para el desarrollo de
aplicaciones para la programación de sistemas basados en
microcontroladores.
Microprocesador
El microprocesador es un circuito integrado que contiene
algunos o todos los elementos necesarios para conformar una
(o más) "unidad central de procesamiento" CPU.

Está compuesto por millones de transistores, integrados en una


misma placa de silicio.

Es un sistema abierto (configuración variable) con el que puede


construirse un computador con las características que se desee,
acoplándole los módulos necesarios.
3
Microprocesador
• Funcionamiento y componentes

Ejecuta instrucciones almacenados en la memoria principal de forma


binaria y en orden secuencial.

Desde el punto de vista lógico y funcional, el microprocesador está


compuesto básicamente por:
 Varios registros;
 Una Unidad de control;
 Una Unidad aritmético-lógica;
 Puede contener una unidad en coma (punto) flotante.
4
Microprocesador
Arquitectura

• Encapsulado

• Memoria Cache

• Coprocesador matemático

• Registros

• Memoria
Estructura Interna
• Puertos
microprocesador en la Microprocesador
5
tarjeta madre
Microcomputadora
Una microcomputadora es un tipo de computadora que utiliza un
microprocesador como unidad central de procesamiento (CPU), que
se suele combinar con la memoria de computadora en forma de
RAM, y al menos otro dispositivo de almacenamiento de memoria
menos volátil en un bus de sistema como solo una unidad.
Otros dispositivos que componen un sistema de microordenador
completo incluyen Monitores, teclados y otros dispositivos de
entrada y salida (pueden estar integrados o separados). Además,
contempla las baterías, una fuente de alimentación y varios
dispositivos de entrada/salida que se utilizan para transmitir
información hacia y desde un operador humano (impresoras,
monitores, dispositivos de interfaz humana).
Generalmente, son computadoras que ocupan espacios físicos
pequeños; dentro del término microcomputadora pueden agruparse
computadoras de diferentes tipos y usos como consolas de
videojuegos, notebooks, tablets, dispositivos de mano, teléfonos
celulares y las computadoras personales (PC). 6
Microcontrolador
Son dispositivos programables, que poseen una unidad central de
procesamiento (CPU), memoria de programa y de datos, puertos
de entrada/salida, temporizadores e interrupciones internas y
externas; todos los recursos integrados en una sola pastilla (chip).

Es un sistema cerrado que contiene un computador completo y de


prestaciones limitadas que no se pueden modificar. Se le identifica
como uC, µCC o MCU.

7
CONSIDERACIONES

• Microprocesador (µp).- Es una CPU en un sólo


circuito integrado.

• Microcomputador (µc).- Es una computadora cuya


CPU es un µp.

• Microcontrolador (µcc).- Es una microcomputadora


en un sólo circuito integrado
8
UNIDAD I
1.2 Características y aplicaciones de los
microcontroladores.

1.2.1 Características del microcontrolador


Un microcontrolador es un circuito integrado programable, capaz de
ejecutar las órdenes grabadas en su memoria. Está compuesto de varios
bloques funcionales, los cuales cumplen una tarea específica. Un
microcontrolador incluye en su interior las tres principales unidades
funcionales de una computadora: unidad central de procesamiento,
memoria y periféricos de entrada/salida.

Los microcontroladores están diseñados para reducir el costo económico


y el consumo de energía de un sistema en particular. Por eso el tamaño
de la CPU, la cantidad de memoria y los periféricos incluidos dependerán
de la aplicación. El tamaño del procesador es muy pequeño (4, 8, 16, 32 o
64 bits) dependerá de la aplicación que se quiera desarrollar.
9
UNIDAD I
1.2 Características y aplicaciones de los
microcontroladores.

1.2.1 Características del microcontrolador


Elementos de un microcontrolador

10
UNIDAD I
1.2 Características y aplicaciones de los
microcontroladores.
1.2.1 Características del microcontrolador
Elementos de un microcontrolador:
• Osciladores- genera los pulsos que sincronizan todas las operaciones
internas. Puede ser RC o por un cristal de cuarzo.
• CPU (Unidad Central de Proceso)-. Esta unidad trae las instrucciones del
programa, una a una, desde la ROM, las interpreta (decodifica) y hace que
las ejecuten.
• Memoria-. Donde se almacenan las instrucciones del programa y datos que
manipula.
• RAM (Random Access Memory)-. Se almacenan temporalmente los datos con
los que trabaja el programa.
• ROM (Read Only Memory)-. Almacena permanentemente el programa que
debe ejecutar el microcontrolador.
11
UNIDAD I
1.2 Características y aplicaciones de los
microcontroladores.

1.2.1 Características del microcontrolador


Elementos de un microcontrolador:
• Entradas y Salidas: Forman parte de la entrada los puertos en paralelo y
serie, los temporizadores y la gestión de las interrupciones,
convertidores de A/D Y D/A.

• Perro Guardián (Watchdog): Destinado a provocar una reinicialización


cuando el programa se queda bloqueado.

• Estado de Reposo (sleep mode)-. El consumo de energia se reduce.

12
UNIDAD I
1.2 Características y aplicaciones de los
microcontroladores.
1.2.1 Características del microcontrolador
Entonces, para conocer las especificaciones y utilidad de un
microcontrolador se deben considerar los siguientes aspectos:
• El tamaño del procesador (4, 8, 16, … bits)
• La cantidad de memoria ROM (1 KB)
• La cantidad de memoria RAM (256x8 bits)
• Bus de datos (8 bits)
• Bus de instrucciones (13 bits)
• Tamaño de la pila (8 niveles)
• Dispositivos de entrada/salida (ADC, Temporizador, UART,
Contadores, Comparadores, …)
• Buses de interfaz (USB, I2C, CAN, RS232, Paralelo, …)
• Interrupciones (por software y por hardware)
13
UNIDAD I
1.2 Características y aplicaciones de los
microcontroladores.

1.2.1 Características del microcontrolador


Por ejemplo, el PIC16F84 presenta las siguientes características, destacando:

– Memoria de programa (ROM Flash) de 1k x 14 bits.


– Memoria de datos divida en 2 áreas:
• RAM constituida de 22 registros de propósito específico (SFR) y 68
de propósito general de 8 bits.
• EEPROM de datos formada por 64 registros de 8 bits.
– ALU de 8 bits y registro W que proporciona un operando.
– 2 puertos (PORTA de 5 bits y PORTB de 8 bits) para la comunicación con
el mundo exterior.
– Contador de programa (PC) de 13 bits (1FFFh=8k), solo dispone de 1k
(3FFh) de memoria implementada 14
UNIDAD I
1.2 Características y aplicaciones de los
microcontroladores.

1.2.2 Aplicaciones de microcontroladores


Los microcontroladores son procesadores con memoria incorporada, y se
encuentran en dispositivos que van desde los cepillos de dientes eléctricos a
los controladores de frenos antibloqueo en los automóviles. Para
aplicaciones de propósito general, los fabricantes como Atmel y Microchip,
ofrecen una gran variedad microcontroladores.

Dentro de estos tipos de dispositivos existen diversas configuraciones, tales


como, tamaños de palabra de 8, 16 y de 32 bits. Asimismo, los dispositivos
de propósito general vienen en diferentes configuraciones de memoria y
periféricos. Estos normalmente tienen un conjunto de características que
serían útiles en una variedad de aplicaciones y se pueden diseñar en
productos tales como electrodomésticos y productos de consumo.
15
UNIDAD I
1.2 Características y aplicaciones de los
microcontroladores.
1.2.2 Aplicaciones de microcontroladores

Control de una Control de un


impresora microondas

Control de temperatura
de un refrigerador Arranque del automovil
Opciones de
16
menú en una TV
UNIDAD I
1.3. TIPOS DE ARQUITECTURAS
1.3.1 Arquitectura interna.
INTRODUCCIÓN
Una microcomputadora se compone de tres bloques fundamentales:

PERIFÉRICOS

Los bloques se conectan entre sí mediante grupos de líneas denominados BUSES:


– Bus de direcciones (Direcciones de memoria o de E/S).
– Bus de datos (Datos o instrucciones).
– Bus de control (Señales de control diversas).
17
UNIDAD I
1.3. TIPOS DE ARQUITECTURAS
1.3.1 Arquitectura interna
ARQUITECTURA DE UNA MICROCOMPUTADORA
La arquitectura es el diseño conceptual y la estructura operacional fundamental de un
sistema de computadora, con especial interés en la forma en que la unidad central de
proceso (CPU) trabaja internamente y accede a las direcciones de memoria.

Las arquitecturas “Von Neumann” y “Harvard” son dos modelos generales del
hardware que representan una solución a la configuración de la conexión de la CPU
con la memoria y a la organización de la memoria como almacén de instrucciones y
datos.

Arquitectura Von Neumann Arquitectura Harvard 18


UNIDAD I
1.3. TIPOS DE ARQUITECTURAS
1.3.1 Arquitectura interna
ARQUITECTURAS
Arquitectura Von Neumann Arquitectura Harvard
• Un único bus de datos para • El bus de datos y el bus de
instrucciones y datos. instrucciones están separados.
• Las instrucciones del programa y los • Presenta un acceso en paralelo:
datos se guardan conjuntamente en  Cuando se está leyendo una
una memoria común. instrucción, la instrucción actual
• Cuando la CPU se dirige a la memoria está utilizando el bus de datos.
principal, primero accede a la Una vez finalizada la instrucción
instrucción y después a los datos actual, la siguiente ya está
necesarios para ejecutarla, esto disponible en la CPU.
retarda el funcionamiento.  Permite una ejecución más
• Requiere menos líneas de conexión, rápida del programa.
es mas simple (un solo bus).
• Misma señal de control para leer
datos que para leer instrucciones. 19
UNIDAD I
1.3. TIPOS DE ARQUITECTURAS
1.3.1 Arquitectura interna
ARQUITECTURAS

20
UNIDAD I
1.3. TIPOS DE ARQUITECTURAS
1.3.1 Arquitectura interna

ARQUITECTURAS
• Es obvio que la arquitectura Von Neumann requiere menos
terminales en el uP que la arquitectura Harvard.
• Las microcomputadoras basadas en un uP están diseñadas casi
exclusivamente con arquitectura Von Neumann.
• En los microcontroladores predomina la arquitectura Harvard, ya que
todos los componentes del sistema están dentro del circuito
integrado, no hay necesidad de minimizar el número de terminales de
la CPU.
• Los microcontroladores PIC son sistemas con arquitectura Harvard.

21
UNIDAD I
1.3. TIPOS DE ARQUITECTURAS
1.3.1 Arquitectura interna

ARQUITECTURAS CISC Y RISC


Las arquitecturas CISC y RISC son dos modelos generales de
ordenadores desde el punto de vista de su repertorio de
instrucciones, lo cual repercute directamente sobre la
arquitectura de la CPU.

• Complex Instruction Set Computer (CISC), tiene un repertorio


de instrucciones complejo.
• Reduced Instruction Set Computer (RISC), tiene un repertorio
de instrucciones reducido.
22
UNIDAD I
Arquitectura
1.3. TIPOS DEinterna del microcontrolador
ARQUITECTURAS
1.3.1 Arquitectura interna

ARQUITECTURAS CISC Y RISC

Complex Instruction Set Computer (CISC)

Este tipo de arquitectura dificulta el paralelismo


entre instrucciones, por lo que, en la actualidad, la
mayoría de los sistemas CISC de alto rendimiento
implementan un sistema que convierte dichas
instrucciones complejas en varias instrucciones
simples del tipo RISC, llamadas generalmente
microinstrucciones. 23
UNIDAD I
1.3. TIPOS DE ARQUITECTURAS
1.3.1 Arquitectura interna

ARQUITECTURAS CISC Y RISC

Complex Instruction Set Computer (CISC)

• La tendencia inicial fue proveer a los microprocesadores y


microcontroladores con el modelo CISC.
• La arquitectura CISC dispone de muchas instrucciones.
• En el modelo CISC las instrucciones tienen diferente longitud y los
modos de direccionamiento son mas elaborados.
• En el modelo CISC el hardware es mas complejo y se requiere un gran
espacio en el circuito integrado para la decodificación y ejecución de
las instrucciones.
24
UNIDAD I
1.3. TIPOS DE ARQUITECTURAS
1.3.1 Arquitectura interna
ARQUITECTURAS CISC Y RISC

Complex Instruction Set Computer (CISC)

Entre las ventajas de CISC destacan las siguientes:

• Permite reducir el costo total del sistema.


• Reduce los costos de creación de software.
• Mejora la compactación de código.
• Facilita la depuración de errores
• Reduce la dificultad de crear compiladores.
25
UNIDAD I
1.3. TIPOS DE ARQUITECTURAS
1.3.1 Arquitectura interna
ARQUITECTURAS CISC Y RISC
Reduced Instruction Set Computer (RISC)
Características fundamentales:
• Reducción del conjunto de instrucciones a instrucciones básicas
simples, con la que pueden implantarse todas las operaciones
complejas.

• Arquitectura del tipo load-store (carga y almacena). Las únicas


instrucciones que tienen acceso a la memoria son 'load' y 'store';
registro a registro, con un menor número de acceso a memoria.
• Pipeline (ejecución simultánea de varias instrucciones). Posibilidad
de reducir el número de ciclos de máquina necesarios para la
ejecución de la instrucción, ya que esta técnica permite que una
instrucción puede empezar a ejecutarse antes de que haya terminado 26
la anterior.
UNIDAD I
1.3. TIPOS DE ARQUITECTURAS
1.3.1 Arquitectura interna
ARQUITECTURAS CISC Y RISC
Reduced Instruction Set Computer (RISC)

Debido a que se tiene un


conjunto de instrucciones
simplificado, éstas se
pueden implantar por
hardware directamente
en la CPU, lo cual elimina
el microcódigo y la
necesidad de decodificar
instrucciones complejas.
27
UNIDAD I
1.3. TIPOS DE ARQUITECTURAS
1.3.1 Arquitectura interna

ARQUITECTURAS CISC Y RISC

Reduced Instruction Set Computer (RISC)

• La tendencia actual en el diseño de microprocesadores y


microcontroladores es el modelo RISC.
• La arquitectura RISC dispone de un repertorio corto de instrucciones,
pero de alta velocidad.
• En el modelo RISC las instrucciones tienen la misma longitud, por lo
que los modos de direccionamiento son pocos.
• Los dispositivos RISC son mas baratos de diseñar y construir.
• Los microcontroladores PIC son dispositivos RISC.
28
UNIDAD I
1.3. TIPOS DE ARQUITECTURAS
1.3.1 Arquitectura interna

ARQUITECTURAS CISC Y RISC


Reduced Instruction Set Computer (RISC)
Existe una variación de los microcontroladores de arquitectura RISC
denominada 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 (Computadoras de


Juego de Instrucciones Específico).

Specific Instruction Set Computer (SISC)


29
UNIDAD I
1.3. TIPOS DE ARQUITECTURAS
1.3.2 Arquitectura externa
El microcontrolador es un sistema cerrado que contiene un computador completo en
un solo chip y de prestaciones limitadas que no se pueden modificar.

La arquitectura externa comprende los recursos del microcontrolador destinados a


ampliar su capacidad de operación mediante su conexión con los elementos
externos, tales como los puertos, las interrupciones y los ADC-DAC´s.

30
UNIDAD I
1.3. TIPOS DE ARQUITECTURAS
1.3.2 Arquitectura externa

ENCAPSULADO DE PIC16F84

Diagrama de pines del PIC16F84 31


UNIDAD I
1.3. TIPOS DE ARQUITECTURAS
1.3.2 Arquitectura externa

ENCAPSULADO DE PIC16F877A

32
Diagrama de pines del PIC16F877A
UNIDAD I
1.3. TIPOS DE ARQUITECTURAS

TAREA:
ANALIZAR LA ARQUITECTURA INTERNA Y EXTERNA DEL
MICROCONTROLADOR:

• PIC16F628
• PIC16F873
• PIC18F4550
• ATMega328
• ATMega2560-16U
• TMS320F28335
• MC68HC11
• INTEL 8051
33
UNIDAD I
1.3. TIPOS DE ARQUITECTURAS

En el caso del PIC16F84 su arquitectura interna destaca los


siguientes componentes:
– Memoria de programa (ROM Flash) de 1k x 14 bits.
– Memoria de datos divida en 2 áreas:
• RAM constituida de 22 registros de propósito específico (SFR) y
68 de propósito general de 8 bits.
• EEPROM de datos formada por 64 registros de 8 bits.
– ALU de 8 bits y registro W que proporciona un operando.
– 2 puertos (PORTA de 5 bits y PORTB de 8 bits) para la comunicación
con el mundo exterior.
– Contador de programa (PC) de 13 bits (1FFFh=8k), solo dispone de
1k (3FFh) de memoria implementada.

34
UNIDAD I
1.3. TIPOS DE ARQUITECTURAS

35
UNIDAD I
1.3. TIPOS DE ARQUITECTURAS

El PIC16F877 es un microcontrolador de Microchip, el cual tiene las


siguientes características en su arquitectura interna.

CPU:
• Tecnología RISC.
• Sólo 35 instrucciones que aprender.
• Todas las instrucciones se ejecutan en un ciclo de reloj, excepto los
saltos que requieren dos.
• Frecuencia de operación de 0 a 20 MHz (200 nseg de ciclo de
instrucción).

Memoria:
• Hasta 8k x 14 bits de memoria Flash de programa (ROM).
• Hasta 368 bytes de memoria de datos (RAM).
• Hasta 256 bytes de memoria de datos EEPROM.
• 8 niveles de pila.
• Contador de programa de 13 bits. 36
UNIDAD I
1.3. TIPOS DE ARQUITECTURAS

37
PIC16F877A
UNIDAD I
1.3. TIPOS DE ARQUITECTURAS

38
PIC16F877A
UNIDAD I
1.4 Tipos de microcontroladores y sus
fabricantes.
INVESTIGACIÓN-EXPOSICIÓN

Realizar una investigación sobre las familias de microcontroladores, dispositivos y


características, así como los costos de los dispositivos mas importantes.

– INTEL
– MOTOROLA (FREESCALE)
– MICROCHIP
– ATMEL
– NATIONAL SEMICONDUCTOR
– ZILOG
– TEXAS INSTRUMENTS
– NXP SEMICONDUCTOR (PHILIPS)
– RENESAS
– STMICROELECTRONICS
– AMD
39
UNIDAD I
1.5 Componentes del microcontrolador

Un microcontrolador combina los recursos fundamentales de una


computadora: La CPU, la memoria y los recursos de E/S en un circuito
integrado único.

40
Estructura genérica de un microcontrolador
UNIDAD I
1.5 Componentes del microcontrolador

41
UNIDAD I
1.5 Componentes del microcontrolador

42
UNIDAD I
1.5 Componentes del microcontrolador
1.5.1 Registros internos.
Los registros son básicamente un tipo de memoria pequeña con fines
especiales que el microcontrolador tiene disponible para algunos usos
particulares. Hay varios grupos de registros en cada procesador:

Un grupo de registros está diseñado para control del procesador (Contador


de programa, Puntero de la pila y Registro de dirección de datos).

Hay otros que no son diseñados para ser controlados por el procesador, pero
que el CPU los utiliza en algunas operaciones (Acumulador y el Registro de
Status).

El PIC16F84 puede direccionar 128 posiciones de memoria RAM, de estos los


primeros 12 son registros que cumplen un propósito especial (SFR) en el
control del microcontrolador y los 68 siguientes son registros de uso general.

Los registros están organizados como dos arreglos (páginas o bancos) de 128
43
posiciones de 8 bits cada una (128 x 8).
UNIDAD I
1.5 Componentes del microcontrolador
1.5.1 Registros internos.
Registro de funciones especificas (SFR) del PIC16F84
Los registros de funciones especiales (SFR) Los SFR pueden ser clasificados en 2
son localidades de memoria usados por el conjuntos: Nucleo (CPU y periféricos.
CPU y los módulos periféricos para controlar
la operación deseada del uCC, estos registros
están implementados como RAM estática.

RAM

44
UNIDAD I
1.5 Componentes del microcontrolador
1.5.1 Registros internos.
Registro de funciones especificas (SFR) del PIC16F84

45
UNIDAD I
1.5 Componentes del microcontrolador
1.5.1 Registros internos.
• Registro de Instrucción
Registro de 14 bits. Todas las instrucciones se colocan en él para ser
decodificadas por la CPU antes de ejecutarlas.

• Registro W (Wotk register)


En los microcontroladores tradicionales, las operaciones se realizan sobre el
acumulador. La salida del acumulador esta conectada a una de las entradas de la
ALU, y por lo tanto éste es siempre uno de los dos operandos de cualquier
instrucción.

En los microcontroladores PIC, la salida de la ALU va al registro W y también a la


memoria de datos, por lo tanto el resultado puede guardarse en cualquiera de
los dos destinos. En las instrucciones de doble operando, uno de los dos datos
siempre debe estar en el registro W, como ocurría en el modelo tradicional con el
acumulador. En las instrucciones de simple operando el dato en este caso se
toma de la memoria (también por convención). 46
UNIDAD I
1.5 Componentes del microcontrolador
1.5.1 Registros internos.
• Registro INDF (00h y 80h)

El registro INDF (Indirect File) que ocupa la posición 00h no tiene existencia
física, por lo que no se podrá acceder a él. En realidad este registro sirve
únicamente para especificar la utilización del direccionamiento indirecto junto
con el registro FSR.

• Registro TMR0 (01h)

El registro TMR0 (Timer 0) almacena el valor del contador TMR0, que como ya
sabemos, está funcionando continuamente e incrementando el valor que tiene
almacenado. Las opciones que controlan este contador residen en el registro
OPTION.

El registro TMR0 se incrementa en una unidad con cada impulso de reloj


seleccionado mediante el registro OPTION. Cada vez que llega al valor FF,
vuelve a 00 generando una interrupción, si se ha autorizado, y continúa su ciclo 47
indefinidamente.
UNIDAD I
1.5 Componentes del microcontrolador
1.5.1 Registros internos.
• El Contador de programa PC (02h y 82h)
Este registro, normalmente denominado PC (Program Counter), es equivalente
al de todos los microprocesadores y contiene la dirección de la próxima
instrucción a ejecutar.

Se incrementa automáticamente al ejecutar cada instrucción, de manera que la


secuencia natural de ejecución del programa es lineal, una instrucción después
de la otra. Algunas instrucciones (de control) cambian el contenido del PC
alterando la secuencia lineal de ejecución.

Dentro de estas instrucciones se encuentran GOTO y CALL que permiten cargar


en forma directa un valor constante en el PC haciendo que el programa salte a
cualquier posición de la memoria. Otras instrucciones de control son los saltos
condicionales, que producen un incremento adicional del PC si se cumple una
condición específica, haciendo que el programa salte, sin ejecutar, la instrucción
siguiente.
48
UNIDAD I
1.5 Componentes del microcontrolador
1.5.1 Registros internos.
• El Contador de programa PC (02h y 82h)…

El PC del PIC16F84 es un registro de 13 bits, lo que permite direccionar 8.192


posiciones de memoria de programa, pero que internamente solamente podrá
direccionar las 1.024 posiciones de memoria de programa del PIC. Esto significa
que solo hace realmente falta tener en cuenta 10 bits del PC (210=1.024).

El PC está implementado por dos registros, PCLATH (5 bits) y PCL (8 bits); los 8
bits de menor peso del PC los proporciona el registro PCL (02h) y a diferencia de
la mayoría de los microprocesadores convencionales, es también un registro
accesible al programador como registro de memoria interna de datos. Es decir
que cualquier instrucción común que opere sobre registros puede ser utilizada
para alterar el PCL y desviar la ejecución del programa.

Los 5 bits de mayor peso del PC que no pueden leerse ni escribirse directamente
proceden del registro PCLATH en la dirección 0Ah y 8Ah.
49
UNIDAD I
1.5 Componentes del microcontrolador
1.5.1 Registros internos.
• El Contador de programa PC (02h y 82h)…

El contador de programa y la pila

Los ocho registros de pila no estan situados en el mismo espacio de memoria


que los demás. Son registros de trece bits capaces de contener íntegramente al
PC. Su utilización es automática, ya que el PC se introduce en la pila durante la
ejecución de una instrucción CALL o de una interrupción, y se extrae de la pila
durante la ejecución del retorno correspondiente.

Cuando los datos contenidos en el PC son almacenados o extraídos de la pila el


registro PCLATH no se ve modificado. Estos registros de pila deben considerarse
como un buffer de memoria circular, lo que significa que, si se introduce más de
8 valores del PC, el noveno valor tomará la posición del primero, y así
sucesivamente.

Ningún bit de registro indica que la pila está llena, por lo que debemos tener
50
cuidado de que no se desborde.
UNIDAD I
1.5 Componentes del microcontrolador
1.5.1 Registros internos.
• El Registro de Estado (03h y 83h)

El registro de Estado (STATUS) contienen varios bits de estado de la unidad central, el


estado aritmético de la ALU, el estado del reset y un par de bits de selección de página
denominados RP1 y RP0. Ocupa la posición 03h del banco 0 y la 83h del banco 1.

Algunos de estos bits los podemos cambiar manualmente a través del programa. Otros
los activa automáticamente el PIC cuando se dan ciertos procesos. Estos bits se llaman
flags (banderas). Para hacernos una idea práctica una bandera se levanta (se pone a 1)
cuando ha pasado algo, al igual que ocurre en el fútbol con los linieres.

El registro STATUS está formado por 8 bits:

R/W significa que el bit correspondiente se puede leer y escribir, mientras que R significa que solamente puede ser leído.
También se indica el estado que se establece tras un reset.
51
UNIDAD I
1.5 Componentes del microcontrolador
1.5.1 Registros internos.
• El Registro de Estado (03h y 83h)…

Bit 7, IRP: Selección del banco en direccionamiento indirecto. Este bit junto con el de
más peso del registro FSR sirven para determinar el banco de la memoria de datos
seleccionado. En el PIC16X84 al disponer de dos bancos no se usa y debe
programarse como 0.

Bit 6 y 5, RP0 y RP1: Register Bank Select. Selección de página o banco de la


memoria con direccionamiento directo. Cada página contiene 128 bytes. Como el
PIC16F84 sólo tiene dos bancos únicamente se emplea RP0 de forma que cuando
vale 0 se accede al banco 0 y cuando vale 1 se accede al banco 1. Después de un
reset, RP0 se pone automáticamente a 0. RP1 debe mantenerse a 0. El bit RP1
deberá ser puesto a cero, ya que si no nos saldríamos del rango de memoria.

52
UNIDAD I
1.5 Componentes del microcontrolador
1.5.1 Registros internos.

• El Registro de Estado (03h y 83h)…

Bit 4 (flag), TO: Time Out (Tiempo acabado)


1. Se pone a 1 tras conectar la alimentación o al ejecutar CLRWDT o SLEEP.
0. Se pone a 0 por desbordamiento del Perro Guardián WDT.
Bit 3 (flag), PD: Power Down (Apagado).
1. Se pone automáticamente a 1 tras conectar la alimentación Vdd o
ejecutar CLRWDT, que resetea el contador WatchDog.
0. Se pone a 0 al ejecutar la instrucción SLEEP.
Bit 2 (flag), Z: Cero
1 = El resultado de una operación aritmética o lógica es 0.
0 = El resultado es distinto de 0.
Bit 1 (flag), DC (Digit Carry). Acarreo en el 4º bit de menos peso. Funciona igual
que el bit de Carry descrito a continuación. De interés en operaciones en BCD
53
UNIDAD I
1.5 Componentes del microcontrolador
1.5.1 Registros internos.

• El Registro de Estado (03h y 83h)…

Bit 0 (flag), C (Carry). Acarreo en el 8º bit o bit de mas peso. Es el bit de "acarreo"
en operaciones de suma AADWF y ADDLW así como también el bit de "llevada"
en las instrucciones de sustracción SUBWF y SUBLW. También lo emplean las
instrucciones RLF y RRF de rotación de bits.
Suma
1. Se pone a 1 cuando se ha producido acarreo en la suma en el bit de
mayor peso con las operaciones AADWF y ADDLW.
0. Se pone a 0 si en la suma no se ha producido acarreo.
Resta
1. Se pone a 1 si en la resta no se ha producido llevada.
0. Se pone a 0 cuando se ha producido llevada en la resta con las
operaciones SUBWF y SUBLW.
54
UNIDAD I
1.5 Componentes del microcontrolador
1.5.1 Registros internos.
• Los Registros PORTA y PORTB (05h y 06h)

Estos registros contienen los niveles lógicos de las patillas de E/S los puertos A y
B. Cada bit se puede leer o escribir según la patilla correspondiente se haya
configurado como entrada o como salida.

Conviene recordar que cualquier línea puede funcionar como entrada o como
salida. Sin embargo, si actúa como entrada la información que se introduce no
se memoriza, por lo que la información debe ser mantenida hasta que sea leída.
Si la línea actúa como salida, el bit que procede del bus de datos se guarda en la
báscula, con lo que la información que ofrece esta patilla permanece invariable
hasta que se reescriba este bit.

55
UNIDAD I
1.5 Componentes del microcontrolador
1.5.1 Registros internos.

• Los Registros TRISA y TRISB (85h y 86h)

Estos registros son idénticos para el puerto A y el puerto B, con la


diferencia de que uno será de 5 bits y otro de 8 bits, el mismo número
de bits que tiene cada puerto.

Los registros TRISx, también son llamados así, sirven para configurar si
los bits de cada puerto serán de entrada o de salida:

1: La patilla del puerto correspondiente será de entrada


0: En este caso la patilla actuará como una salida.

56
UNIDAD I
1.5 Componentes del microcontrolador
1.5.1 Registros internos.
• Registro EEDATA (08h)

El registro EEDATA (Datos de EEPROM) guarda el contenido de una posición de la


memoria EEPROM de datos antes de su escritura o después de su lectura, según
leamos o escribamos en ella. La memoria EEPROM es bastante lenta, dato que
tendremos en cuenta cuando accedamos a ella para escribirla, pues tarda unos
10 ms en completar el proceso.

• Registro EEADR (09h)

El registro EEADR (Dirección de EEPROM) guarda la dirección de la posición de


memoria EEPROM cuando queramos acceder a ella, bien para su lectura, o bien
para su escritura.

El registro EEADR puede direccionar como máximo 256 bytes de los cuales sólo
los 64 primeros están disponibles, con lo que los dos bits de mayor peso han de
tener el valor de '0'. 57
UNIDAD I
1.5 Componentes del microcontrolador
1.5.1 Registros internos.
• Registro INTCON (0Bh y 8Bh)

Este registro contiene varios bits de selección de fuentes de interrupción, el bit


de activación global de interrupciones y varios flag que indican la causa de una
interrupción. Sirve para el control global de las interrupciones y para indicar la
procedencia de algunas de ellas, gracias a los bits de estado.

Se dispone de cuatro potenciales recursos de interrupción:


• Una fuente externa a través del pin RB0/INT.
• El desbordamiento del temporizador 0 (TMR0).
• Un cambio de estado en los pines RB4 a RB7.
• Programación de la EEPROM de datos.

Cada bit del registro INTCON tiene un significado concreto que se muestra en la
siguiente tabla:

58
UNIDAD I
1.5 Componentes del microcontrolador
1.5.1 Registros internos.
• Registro INTCON (0Bh y 8Bh)…

Cada flag o bandera individual debe ponerse a cero por software. Solamente hay
un vector de interrupción en la memoria de programa (dirección 0004h), por lo que
se deben comprobar los bits de INTCON en la subrutina de interrupción para saber
cual es la fuente de la misma.

Cuando llega una interrupción, el PIC pone el bit GIE a cero, de forma que no se
perturbe el tratamiento de la interrupción en curso, debido a otras interrupciones
eventuales. Este bit se pone automáticamente a uno al terminar la subrutina de
interrupción, con la ejecución de la instrucción RETFIE.

Los indicadores de interrupciones correspondientes permanecen funcionales


incluso cuando no se han autorizado. En este caso también pueden leerse y
escribirse todos los bits que componen este registro.

59
UNIDAD I
1.5 Componentes del microcontrolador
1.5.1 Registros internos.
• Registro INTCON (0Bh y 8Bh)…

Bit 7, GIE: Habilitación global de interrupciones (Global Interrupt Enable).


1: Concede el permiso de interrupciones.
0: Cancela el permiso de las interrupciones.
Bit 6, EEIE: Habilitación de las Interrupciones de la memoria EEPROM.
1: Permite que se produzcan interrupciones debidas al fin de escritura de la
EEPROM, etc.
0: Este tipo de interrupciones estarán inhibidas.
Bit 5, T0IE: Habilitación de la interrupción del temporizador por desbordamiento
(Timer 0 Interrupt Enable).
1: Autoriza las interrupciones debidas al desbordamiento del temporizador.
0: Interrupción del temporizador deshabilita de manera que cuando se
produzca el flag correspondiente permanecerá inactivo.

60
UNIDAD I
1.5 Componentes del microcontrolador
1.5.1 Registros internos.
• Registro INTCON (0Bh y 8Bh)…

Bit 4, INTE: Habilitación de la entrada de interrupción externa (Interrupt Enable) por


patilla RB0/INT.
1: Autoriza las interrupciones provocadas RB0/INT del puerto B.
0: Interrupción externa deshabilita de manera que cuando se produzca una
interrupción externa el flag correspondiente permanecerá inactivo.
Bit 3, RBIE: Habilitación de las interrupciones del puerto B (RB Interrupt Enable).
1: Autoriza las interrupciones provocadas por un cambio de estado de las líneas
RB4 a RB7 del puerto B.
0: Interrupción del puerto B deshabilitada.
Bit 2 (flag), T0IF: Bit de interrupción de desbordamiento del TMR0.
1: El TMR0 ha rebosado. Se borra por software.
0: El TMR0 no ha rebosado.

61
UNIDAD I
1.5 Componentes del microcontrolador
1.5.1 Registros internos.

• Registro INTCON (0Bh y 8Bh)…

Bit 1 (flag), INTF: Bit de interrupción de la Entrada de Interrupción INT (patilla


RB0/INT).
1: La entrada de interrupción se ha activado (patilla RBO/INT del puerto B). Se
borra por software.
0: No hay interrupción externa.
Bit 0 (flag), RBIF: Bit de interrupción del puerto B.
1: Cambio de estado en una de las líneas de RB4 a RB7 del puerto B. Se borra
por software.
0: Ninguna línea de RB4 a RB7 del puerto B ha cambiado.

62
UNIDAD I
1.5 Componentes del microcontrolador
1.5.2 Tipos y distribución de las memorias internas.

MEMORIA:
En los microcontroladores la memoria de instrucciones y
datos está integrada en el propio chip. Una parte debe ser
no volátil, tipo ROM, y se destina a contener el programa de
instrucciones que gobierna la aplicación.

Como el microcontrolador sólo se destina a una tarea en la


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

Otra parte de memoria será tipo RAM, volátil, y se destina a


guardar las variables y los datos. La RAM en estos
dispositivos es de poca capacidad pues sólo debe contener
las variables y los cambios de información que se produzcan
en el transcurso del programa.
63
UNIDAD I
1.5 Componentes del microcontrolador
1.5.2 Tipos y distribución de las memorias internas.
MEMORIA DE PROGRAMA

Existen varias alternativas para implementar una memoria


de programa en un microcontrolador, en ellas están la
memoria ROM de máscara y la memoria ROM tipo flash.

La memoria ROM de máscara es una memoria no volátil de


solo lectura cuyo contenido se graba durante la fabricación
del chip. El elevado costo del diseño de la máscara sólo
hace aconsejable el empleo de los microcontroladores con
este tipo de memoria cuando se precisan cantidades
superiores a varios miles de unidades.

La memoria ROM tipo flash es el tipo de memoria utilizada


en los microcontroladores actuales, podrá ser grabada o
borrada eléctricamente a nuestro antojo desde el
programador. 64
UNIDAD I
1.5 Componentes del microcontrolador
1.5.2 Tipos y distribución de las memorias internas.
MEMORIA DE PROGRAMA
La memoria tipo FLASH tiene la característica de poderse
borrar en bloques completos y no podrán borrarse
posiciones concretas o específicas. Este tipo de memoria
no es volátil, es decir, no pierde los datos si se interrumpe
la energía.

Es decir, se trata de una memoria no volátil, de bajo


consumo, que se puede escribir y borrar. Funciona como
una ROM y una RAM pero consume menos y es más
pequeña. A diferencia de la ROM de máscara, la memoria
FLASH es programable en el circuito.

La alternativa FLASH está recomendada frente a la


EEPROM cuando se precisa gran cantidad de memoria de
programa no volátil; es más veloz, pero tolera menos ciclos
de escritura/borrado. 65
UNIDAD I
1.5 Componentes del microcontrolador
1.5.2 Tipos y distribución de las memorias internas.
MEMORIA DE PROGRAMA

La memoria del programa para el PIC16F84 comienza en la


posición 0000h y termina en la posición 03FFh. Esto es
1Kbyte, es decir, 1024 bytes (210).

En la figura también se muestra el PC (Contador de


Programa o Program Counter). Que apunta a la dirección
de memoria de la instrucción en curso y permite que el
programa avance cuando se incrementa.

El vector de reset se encuentra en la posición 0000h y el de


interrupción en la 0004h. Debido a que el PIC16F84A tiene
un contador de programa de 13 bit puede direccionar un
espacio de memoria de 8K x 14, sin embargo sólo el primer
1K x 14 (0000h-03FFh) está implementado físicamente.
66
UNIDAD I
1.5 Componentes del microcontrolador
1.5.2 Tipos y distribución de las memorias internas.
LA PILA O STACK

En los microcontroladores PIC el stack es una memoria interna dedicada, de


tamaño limitado, separada de las memorias de datos y de programa,
inaccesible al programador, y organizada en forma de pila, que es utilizada
solamente, y en forma automática, para guardar las direcciones de retorno de
subrutinas e interrupciones;

Cada posición es de 11 bits y permite guardar una copia completa del PC.
Como en toda memoria tipo pila, a los datos se accede de forma LIFO (Last In
First Out) de manera que el último en entrar es el primero en salir. El tamaño
del stack en los 16F84 es de 8 posiciones.

El stack y el puntero interno que lo direcciona, son invisibles para el


programador, solo se accede a ellos automáticamente para guardar o rescatar
las direcciones de programa cuando se ejecutan las instrucciones de llamada o
retorno de subrutinas, cuando se produce una interrupción o cuando se
67
ejecuta una instrucción de retorno de ella.
UNIDAD I
1.5 Componentes del microcontrolador
1.5.2 Tipos y distribución de las memorias internas.
LA PILA O STACK

En la figura se muestra la pila o stack, de 8 niveles (Nivel


Pila 1 a Nivel Pila 8). Se utiliza cuando ejecutamos un
subproceso o subrutina, es decir, un conjunto de
instrucciones que hemos aislado de las demás para
simplificar.

En este caso el PC dejará de incrementarse y apuntará a


la posición de memoria de programa donde empieza la
subrutina; en el primer nivel de la pila se almacenará esta
llamada, hasta que se acaben de ejecutar las
instrucciones que contiene, momento en el cual se
seguirá con las instrucciones desde donde había sido
llamada. Por eso es necesario saber donde se quedó el
programa almacenándose la dirección en la pila.
Podemos hacer hasta 8 llamadas a subrutinas una dentro
68
de otra. A esto se le llaman subrutinas anidadas.
UNIDAD I
1.5 Componentes del microcontrolador
1.5.2 Tipos y distribución de las memorias internas.
MEMORIA DE DATOS

La memoria de datos en los microcontroladores está


compuesta por dos bloques funcionales, la RAM y la
EEPROM.

La memoria RAM, es volátil, y se destina a guardar las


variables y los datos generados en el programa. Para el
PIC16F84 está organizada en dos bancos de registros.
Cada banco se divide a su vez en dos áreas:
• SFR (Registros de Funciones Especiales)
• GPR (Registros de Propósito General)

Los SFR son localidades asociadas específicamente a los


diferentes periféricos y funciones de configuración del
PIC; mientras que los GPR son la memoria RAM de uso
general. 69
UNIDAD I
1.5 Componentes del microcontrolador
1.5.2 Tipos y distribución de las memorias internas.
MEMORIA DE DATOS
RAM del PIC16F84
Banco 0:
Este banco está formado por 80 bytes, desde la posición 00 hasta la 4Fh (de la 0 a la
79). El área SFR consta de 12 registros que serán utilizados por funciones especiales
del microcontrolador; comienza en la dirección 00h y termina en la 0Bh, es decir, de
la 0 a la 11.

El Área GPR consta de 68 registros de memoria RAM que serán utilizados para
almacenar datos temporales requeridos por los programas. Comienza en la dirección
0Ch y termina en la posición 4Fh (de la 12 a la 79). Esta parte es la memoria de
registros de propósito general.

Banco 1:
Este banco tiene las mismas dimensiones que el anterior, pero su uso es menor, ya
que no tiene banco para registros de propósito general. Solamente tiene una sección
de registros especiales que van de la posición 80h a la 8Bh (de la 128 a la 139). 70
Para los PIC16F87x el mapa
de memoria RAM está
distribuido en 4 bancos o
páginas.

71
UNIDAD I
1.5 Componentes del microcontrolador
1.5.2 Tipos y distribución de las memorias internas.

MEMORIA DE DATOS EEPROM

Se trata de memorias de sólo lectura, programables y borrables


eléctricamente EEPROM (Electrical Erasable Programmable Read OnIy
Memory). Los microcontroladores dotados de memoria EEPROM una vez
instalados en el circuito, pueden grabarse y borrarse cuantas veces se quiera
sin ser retirados de dicho circuito.

En la actualidad se va extendiendo en los fabricantes la tendencia de incluir


una pequeña zona de memoria EEPROM en los circuitos programables para
guardar y modificar cómodamente una serie de parámetros que adecuan el
dispositivo a las condiciones del entorno.

Algunas consideraciones a tener en cuenta sobre las memorias EEPROM es


que son rápidas en el proceso de lectura, pero pueden tardar varios
milisegundos en realizar un proceso de escritura. 72
UNIDAD I
1.5 Componentes del microcontrolador
1.5.2 Tipos y distribución de las memorias internas.

MEMORIA DE DATOS EEPROM

La memoria EEPROM de datos no está mapeada en la zona de la


memoria de datos donde se ubican los registros SFR y GPR. La
memoria EEPROM es indirectamente direccionada por los
registros de funciones especiales; hay 4 SFRs usados para leer y
escribir esta memoria, son: EECON1, EECON2, EEDATA y EEADR.

El registro EEDATA almacena los 8 bits del dato para


lectura/escritura, y el registro EEADR lamacena la dirección de la
memoria EEPROM que va a ser accesada.

El PIC16F84 tiene 64 registros de 8 bits de memoria de datos


EEPROM, cuyo rango de direccionamiento va de 0h a 3Fh.
Mientras que el PIC16F877 tiene 256 bytes de memoria EEPROM.
73
UNIDAD I
1.5 Componentes del microcontrolador
1.5.2 Tipos y distribución de las memorias internas.

EJERCICIO:

ria completo de los siguientes PIC:

• PIC16F84
• PIC16F628A
• PIC16F873
• PIC16F877A

74
UNIDAD I
1.5 Componentes del microcontrolador
1.5.3 Periféricos
PUERTOS DE E/S

Un puerto es la manera en que el procesador se comunica con el mundo


externo, es decir, es cualquier parte de la circuitería de la computadora
con la cual el procesador necesita comunicarse, tiene asignado un número
de puerto que el procesador utiliza.

La principal utilidad de las patitas que posee la cápsula que contiene un


microcontrolador es soportar las líneas de E/S que comunican al
procesador 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.

75
UNIDAD I
1.5 Componentes del microcontrolador
1.5.3 Periféricos
PUERTOS DE E/S
Cada fabricante oferta numerosas versiones de una arquitectura básica de
microcontrolador. 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 para el manejo de los
dispositivos periféricos, son:
• Temporizadores o ”Timers”.
• Interrupciones.
• Conversor A/D.
• Conversor D/A.
• Comparador analógico.
• Modulador de anchura de pulsos o PWM.
• Puertos de E/S digitales.
• Puertos de comunicación. 76
UNIDAD I
1.5 Componentes del microcontrolador
1.5.3 Periféricos
PUERTOS DE E/S DIGITALES
El PIC16F84 dispone de dos puertos digitales de E/S paralelos de uso general
denominados Puerto A y Puerto B:

• Puerto A
El puerto A dispone de 5 líneas de la RA0 a la RA4, en la que hay que distinguir el
pin A4 o T0CKI (Timer 0 Clock Input) que está compartida con la entrada para el
Timer 0 (TMR0) a través de un trigger Schmitt y que cuando se configura como
salida es de drenador abierto, por lo que debe colocarse una resistencia de
polarización.

• Puerto B
El puerto B dispone de 8 líneas de E/S que van desde la RB0 a la RB7 (la línea
RB0 o INT es compartida con la entrada de interrupción externa). Además, las
líneas RB4 a RB7 puede programarse una interrupción por cambio de estado de
cualquiera de estas líneas.
La datasheet especifica como configurar cada puerto y que tipo de I/O y función va a
77
desempeñar.
UNIDAD I
1.5 Componentes del microcontrolador
1.5.3 Periféricos

PUERTOS DE E/S DIGITALES

El PIC16F877 dispone de 5 puertos digitales de E/S paralelos de uso general, ellos


se agrupan, de manera similar a los registros, en cinco puertos denotados con A, B,
C, D y E.

Todos ellos tienen las siguientes características en común:

• Por las razones prácticas, muchos pines de E/S son multifuncionales. Si un pin
realiza una de estas funciones, puede ser utilizado como pin de E/S de propósito
general.
• Cada puerto tiene su propio registro de control de flujo, o sea el registro TRISx
correspondiente: TRISA, TRISB, TRISC, etc. lo que determina el comportamiento
de bits del puerto, pero no determina su contenido.

78
UNIDAD I
1.5 Componentes del microcontrolador
1.5.3 Periféricos
PUERTOS DE E/S DIGITALES

Los puertos del PIC16F877 se describen a continuación:

Puerto A
El puerto PORTA es un puerto bidireccional, de 8 bits de anchura. Los bits de
los registros TRISA y ANSEL controlan los pines del PORTA. Todos los pines del
PORTA se comportan como entradas/salidas digitales. Los primeros 5 bits
pueden ser entradas analógicas (denotadas por AN).

Puerto B
El puerto PORTB es un puerto bidireccional, de 8 bits de anchura. Los bits del
registro TRISB determinan la función de sus pines. Los primeros 6 pines de este
puerto se pueden comportar como las entradas analógicas (AN).
79
UNIDAD I
1.5 Componentes del microcontrolador
1.5.3 Periféricos

PUERTOS DE E/S DIGITALES

Los puertos del PIC16F877 se describen a continuación:…

Puerto C
El puerto PORTC es un puerto bidireccional, de 8 bits de anchura. Los bits del
registro TRISC determinan la función de sus pines. Algunos pines tiene otras
funciones.

Puerto D
El puerto PORTD es un puerto bidireccional de 8 bits de anchura. Los bits del
registro TRISD determinan la función de sus pines. Similar a otros puertos,
algunos pines tiene otras funciones.

80
UNIDAD I
1.5 Componentes del microcontrolador
1.5.3 Periféricos

PUERTOS DE E/S DIGITALES

Los puertos del PIC16F877 se describen a continuación:…

Puerto E
El puerto PORTE es un puerto bidireccional, de 4 bits de anchura. Los bits del
registro TRISE determinan la función de sus pines. Similar a otros puertos, un
uno lógico (1) en el registro TRISE configura el pin apropiado del puerto
PORTE como entrada. La excepción es el pin RE3, que siempre está
configurado como entrada.

Similar a los puertos PORTA y PORTB, en este caso los tres pines se pueden
configurar como entradas analógicas. Los bits del registro ANSEL determinan
si estos pines serán configurados como entradas analógicas (AN) o
entradas/salidas digitales:

81
UNIDAD I
1.5 Componentes del microcontrolador
1.5.3 Periféricos
PUERTOS DE E/S
Convertidor A/D (CAD)

Los microcontroladores que incorporan un Conversor A/D (Analógico/Digital) pueden


procesar señales analógicas, tan abundantes en las aplicaciones. Suelen disponer de
un multiplexor que permite aplicar a la entrada del CAD diversas señales analógicas
desde las patitas del circuito integrado.

Conversor D/A (CDA)

Transforma los datos digitales obtenidos del procesamiento de una computadora en


su correspondiente señal analógica que saca al exterior por una de las patitas de la
cápsula.

Modulador de anchura de pulso o PWM

Son circuitos que proporcionan en su salida pulsos de anchura variable, que se


ofrecen al exterior a través de las patitas del encapsulado. 82
UNIDAD I
1.5 Componentes del microcontrolador
1.5.3 Periféricos

PUERTOS DE COMUNICACIÓN

Con objeto de dotar al microcontrolador de la posibilidad de comunicarse


con otros dispositivos externos, otros buses de microprocesadores, buses
de sistemas, buses de redes y poder adaptarlos con otros elementos bajo
otras normas y protocolos. Algunos modelos disponen de recursos que
permiten directamente esta tarea, entre los que destacan:

• UART: adaptador de comunicación serie asíncrona.


• USART: adaptador de comunicación serie síncrona y asíncrona.
• USB: (Universal Serial Bus), que es un moderno bus serie para las PC.
• Bus I2C: que es un interfaz serie de dos hilos desarrollado por Philips.
• CAN (Controller Area Network): para permitir la adaptación con
redes de conexionado multiplexado.
83
UNIDAD I
1.5 Componentes del microcontrolador
1.5.4 Instrucciones del microcontrolador

REPERTORIO DE INSTRUCCIONES DEL PIC16F877


• Es un juego reducido de 35 instrucciones muy simples.
• Procesador RISC.
• La mayoría de las instrucciones se ejecuta en 4 ciclos de reloj; los
saltos y llamadas a subprogramas se ejecutan en 8 (no se aprovecha
pipeline).
• Todas las instrucciones tienen la misma longitud en la gama media: 14
bits.
• Las instrucciones se pueden clasificar atendiendo a dos criterios:
• Funcionalidad
• Formato

84
UNIDAD I
1.5 Componentes del microcontrolador
1.5.4 Instrucciones del microcontrolador

REPERTORIO DE INSTRUCCIONES DEL PIC16F877.

Según su funcionalidad se clasifican en:

• Instrucciones de carga
• Instrucciones aritméticas
• Instrucciones lógicas
• Instrucciones de bit
• Instrucciones de salto
• Instrucciones para manejo de subrutinas
• Instrucciones especiales

85
UNIDAD I
1.5 Componentes del microcontrolador
1.5.4 Instrucciones del microcontrolador

86
UNIDAD I
1.5 Componentes del microcontrolador
1.5.4 Instrucciones del microcontrolador
REPERTORIO DE INSTRUCCIONES DEL PIC16F877.

87
UNIDAD I
1.5 Componentes del microcontrolador
1.5.4 Instrucciones del microcontrolador
REPERTORIO DE INSTRUCCIONES DEL PIC16F877.

88
UNIDAD I
1.5 Componentes del microcontrolador
1.5.4 Instrucciones del microcontrolador
REPERTORIO DE INSTRUCCIONES DEL PIC16F877.

89
UNIDAD I
1.5 Componentes del microcontrolador
1.5.4 Instrucciones del microcontrolador
REPERTORIO DE INSTRUCCIONES DEL PIC16F877.

90
UNIDAD I
1.5 Componentes del microcontrolador
1.5.4 Instrucciones del microcontrolador

REPERTORIO DE INSTRUCCIONES DEL PIC16F877.

Según su formato:

Hay solo 35 instrucciones en estos PICs, con códigos de instrucción de 14


bits de ancho. Todas las instrucciones ocupan una palabra y todas
consumen un ciclo, excepto las de salto o bifurcación que usan dos. La
velocidad máxima de funcionamiento 20MHz (200 ns x instrucción).
Típicamente a 4MHz (1us x instrucción), con 1024 palabras (14 bits) de
memoria de programa FLASH.

Veamos primero el formato de las instrucciones:

91
UNIDAD I
1.5 Componentes del microcontrolador
1.5.4 Instrucciones del microcontrolador
REPERTORIO DE INSTRUCCIONES DEL PIC16F877.
Según su formato:…
Veamos primero el formato de las instrucciones:…

92
UNIDAD I
1.5 Componentes del microcontrolador
1.5.4 Instrucciones del microcontrolador
REPERTORIO DE INSTRUCCIONES DEL PIC16F877.
Según su formato:…

ARQUITECTURA
RISC
35 DE INSTRUCCIONES
w es el acumulador,
f representa un registro
cualquiera y,
C, DC, Z los flags del
registro STATUS.

93

93
UNIDAD I
1.5 Componentes del microcontrolador
1.5.4 Instrucciones del microcontrolador
REPERTORIO DE INSTRUCCIONES DEL PIC16F877.
Según su formato:…
UNIDAD I
1.5 Componentes del microcontrolador
1.5.4 Instrucciones del microcontrolador

95
UNIDAD I
1.5 Componentes del microcontrolador
1.5.4 Instrucciones del microcontrolador
REPERTORIO DE INSTRUCCIONES DEL PIC16F877.
Según su formato:…

Por ejemplo, cual sería el código en binario-hexadecimal para las siguientes


instrucciones

• BSF STATUS, RP0

• INCF CONTADOR, 1

96
UNIDAD I
1.5 Componentes del microcontrolador
1.5.5 Distribución de terminales.
Terminales del PIC16F84
La disposición de sus terminales se muestran a continuación:

97
UNIDAD I
1.5 Componentes del microcontrolador
1.5.5 Distribución de terminales.
Terminales del PIC16F84
Patas 1, 2, 3, 17 y 18 (RA0-RA4/TOCKI): Es el PORT A. Corresponden a 5
líneas bidireccionales de E/S; es capaz de entregar niveles TTL cuando la
alimentación aplicada en VDD es de 5V ± 5%.

El pin RA4/TOCKI como entrada puede programarse en funcionamiento


normal o como entrada del contador/temporizador TMR0. Cuando este pin
se programa como entrada digital, funciona como un disparador de
Schmitt, puede reconocer señales un poco distorsionadas y llevarlas a
niveles lógicos (0 y 5 Volts). Cuando se usa como salida digital se comporta
como colector abierto; por lo tanto se debe poner una resistencia de Pull-
Up (resistencia externa conectada a un nivel de 5 V.

Pata 4 (MCLR / Vpp): Es una pata de múltiples aplicaciones, es la entrada de


Reset (Master Clear) 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. 98
UNIDAD I
1.5 Componentes del microcontrolador
1.5.5 Distribución de terminales.
Terminales del PIC16F84
Patas 5 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.

Patas 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.

Patas 15 y 16 (OSC1/CLKIN y OSC2/CLKOUT): Corresponden a los pines de la


entrada externa de reloj y salida de oscilador a cristal respectivamente. 99
UNIDAD I
1.5 Componentes del microcontrolador
1.5.5 Distribución de terminales.

Terminales del PIC16F84


Algunas consideraciones:
• Como estos dispositivos son de tecnología CMOS, todos los
pines deben estar conectados a alguna parte, porque se
puede dañar el integrado. Los pines que no se estén usando
se deben conectar a la fuente de alimentación de +5V.

• La máxima capacidad de corriente de cada uno de los pines


de los puertos en modo sumidero (sink) es de 25 mA y en
modo fuente (source) es de 20 mA. La máxima capacidad de
corriente total de los puertos es:

100
UNIDAD I
1.5 Componentes del microcontrolador
1.5.5 Distribución de terminales.
Terminales del PIC16F84
Algunas consideraciones:
• El oscilador externo es un circuito externo que le indica al
micro la velocidad a la que debe trabajar. Este circuito, que se
conoce como oscilador o reloj, es muy simple pero de vital
importancia para el buen funcionamiento del sistema. El
P1C16F84 puede utilizar cuatro tipos de reloj diferentes. Estos
tipos son:
– RC: Oscilador con resistencia y condensador.
– XT: Cristal.
– HS: Cristal de alta velocidad.
– LP.: Cristal para baja frecuencia y bajo consumo de potencia.

Típicamente se utiliza el cristal de 4 MHz, porque garantiza


mayor precisión y un buen arranque del microcontrolador.
Internamente esta frecuencia es dividida por cuatro, lo que
hace que la frecuencia efectiva de trabajo sea de 1 MHz, por
lo que cada instrucción se ejecuta en un microsegundo. 101
UNIDAD I
1.5 Componentes del microcontrolador
1.5.5 Distribución de terminales.
Terminales del PIC16F877
La disposición de sus terminales se muestran a continuación

102
UNIDAD I
1.5 Componentes del microcontrolador
1.5.5 Distribución de terminales.
Terminales del PIC16F877, detallado de pines (#):

• OSC1/CLKIN (9): corresponde a la entrada para el oscilador externo.


• OSC2/CLKOUT (10): es la salida del oscilador.
• MCLR/VPP/THV (1): MCLR, corresponde al reset del microcontrolador por
hardware, también se utiliza como pulso para comenzar a grabar en el
dispositivo.
• RA0/AN0 (2): Actúa como Pin digital I/O o como entrada analógica del
conversor AD (canal 0).
• RA1/AN1 (3): Actúa como Pin digital I/O o como entrada analógica del
conversor AD (canal 1)
• RA2/AN2/VREF- (4): Actúa como Pin digital I/O, como entrada analógica
del conversor AD (canal 2) o como entrada negativa de voltaje de
referencia.
• RA3/AN3/VREF+ (5): Actúa como Pin digital I/O, como entrada analógica
del conversor AD (canal 3) o como entrada positiva de voltaje de
referencia.
• RA4/T0CKI (6): Actúa como Pin digital I/O, o entrada de reloj del timer0
• RA5/!SS/AN4 (7): Actúa como Pin digital I/O, o selección como esclavo SS 103
o como entrada analógica del conversor AD (canal 4).
UNIDAD I
1.5 Componentes del microcontrolador
1.5.5 Distribución de terminales.
Terminales del PIC16F877, detallado de pines (#):

• RB0/INT (21): Corresponde al pin 0 del puerto B, es bidireccional y


también se puede utilizar como interrupción externa.
• RB1 (22): pin 1 del puerto B, es bidireccional.
• RB2 (23): pin 2 del puerto B, es bidireccional.
• RB3/PGM(24): pin 3 del puerto B, es bidireccional o entrada de bajo
voltaje.
• RB4(25): pin 4 del puerto B, es bidireccional.
• RB5(26): pin 5 del puerto B, es bidireccional.
• RB6/PGC(27): pin 6 del puerto B, es bidireccional, también puede
programarse como petición de interrupción cuando el pin cambia de
estado.
• RB7/PGD(28): pin 7 del puerto B, es bidireccional, también puede
programarse como petición de interrupción cuando el pin cambia de
estado.
104
UNIDAD I
1.5 Componentes del microcontrolador
1.5.5 Distribución de terminales.
Terminales del PIC16F877, detallado de pines (#):
• RC0/T1OSO/T1CKI (11): Actúa como Pin digital I/O del puerto C, salida
del oscilador del timer1 o como clock de entrada del timer1.
• RC1/T1OSI/CCP2 (12): Actúa como Pin digital I/O del puerto C, entrada
del oscilador del timer1 o entrada al modo captura CCP2, también
proporciona salida PWM 2.
• RC2/CCP1 (13): Actúa como Pin digital I/O del puerto C o entrada al
modo captura CCP1, tambien proporciona salida PWM 1.
• RC3/SCK/SCL (14): Actúa como Pin digital I/O del puerto C, entrada de
reloj SCL/SCK o salida de los módulos SPI e I2C.
• RC4/SDI/SDA (15): Actúa como Pin digital I/O del puerto C, entrada de
reloj SCL/SCK o salida de los módulos SPI e I2C.
• RC5/SDO (16): Pin digital I/O del puerto C o salida digital en modo SPI.
• RC6/TX/CK (17): Pin digital I/O del puerto C , pin de transmisión Tx
USART o reloj síncrono.
• RC7/RX/DT (18): Pin digital I/O del puerto C , pin de recepción Rx USART
o datos síncronos.
105
UNIDAD I
1.5 Componentes del microcontrolador
1.5.5 Distribución de terminales.

Terminales del PIC16F877, detallado de pines (#):

• RD0/PSP0-RD7/PSP7 (19-22, 27-30): Puede actuar como I/O o como


líneas para la transferencia de datos en la comunicación por puerta
paralela esclava.
• RE0/!RD/AN5 (8): Pin digital I/O del puerto E, señal de lectura para
la puerta paralela esclava o entrada analógica (canal 5).
• RE1/!WR/AN6 (9): Pin digital I/O del puerto E, señal de escritura
para la puerta paralela esclava o entrada analógica (canal 6).
• RE2/!CS/AN7 (10): Pin digital I/O del puerto E,
activación/desactivación de la puerta paralela esclava o entrada
analógica (canal 7).

• VSS (8,19): Gnd


• VDD (20,32): +5Vdc
106
UNIDAD I
1.5 Componentes del microcontrolador
1.5.6 El reset y sus posibles fuentes.
RESET
El RESET regresa al microcontrolador a una condición de inicio conocida e
inicia la ejecución del programa desde una localidad de memoria definida
por el usuario.

Cuando se presenta la señal de RESET:


• Inmediatamente se detiene la operación que se esté ejecutando
• Inicializa ciertos bits de control y estado
• Carga el contador de programa (PC) con una dirección definida por
el usuario que se encuentra en las localidades 0FFFEh y 0FFFFh.

El mecanismo de RESET en la familia de los microcontroladores PIC ofrece la


posibilidad de evaluar ciertas condiciones bajo las cuales el
microcontrolador puede reiniciar su operación. Durante un RESET algunos
registros no son afectados, pero otros pueden ser borrados o modificados
totalmente, por lo tanto es importante tener en cuenta las condiciones que
pueden generar estados de RESET en el dispositivo. 107
UNIDAD I
1.5 Componentes del microcontrolador
1.5.6 El reset y sus posibles fuentes.
RESET
En el PIC16F84A se tienen varias posibles fuentes que pueden dar origen a una
condición de RESET. Estas son:
• Power-On Reset (POR).
• MCLR (Master Clear Reset) durante operación normal del dispositivo.
• MCLR mientras se esta en modo SLEEP (modo de bajo consumo).
• WDT (Watch Dog Timer) Reset durante operación normal.
• Desbordamiento del WDT mientras se esta en modo SLEEP.

El PIC16F84A posee internamente un circuito temporizador


conectado al pin de RESET que funciona cuando se da
alimentación al uCC, se puede entonces conectar el pin de
MCLR a la fuente de alimentación. Esto hace que al encender
el sistema el microcontrolador quede en estado de RESET por
un tiempo mientras se estabilizan todas las señales del
circuito. El siguiente circuito, se usa para tener control sobre
el RESET del sistema, sólo se le conecta un botón. 108
UNIDAD I
1.5 Componentes del microcontrolador
1.5.6 El reset y sus posibles fuentes.
RESET

La siguiente tabla muestra las


diferentes condiciones de RESET
y sus consecuencias en el
contador de programa PC y en el
registro STATUS.

Existen 2 bits en el registro


STATUS, TO’ Y PD’ que pueden
ser usados en el software para
determinar la naturaleza del
RESET.

109
UNIDAD I
1.6 CARACTERÍSTICAS DE LA FUENTE DE ALIMENTACIÓN Y
CONSUMO DE POTENCIA DEL MICROCONTROLADOR.

TAREA:
Analizar los requerimientos de la fuente de alimentación y el consume de
potencia del uCC PIC16F877A

110
UNIDAD I
1.7 Ambiente integrado de desarrollo (IDE)
1.7.1 Ensamblador y compilador.

1.7.1.1 ENSAMBLADOR

• El único lenguaje que entienden los microcontroladores es el código


máquina formado por ceros y unos del sistema binario:

11111000111010

Se le denomina “Lenguaje Máquina”, lo forman las instrucciones que


procesa el microcontrolador.

• El Lenguaje Ensamblador expresa las instrucciones de una forma más


natural al hombre a la vez que muy cercana al microcontrolador, ya
que cada una de esas instrucciones se corresponde con otra en código
máquina.
111
UNIDAD I
1.7 Ambiente integrado de desarrollo (IDE)
1.7.1 Ensamblador y compilador.

1.7.1.1 ENSAMBLADOR

• El lenguaje ensamblador trabaja con nemónicos, que son grupos de


caracteres alfanuméricos que simbolizan las órdenes o tareas a
realizar.
addlw d´58

• La traducción de los nemónicos a código máquina entendible por el


microcontrolador la lleva a cabo un programa ensamblador.

• El programa escrito en lenguaje ensamblador se denomina código


fuente (*.asm). El programa ensamblador proporciona a partir de este
fichero el correspondiente código máquina, que suele tener la
extensión *.hex
112
UNIDAD I
1.7 Ambiente integrado de desarrollo (IDE)
1.7.1 Ensamblador y compilador.

1.7.1.1 ENSAMBLADOR

113
UNIDAD I
1.7 Ambiente integrado de desarrollo (IDE)
1.7.1 Ensamblador y compilador.
1.7.1.1 ENSAMBLADOR
Las instrucciones del PIC16F84 y del PIC16F877 pueden procesar datos u
operandos mediante 5 modos de direccionamiento:

• Direccionamiento Inmediato
El valor del dato inmediato lo contiene el mismo código de operación
que al ejecutar la instrucción, se carga en el registro W para su
procesamiento posterior. Ejemplo: iorlw b´10101010

• Direccionamiento Directo
La dirección de la memoria RAM se encuentra en el mismo código de
operación. Ejemplo: addwf valor1,W

• Direccionamiento de Bit
Procesa datos de un bit; la dirección del dato es un bit. Ejemplo: bcf
STATUS, RP0 114
UNIDAD I
1.7 Ambiente integrado de desarrollo (IDE)
1.7.1 Ensamblador y compilador.
1.7.1.1 ENSAMBLADOR
Las instrucciones del PIC16F84 y del PIC16F877 pueden procesar datos u
operandos mediante 5 modos de direccionamiento:
• Direccionamiento Indexado
Utilizado para el manejo de tablas mediante la instrucción addwf
PCL,F
• Direccionamiento Indirecto
La dirección del dato se encuentra contenida en el registro INDF.
Cada vez que se hace referencia a éste, se utiliza el contenido del
registro FSR para direccionar el operando (el registro FSR sirve como
puntero).
Ejemplo:
FSR = 24h, movwf INDF Carga el contenido de W en la posición 24h
de la memoria RAM.
movf INDF,W Carga en W el contenido de la posición 24h de la 115
memoria RAM
UNIDAD I
1.7 Ambiente integrado de desarrollo (IDE)
1.7.1 Ensamblador y compilador.
1.7.1.1 ENSAMBLADOR
ESTRUCTURA DE UN PROGRAMA

El código fuente está compuesto por una sucesión de líneas de texto y cada línea
puede estructurarse en hasta cuatro campos o columnas separados por uno o más
espacios o tabulaciones entre sí:

• Campo de etiquetas. Expresiones alfanuméricas escogidas por el usuario para


identificar una determinada línea. Todas las etiquetas tienen asignado el valor de
la posición de memoria en la que se encuentra el código al que acompañan.
• Campo de código. Corresponde al nemónico de una instrucción, de una directiva
o de una llamada a macro.
• Campo de operandos y datos. Contiene los operandos que precisa el nemónico
utilizado. Según el código, puede haber dos, uno o ningún operando.
• Campo de comentarios. Dentro de una línea, todo lo que se encuentre a
continuación de un punto y coma (;) será ignorado por el programa ensamblador
y considerado como comentario. 116
UNIDAD I
1.7 Ambiente integrado de desarrollo (IDE)
1.7.1 Ensamblador y compilador.
1.7.1.1 ENSAMBLADOR
ESTRUCTURA HORIZONTAL DE UN PROGRAMA

117
UNIDAD I
1.7 Ambiente integrado de desarrollo (IDE)
1.7.1 Ensamblador y compilador.
1.7.1.1 ENSAMBLADOR
ESTRUCTURA VERTICAL DE UN PROGRAMA

118
UNIDAD I
1.7 Ambiente integrado de desarrollo (IDE)
1.7.1 Ensamblador y compilador.
1.7.1.2 COMPILADOR
Mediante el ejercicio #1 de la unidad (practica #1) revisar el funcionamiento del
programa Ensamblador y el Compilador en el ambiente integrado de desarrollo (IDE)
MPLAB de Microchip.

119
UNIDAD I
1.7 Ambiente integrado de desarrollo (IDE)
1.7.2 Simulador, debugger y emulador

120
UNIDAD I
1.7 Ambiente integrado de desarrollo (IDE)
1.7.3 Equipos programadores (downloaders).

Tarea #2:

Investigar el funcionamiento de los programadores de PIC, MasterProg y PIC Kit 3.


Proceso de grabación de la memoria del PIC.

121
UNIDAD I
1.7 Ambiente integrado de desarrollo (IDE)
1.8 Herramientas de desarrollo.

122
UNIDAD I
1.7 Ambiente integrado de desarrollo (IDE)
1.8 Herramientas de desarrollo.
EVALUACIÓN

1. Desarrollar un algoritmo que tenga la siguiente aplicación:


“Se tiene tres bombas (A, B y C) que alimentan un tanque, el tanque a su vez
tiene una válvula de salida (V). Existen 3 sensores de nivel (X, Y y Z), cuando el
tanque está vacío los 3 sensores están a 0-lógico y es necesario activar el
trabajo de las tres bombas. Cuando se llena 1/3 del tanque el sensor X pasa a
1-lógico y la bomba C deja de funcionar; cuando se llenan 2/3 del tanque el
sensor Y esta activado y la bomba B deja de funcionar; cuando esta lleno el
tanque el sensor Z se activa y la bomba A deja de funcionar. Una vez que el
tanque esta lleno este empieza a expulsar el líquido acumulado. Cuando los 3
sensores pasan a 0-lógico la secuencia antes descrita se repite ANTES NO“.

2. Edita, compila y simula el programa.

3. Mediante el software del programador sube le programa a la memoria del


microcontrolador.
123

También podría gustarte