Вы находитесь на странице: 1из 87

INTERFASES Y

MICROCONTRLADORES

Dr. Alejandro Tonatiu Velázquez Sánchez


E. S. I. M. E. ZACATENCO
INGENIERIA EN CONTROL Y AUTOMATIZACIÓN
ARQUITECTURA INTERNA DEL
MICROCONTROLADOR Y MANEJO DE
REGISTROS
Estructura del Microcontrolador
Manejo de Registros
MPLAB
SIMULADOR
MICROPROCESADOR
 En la década de los 40’s y 50’s se construyeron
gigantescas computadoras por medio de relevadores y
tubos de vacio.
 Posteriormente se utilizaron los componentes
electrónicos y de estado solido (década de los 60’s)
 En 1969 Intel Corporation lanzo el primer
microprocesador, el 4004, microprocesador de 4 bits.
 Solo direccionaba 4096 localidades de 4 bits.
 Contenía un conjunto de 45 instrucciones.
 Se empleó en los primero juegos de video.
 Pequeños controaldores.
 En 1971 Intel produjo el 8008, microprocesador de 8bits
y 16k de direccionamiento.
MICROPROCESADOR
 1969 Intel 4004 No fue comercial
 1971 Intel 8008 Procesador de 8bits
 1973 Intel 8080 Microcomputadoras
 1974 Motorola 6800 Procesador motorola.
 1975 Zilog Z80 Sistema operativo.
 1976 Intel 8085 Lenguaje de micros
 1978 Motorola 6809 Micro más empleado.
MICROPROCESADOR
 Clasificación
 CISC (Complex Instructions Set Computer)
 RISC (Reduce Instructions Set Computer)

 CISC
 Gran número de instrucciones
 Control microprogramado (instrucciones en memoria)
 Menor velocidad.
 Menor consumo de espacio
 Pocos registros
 INTEL, Motorola, AMD, etc.
MICROPROCESADOR
 RISC
 Reducido número de instrucciones.
 Control alambrado. (instrucciones en hardware)
 Mayor velocidad.
 Mayor consumo de espacio.
 Muchos registros.
 Motorola, Apple, National
 MICROPROCESADOR
 Propósito General
 Los elementos auxiliares (memoria, puertos, reloj, etc.) son
externos al CPU
 Fabricación más costosa
 Arquitectura potente y flexible
MICROPROCESADOR (FAMILIAS)
 INTEL
 8 bits: 8008, 8080, 8085
 16bits: 8086, 8088, 80186, 80286
 32 bits: 80386, 80486
 64 bits: Pentium, Pentium Pro, Pentium MMX, Pentium II,
Pentium III, Pentium IV, Xeón, Itanium, Centrino
 ZILOG :
 Z80, Z8000
 MOTOROLA
 68XX (6800…. 6809)
 68XXX (68000)

 AMD: K6, K6 II, K6 III, Athlon


MICROPROCESADOR
 Es el dispositivo encargado de realizar cálculos
aritméticos y lógicos, temporizar y controlar las
operaciones de los demás elementos de un sistema.

 Unidad de control.
 Unidad Aritmético-lógica (ALU).
 Registros.
 Contador programa.
 Registros generales.
 Registro de estado.
 Stack.
MICROPROCESADOR (COMPONENTES)
 Posee tres bloques funcionales básicos:
 CPU.
 Memoria.
 Puertos.

Los tres se encuentran conectados mediante buses.


Los dispositivos de entrada y salida se conectan mediante
puertos.
 Un puerto es una interfaz física de una computadora a través
del la cual pasan los datos hacía y desde los periféricos.
 Los programas son un conjunto de instrucciones que
entiende la CPU y que se ejecutan para resolver un problema
específico.
 El programa se almacena en memoria.
MICROPROCESADOR (BUSSES)
 BUS DE DIRECCIONES
 Unidireccional ( Salida).
 Determina la capacidad de acceso de un procesador.

 BUS DE DATOS
 Bidireccional.
 Influye en la velocidad de acceso de un procesador.

 BUS DE CONTROL
 Señales de control del procesador.
- Ejemplos: Lectura ( Rd), Escritura ( Wr),
Memoria ( MEM), Puertos ( IOR)
UNIDAD CENTRAL DE PROCESAMIENTO
Unidad central de procesamiento (CPU)
Tiene la función de realizar las operaciones lógicas y
aritméticas para controlar la transferencia de información
entre los dispositivos.

 La CPU interpreta, y ejecuta secuencialmente las


instrucciones del programa
 Las instrucciones vienen acompañadas de datos o
direcciones.
 Las instrucciones son leídas por la CPU a través del bus de
datos cuando ésta las solicita.
 La CPU genera señales de control para coordinar las
transacciones.
UNIDAD CENTRAL DE PROCESAMIENTO
 El CPU cuenta con cuatro partes básicas:
 Registros.
 Unidad Aritmética Lógica.
 Circuito de temporización y control.
 Circuito de decodificación.

 Registros
 Son localizaciones físicas que sirven para almacenar
temporalmente datos, pueden ser de 8 o 16 bits.
 Acumulador (W)
 Registro de Instrucción (IR)
 Contador de programa (PC)
CPU REGISTROS
 Acumulador (W)
 Almacena temporalmente el resultado de las operaciones
aritméticas lógicas.
 Registro de Instrucciones (IR)
 Almacena la instrucción que esta ejecutando el CPU.
 Contador de Programa (PC)
 Contiene la dirección de la siguiente instrucción del programa.
 Registro de memoria (MAR)
 Contiene la dirección de memoria a la cual se tendrá acceso.
 Registro de operación (ROP)
 Contiene el código de la operación que ejecutara la unidad
aritmética lógica.
CPU-ALU
 La unidad aritmética lógica es una red combinacional
que se encarga de realizar operaciones entre 2 o más
operandos.

 Requiere dos palabras de datos y una de control que


especifica el tipo de operación.
 La ALU realiza la operación especificada y genera un
apalabra de salida que representa el resultado.
 El resultado se puede dirigir a cualquier registro en el CPU.
 La dirección del resultado lo determina el circuito de control.
 Las señales de estado se dirigen al registro de condición.
 Trabaja en conjunto con el registro del acumulador (W)
UNIDAD DE CONTROL Y TEMPORIZADOR.
 Es la encargada de generar las señales para realizar las
operaciones indicadas por el usuario.
 Estas señales de control incluyen el control de lectura,
escritura y direccionamiento de memoria a través del bus de
control.
 Otras señales de control se conectan a la ALU y los registros
del procesador para regular el flujo de información.

 Unidad de tiempo
 Se encarga de generar señales de sincronización de acuerdo
a una señal de reloj y es la responsable de la velocidad del
microprocesador.
UNIDAD DE DECODIFICACIÓN
 Tiene a cargo el proceso de trasladar un patrón binario
en una operación o secuencia de operaciones.
 Si se tiene el código 01101101 que representa un “ADD”, la
unidad de decodificación se encarga de generar las señales
necesarias a todas las partes que integran el
microprocesador para que esta instrucción se ejecute.

 Registro de códigos de condición.


 Almacena la información que describe la condición de
operaciones anteriores. Contiene 8 bits y cada uno
representa condiciones como:
 Acarreo, Desbordamiento, Cero, Medio acarreo entre otros.
UNIDAD DE DECODIFICACIÓN
 Las operaciones del microprocesador son sincronizadas
por un oscilador, ya que se requiere un cierto numero de
pulsos para ejecutar las operaciones que se especifican
en las instrucciones.
 Un ciclo de instrucción consiste de uno o más ciclos de
máquina.

 Durante un ciclo de máquina se realizan los siguientes


ciclos:
 Ciclo de búsqueda (fetch cycle)
 Ciclo de ejecución (execution cycle)
UNIDAD DE DECODIFICACIÓN
 Ciclo de búsqueda (fetch cycle)
 El μP proporciona la dirección de una instrucción en
memoria.
 La unidad de memoria decodifica la dirección y el contenido
de ésta se transfiere (se lee el contenido de la dirección)
 Ciclo de ejecución (execution cycle)
 La instrucción se decodifica y posteriormente se ejecuta.
UNIDAD DE DECODIFICACIÓN
 Durante un ciclo máquina se efectúan las siguientes
operaciones:
 El contenido del PC se coloca en el MAR.
 El contenido del MAR se transfiere a la memoria.
 La memoria decodifica la dirección enviada.
 Se lee la instrucción desde la memoria.
 La instrucción se coloca en el registro IR.
 La instrucción es decodificada.
 Ejecución de la instrucción.
 El PC se incrementa o desactiva de acuerdo a la instrucción
que se está ejecutando
UNIDAD DE DECODIFICACIÓN
 Durante un ciclo de instrucción se procesan dos tipos de
palabras:
 Palabras de instrucción
 Palabras de datos
UNIDAD DE DECODIFICACIÓN
 Todos los μP disponen de un conjunto básico de
instrucciones que se pueden agrupar según su
funcionalidad.
 Transferencia de datos.
 Aritmética.
 Manipulación de bits.
 Bucles y saltos.
 Cadenas de caracteres.
 Subrutinas e interrupciones.
 Control del procesador.
 A las instrucciones en código binario se denomina
lenguaje máquina.
UNIDAD DE DECODIFICACIÓN
 Con objeto de no escribir los programas en lenguaje
máquina se utilizan nemónicos que constituyen lo que
se conoce como lenguaje ensamblador.
 Los programas ensambladores se encargan de traducir los
nemónicos en código máquina.
 Incluyen pseudo-instrucciones necesarias para facilitar la
programación.
 Un compilador traduce las instrucciones de un lenguaje de
alto nivel a lenguaje de máquina.
ESTRUCTURA DEL MICROCONTROLADOR
 MICROCONTROLADOR
 Es un circuito integrado programable que contiene
elementos periféricos de comunicación.
 Un microcontrolador es un circuito de alta escala de
integración que incorpora la mayor parte de los elementos
que conforman un controlador.
 El microcontrolador es un dispositivo dedicado.

 En su memoria sólo reside un programa destinado a


gobernar una aplicación determinada, una vez
programado y configurado el microcontrolador
solamente sirve para gobernar dicha tarea.
MICROCONTROLADOR
MICROCONTROLADOR
Propósito Específico
Los elementos auxiliares son internos al CPU
(Microcomputer Single Chip)
Fabricación económica.
Arquitectura específica.
MICROCONTROLADOR
 Aplicaciones
 Periféricos y dispositivos auxiliares de computadoras.
 Electrodomésticos.
 Aparatos portátiles y de bolsillo (tarjetas, teléfonos, etc.)
 Máquinas expendedoras y juguetería.
 Instrumentación.
 Industria automotriz.
 Control industrial y robótica.
 Equipo médico.
 Sistema de navegación.
 Sistemas de seguridad y alarma.
 Domótica.
MICROCONTROLADOR
 Estructura Von Newman
MICROCONTROLADOR
 Estructura Harvard
FAMILIAS DE MICROCONTROLADORES
 INTEL
 MCS 48
 MCS 51
 MCS 96

 MOTOROLA
 68HC11( 8 bits)
 68 HC16 ( 16 bits)

 NATIONAL SEMICONDUCTOR
 COPx ( COP8 )
 MICROCHIP
 PIC ( PIC 12Cxx, 16Cxx, 17Cxx, 18Cxx)
 ATMEL: Procesadores AVR (AT90S8535, AT89C51)
MICROCONTROLADOR
 Fabricantes
MICROCONTROLADORES PIC DE MICROCHIP
 En la actualidad se emplean cada vez más debido a:
 Velocidad
 Precio
 Facilidad de uso
 Información y herramientas de apoyo.
 Gamas
 PIC12C5X
 Gama baja o clásica ( palabra de programa de 12 bits).
 PIC16CXXX
 Gama media (palabra de programa de 14 bits).
 PIC17CXXX, PIC18XXX
 Gama alta (palabra de programa de 16 bits).
MICROCONTROLADORES PIC DE MICROCHIP
 PIC. “Periphera Interface Controller”
 Los fabrica ARIZONA MICROCHIP TECHNOLOGY
 Fábrica principal: Chandler (Arizona). Otras en Tender
(Arizona), Taiwán y Tailandia.

 Características
 Arquitectura siguiendo el modelo Harvard
 Distinción entre Memoria de Programa y Memoria
de datos.
 Distinción entre bus de datos y bus de
instrucciones. Distinción entre palabra de datos y
palabra de instrucciones.
MICROCONTROLADORES PIC DE MICROCHIP
 Ejecución encauzada.
 Dos etapas de ejecución.
 Cada instrucción se ejecuta en un ciclo de reloj,

salvo los saltos que se resuelven en 2.

 Arquitectura del repertorio de instrucciones siguiendo el


modelo RISC
 Un único tamaño de instrucción (cada instrucción
ocupa una única palabra de instrucción)
 Banco de registros.

 Ortogonalidad del repertorio de instrucciones


FAMILIA PIC
 PIC’s
PIC
 16F870
CARACTERÍSTICAS GENERALES (PIC16F870)
 Consta de una ALU, decodificador de instrucciones, y
una matriz de registros.
 Incluye un módulo de memoria para programa y una
memoria auxiliar para datos del tipo EEPROM, por si falla la
alimentación.
 Arquitectura Harvard.
 Bus de datos de 8 bits, bus de instrucciones de 14 bits.
 Conjunto de instrucciones reducido, RISC (35 instrucciones).
 Las instrucciones se ejecutan en 1 ciclo, excepto los saltos.
 Dispone de 4 puertos de entrada y salida.
 Entradas multiplexadas para interrupciones y contador.
 Dispone de un watchdog.
CARACTERÍSTICAS GENERALES (PIC16F870)
 Tipo Flash integrada en el propio chip.
 Memoria de 2K x 14 (000h – 3FFh).
 En la posición 000h está el Vector de Reset.
 En la posición 04h está el Vector de Interrupción.
 Activación del pin INT
 Desbordamiento del
temporizador TMR0
 Cambio de estado en
pines RB4 - RB7.
 Velocidad máxima de
20MHz.
PIC16F870
 Organización de Memoria.
 4 bancos o páginas
de 128 registros de 8 bits.
 Página ‘0’ ⇒ 80 registros:
 12 especiales
 (SFR) y 68 generales (GPR).
 Página ‘1’ ⇒ 12 registros
de funciones específicas
(SFR).
 64 registros de 8 bits.
PIC16F870
 Bancos
PIC16F870 ORGANIZACIÓN DE MEMORIA
 La memoria interna de datos, también llamada archivo
de registros (register file), esta dividida en dos grupos:
 Los registros especiales
 Los registros de propósito generales.
 Los primeros ocupan las 11 posiciones primeras que van
desde la 00 a la 0B, y los segundos las posiciones que siguen,
o sea de la 08 a la 4F.

 Los registros especiales contienen la palabra de estado


(STATUS).
 Los registros de datos de los tres puertos de entrada salida
(Puerto A, Puerto B, Puerto C), los 8 bits menos
significativos del program counter (PC).
PIC16F870 ORGANIZACIÓN DE MEMORIA
 Contador del Real Time Clock/Counter (RTCC) y un registro
puntero llamado File Select Register (FSR).
 La posición 00 no contiene ningún registro en especial y es
utilizada en el mecanismo de direccionamiento indirecto.
 Los registros de propósito general se dividen en dos grupos:
 Registros de posición fija
 Bancos de registros.
 Los primeros ocupan las 8 posiciones que van de la 08 a la
0F.
 Los bancos de registros consisten en hasta cuatro
grupos o bancos de 16 registros cada uno, que se
encuentran superpuestos en las direcciones que van de
la 10 a la 1F.
PIC16F870 ORGANIZACIÓN DE MEMORIA
 Se puede operar con
 un solo banco a la

 vez, el cual se

 selecciona mediante

 los bits 5 y 6 del

 File Select Register

 (FSR).
CARACTERÍSTICAS GENERALES (PIC16F870)
 Tres bloques de memoria
 RAM: Dividida en dos bloques:
 GPR. Registros de propósito general

 SFR Registros de propósito especial

 EEPROM: Grabable dinámicamente desde programa.


 Sólo puede contener datos.

 Sólo permite acceso indirecto.

 FLASH: Memoria de programa


 Dado que el PC tiene un tamaño de 13 bits: máximo 8Kx14

 En PIC16F84: 1K disponible: 0000h..03FFh

 Direcciones por encima de 3FFh son tratadas módulo

400h (20h=420h=820h...)
CARACTERÍSTICAS (PIC16F870)
 Reset vector: 0000h
 (tras un reset, la primera instrucción a

 ejecutar es la que está en 0000h)

 Interrupt vector: 0004h


 (Una única entrada de interrupción. A

 continuación se ha de verificar cual de

 las líneas la ha generado)


CARACTERÍSTICAS (PIC16F870)
 Se organiza en bancos.
 En PIC16F8x: 2 bancos.

 Cada banco admite hasta 128 bytes.


 En PIC16F8x: 79 bytes.

 Selección del banco:


 Bit RP0 del registro STATUS
 RP0 = 0 -> Banco 0
 RP0 = 1 -> Banco 1
CARACTERÍSTICAS (PIC16F870)
 Registros:
 SFR
 Banco 0: RP0=0  0x00 -> 0x0B
 Banco 1: RP0=1  0x00 -> 0x0B

 GPR
 Banco 0: 0x0C -> 0x4F (68 bytes)
 Banco 1: Mapeado completamente en el banco 0

STATUS
OPTION
INTCON
STATUS
OPTION
INTCON
CARACTERÍSTICAS (PIC16F870)
 Se dispone de un total de 13 líneas.
 Cada una programable individualmente como entrada o
como salida
 Se distribuyen en 4 puertos:
 PORT A, PORT B, PORTC Y PORTD
 Se accede a cada puerto leyendo o escribiendo en su
registro (5h y 6h en RAM)
 Para configurar cada línea como entrada o salida se
modifica su bit correspondiente en el registro TRIS del
puerto asociado: TRIS A, TRIS B, TRISC, TRISD (85h y
86h en RAM)
 ‘1’ línea configurada como entrada
 ‘0’ línea configurada como salida
PUERTOS PIC16F870
 PUERTO RA0-RA4
 Puerto bidireccional de Entrada/Salida.
 RA4/T0CKL puede comportarse como una Entrada/Salida
normal, o bien como una entrada de reloj del
contador/temporizador TMR0.

 PUERTO RB0-RB7
 Puerto bidireccional de Entrada/Salida.
 RB0/INT puede ser utilizado como una entrada de
interrupciones.
 RB4/RB7 pueden ser utilizados para generar interrupciones
ante un cambio de nivel.
 RB6/RB7 pueden ser utilizados para programa el PIC.
OSCILADOR PIC16F870
 Mediante los condensadores y el oscilador se puede
seleccionar la frecuencia del reloj: 455KHz, 2 MHz, 4MHz,
8MHz y 10 MHz.
 Ciclo de instrucción = 4 · Periodo de reloj
 Ejemplo:
 Frecuencia de reloj = 4MHz ⇒ Periodo de reloj = 250ns.
 Ciclo de instrucción = 1/Fosc x 4 = 250 ns x 4 = 1 μs.

 Temporizador/Contador
 Consiste en un contador cíclico de 00h a FFh. Cuando se
llega a FF se produce un desbordamiento. Dos modos de
trabajo:
TEMPORIZADOR/CONTADOR PIC16F870
 Temporizador: determinar intervalos concretos de tiempo.
Se incrementa con cada ciclo de instrucción o divisor.
 Contador: contar impulsos producidos en el exterior del
sistema.
CONJUNTO DE INSTRUCCIONES.
 El conjunto de instrucciones de los microprocesadores
 PIC consiste en un pequeño conjunto de 32 a 35
instrucciones de 12 bits, que pueden ser agrupadas para
su estudio en tres o cinco grupos.
 Instrucciones que operan con bytes y que involucran algún
registro de la memoria interna.
 Instrucciones que operan solo sobre el registro W y que
permiten cargarle una constante implícita.
 Instrucciones que operan sobre bits individuales de los
registros de la memoria interna.
 Instrucciones de control de flujo del programa.
 Instrucciones especiales, cuyas funciones o tipos de
operandos son muy específicos.
INSTRUCCIONES DE BYTE
 Estas instrucciones pueden ser de simple o doble
operando.
 El primer operando es el registro seleccionado.
 El segundo, en caso de existir, será el registro W.

 El destino donde se guardara el resultado, será el


registro seleccionado o el W.
 Las instrucciones siguientes son las tres operaciones
lógicas de doble operando :
 ANDWF f,d ;operación AND lógica, destino = W f
 IORWF f,d ;operación OR lógica, destino = W f
 XORWF f,d ;operación XOR lógica, destino = W f
INSTRUCCIONES DE BYTE
 Las que siguen son las cuatro operaciones aritméticas y
lógicas sencillas de simple operando :
 MOVF f,d ;movimiento de datos, destino = f
 COMF f,d ;complemento lógico, destino = f
 INCF f,d ;incremento aritmético, destino = f + 1
 DECF f,d ;decremento aritmético, destino = f – 1
 Instrucciones de rotación de bits a través del CARRY :
 RLF f,d ;rotación a la izquierda, destino = f ROT
 RRF f,d ;rotación a la derecha, destino = f ROT
 En estas operaciones (Rotate Left File y Rotate Right
File) los bits son desplazados de cada posición a la
siguiente, en sentido derecho o izquierdo.
INSTRUCCIONES DE BYTE
 El desplazamiento es cerrado, formando un anillo, con
el bit C (CARRY) de la palabra de estado.
 En estas dos instrucciones, el único bit afectado de la
palabra de estado del procesador es el bit C, que tomará
el valor que tenia el bit 7 o el bit 0, según sea el sentido
del desplazamiento.
 Estas instrucciones son muy útiles para la manipulación
de bits, y además para realizar operaciones aritméticas,
ya que en numeración binaria, desplazar un número a la
 izquierda es equivalente a multiplicarlo por 2, y hacia la
derecha, a dividirlo por 2.
INSTRUCCIONES DE BYTE
 La instrucción que realizan el intercambio de posiciones
entre los cuatro bits menos significativos y los cuatro
más significativos (nibble bajo y nibble alto).
 SWAPF f,d ;intercambia nibbles,destino = SWAP f
 Las dos operaciones que siguen son la suma y la resta
aritméticas :
 ADDWF f,d ;suma aritmética, destino = f + W
 SUBWF f,d ;resta aritmética, destino = f - W
 Estas operaciones (ADD W a F y SUBstract W de F)
afectan a los tres bits de estado C, DC y Z.
 El bit Z se pone en 1 si el resultado de la operación es
00000000, y se pone en 0 si el resultado tiene cualquier otro
valor.
INSTRUCCIONES DE BYTE
 Las instrucciones que siguen son de simple operando,
pero son casos especiales ya que el destino es siempre
el registro seleccionado :

 CLRF f ;borrado de contenido, f = 0


 MOVWF f ;copia contenido W f, f = W

 La instrucción CLRF (CLeaR File) afecta solo al bit Z que


resulta siempre 0.
 La instrucción MOVWF (MOVe W a F) no afecta ningún
bit de la palabra de estado.
INSTRUCCIONES DE BYTE
 Operaciones lógicas tradicionales, similares a las que ya
vimos anteriormente, pero realizadas entre una
constante de programa y el registro W :
 IORLW k ; operación OR lógica, W = W k
 ANDLW k ; operación AND lógica, W = W k
 XORLW k ; operación XOR lógica, W = W k

 La instrucción que sigue sirve para cargar una constante


de programa en el registro W :
 MOVLW k ;carga constante en W, W = K
 Esta instrucción no afecta ninguno de los bits de estado
del procesador.
INSTRUCCIONES DE BYTE
 La instrucción que sigue (CLeaR W).
 CLRW ;borra el contenido de W, W = 0
 Al igual que en la instrucción CLRF, el único bit de
estado afectado es el Z que resulta 1.
 Instrucciones que operan solamente sobre el bit
especificado, el resto de los bits del registro no son
alterados.
 BCF f,b ;borra el bit b de f ; bit f(b) = 0
 BSF f,b ;coloca en uno el bit b de f ; bit f(b) = 1
 Estas instrucciones (Bit Clear File y Bit Set File) no
afectan ningún bit de la palabra de estado del
procesador.
INSTRUCCIONES DE BIT
 Instrucciones de Control
 GOTO k ;salto a la posición k (9 bits) del programa
 Esta instrucción simplemente carga la constante k en el
 registro PC (contador de programa).
 CALL k ;salto a la subrutina en la posición k (8 bits)
 Su comportamiento es muy similar al de la instrucción
GOTO, salvo que además de saltar guarda en el stack la
dirección de retorno de la subrutina (para la instrucción
RETLW).
 Esto lo hace simplemente guardando en el stack una
copia del PC incrementado, antes de que el mismo sea
cargado con la nueva dirección k.
INSTRUCCIONES DE BIT
 RETLW k ;retorno de subrutina con constante k, W = k
 Esta instrucción produce el retorno de subrutina con
una constante literal k en el registro W.

 BTFSC f,b ;salteo si bit = 0, bit = f(0) saltea


 BTFSS f,b ;salteo si bit = 1, bit = f(1) saltea

 BTFSC salta a la próxima instrucción si el bit b del


registro f es cero.
 La instrucción BTFSS salta si el bit es 1.

 Estas instrucciones pueden usarse para realizar o no una


acción según sea el estado de un bit, o en combinación
con GOTO, para realizar una bifurcación condicional.
INSTRUCCIONES DE BIT
 DECFSZ f,d ; decrementa y salta sí 0, destino= f - 1
 INCFSZ f,d ; incrementa y saltea sí 0, destino= f + 1
 Estas dos instrucciones se comportan de manera similar a
DECF e INCF, salvo que no afectan a ningún bit de la palabra
de estado.
 Estas instrucciones se utilizan generalmente en
combinación con una instrucción de salto (GOTO), para
el diseño de ciclos o lazos (loops) de instrucciones que
deben repetirse una cantidad determinada de veces.
 NOP ;no hace nada, consume tiempo
 Esta instrucción solo sirve para introducir una demora
en el programa, equivalente al tiempo de ejecución de
una instrucción.
PIC16F870
 Mnemonic
MODOS DE DIRECCIONAMIENTO
 Tres modos de direccionamiento
Inmediato
 El operando (8 bits) se encuentra de forma inmediata
(literal) en la propia instrucción.

Directo
 La dirección del dato aparece de forma explícita en la propia
instrucción.

 En este modo, hay que mantener controlado el bit RP0.


MODOS DE DIRECCIONAMIENTO
 Observar que en la dirección especificada en el código sólo
aparecen los 7 bits menos significativos.(d es una indicación
de dónde se almacena el resultado).

Indirecto

 El registro FSR (4/84) ha de contener la dirección de


memoria a la que se desea tener acceso.
 El registro INDF (se trata de un registro ficticio) se volverá
virtualmente aquella localización.
 Sobre INDF se pueden realizar lecturas y escrituras que
afectarán directamente a la localización de memoria RAM
señalada por FSR.
MODOS DE DIRECCIONAMIENTO
movlw 0x20 ; inicializa puntero a RAM
movwf FSR ;
next: clrf INDF ; borra dirección dada por el
contenido de FSR
incf FSR ; incrementa puntero
btfss FSR,4 ; bit test f ,skip if set -> Fin?
goto next
continue:

Observar que en este modo en FSR se especifican


los 8 bits de la dirección, donde el bit 7 está
indicando el banco de memoria.
EJEMPLOS
 Suma que se realiza en aritmética binaria pura sin signo
EJEMPLOS
EJEMPLOS DE PROGRAMACIÓN
 Suma el contenido de
dos posiciones.
EJEMPLOS
 Lee y saca datos por puerto
EJEMPLOS DE PROGRAMACIÓN
 Leer y sacar datos por puerto
EJEMPLOS
 Datos por Puerto.
 Condicional.
EJEMPLOS DE PROGRAMACIÓN
ESTRUCTURA PROGRAMA MPLAB
 Partes del Programa
MPLAB
 EL MPLAB es un “Entorno de Desarrollo Integrado “
(Integrated Development Environment, IDE) que corre
en “Windows “, mediante el cual Usted puede
desarrollar aplicaciones para los microcontroladores de
las familias PIC 16/17.

 EL MPLAB escribir, depurar y optimizar los programas


(firmware) con PIC 16/17.
 EL MPLAB incluye un editor de texto, un simulador y un
organizador de proyectos.
 MPLAB soporta el emulador PICMASTER y a otras
herramientas de desarrollo de Microchip como el PICSTART
– Plus.
MPLAB
 Características
 Depurar programas fuente.
 Detectar errores automáticamente en programas fuente.
 Depurar los programas utilizando puntos de corte.
 Breakpoints mediante valores de los registros internos.
 Observar el flujo del programa con el simulador MPLAB –
SIM., ó seguirlo en tiempo real utilizando el emulador
PICMASTER.
 Realizar medidas de tiempo utilizando un cronómetro.
 Monitoreo de variables.
MPLAB
 Herramientas
 Organizador de Proyectos (Proyect Manager).
 Con el Organizador de Proyectos (Proyect manager) se
pueden utilizar las siguientes operaciones:
 Crear un proyecto.
 Agregar un archivo de programa fuente de proyecto.
 Ensamblar o compilar programas fuente.
 Editar programas fuente.
 Reconstruir todos los archivos fuente, o compilar un solo
archivo.
 Depurar el programa fuente.
MPLAB
 Software ensamblador
 Entorno DOS llamado MPASM.EXE
 Entorno Windows llamado MPASMWIN.EXE

 Las dos presentaciones soportan a TODOS los


microcontroladores de la familia PIC de Microchip.

 El conjunto de instrucciones de los microcontroladores


PIC es en esencia la base del lenguaje ensamblador
soportado por este software.
MPLAB
 Directivas
 Instrucciones para el compilador.
 #DEFINE
 ej. #define <nombre> [<valor a remplazar>]
 Declara una cadena de texto como substituto de otra
 END
 ej. End
 Indica fin de programa
 EQU
 ej. status equ 05
 Define una constante de ensamble
 INCLUDE
 ej. include <PIC16F84.h>
 Incluye en el programa un archivo con código fuente
MPLAB
 ORG
 ej. org 0x100
 Ensambla a partir de la dirección especificada

 Una vez instalado adecuadamente el MPLAB, para


realizar la simulación de un programa deben seguirse
los siguientes pasos:
 Crear el archivo fuente correspondiente (menú File...New
Source).
 Salvar el archivo (con extensión .ASM) una vez terminada su
edición (menú FILE...Save).
 Debe crearse un nuevo proyecto (menú Project...New
Project).
MPLAB
 Cuando aparezca la ventana de New Project editar las cajas
de texto:
 Project path and Name y Development Mode, hacer click en
<OK>.
 En la ventana Edit Project, hacer click en la sección Non-
project files sobre el nombre del archivo fuente.
 Haga click en el botón add y luego de que éste aparezca en
la sección Project Files haga click sobre el botón <OK>.
 Salvar el proyecto (en el menú Project...Save project).
 Realizar la "construcción de todo el proyecto" (menú
Project...Build All).
 En esta etapa se realiza en forma automática el ensamble
del programa fuente y el vaciado de éste en memoria de
simulación.
MPLAB
 El proceso de ensamble generará un archivo de errores en
caso de que estos existan, sí es así deben corregirse
directamente sobre el archivo fuente, salvar las correcciones
y reconstruir el proyecto (menú Project...Build All). <<<En
esta etapa del proceso ya se tiene el entorno listo para la
simulación>>>.
APLICACIONES
 Operaciones Entrada / Salida
 Verificar el modo en el que se debe programar el sentido de
los puertos.
 Realizar la entradas por puerto mediante la lectura de
interruptores "dip-switch“.
 Escribir sobre un puerto de salida visualizando sobre LEDs
APLICAIONES
 Visualización 7 segmentos
 Realiza la decodificación de BCD a 7 segmentos por
software.
 Multiplexa en el tiempo la información para 2 dígitos 7
segmentos.
APLICACIONES
 Conversión A/D
 Realiza la observación práctica de la utilización del
convertidor A/D en un PIC16f870.
 Configura uno
de los canales
de entrada
al convertidor
A/D (canal 0).
APLICACIONES
 Exploración de teclado

Вам также может понравиться