Microcontroladores II - PIC16F877A - Assembler PDF

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 24

MICROCONTROLADORES II

PIC16F877A
Microchip Technology Inc.

Microchip Technology Inc es una empresa fabricante de microcontroladores,


memorias y semiconductores analógicos, situada en Chandler,
Arizona, Estados Unidos.
Inicialmente llamada, General Instruments creó una subdivisión para fabricar
dispositivos microelectrónicos. Más tarde esta subdivisión fue vendida
a Venture Capital Investors que decidió crear una nueva empresa
llamada Arizona Microchip Technology.
Microchip Technology Inc.

Los productos que fabricaba eran los microcontroladores PIC y de las memorias EEPROM y EPROM. Hoy es uno de los
líderes del mercado de microcontroladores. Algunos de sus productos son:

➢ Microchip PICSTART Plus programmer.


➢ Microcontroladores PIC.
Serie 12 (gama básica)
Serie 16 (gama media)
PIC16F84 (PIC ampliamente utilizado en educación)
PIC16F87X
PIC16F88
Serie 18 (gama alta)
PIC24H
PIC32 (MCUS de 32 bits)
dsPIC30F y dsPIC33F.
Microchip Technology Inc.

➢ Productos analógicos.
➢ Memorias.
➢ Productos de radio-frecuencia.

Adicionalmente Microchip Technology Inc. tiene herramientas de desarrollo


que facilitan la programación de sus diversos dispositivos.
Desde el año 2016, con la compra de Atmel, ha asumido la comercialización
de los productos de esta empresa.
PIC16F87X

Los PIC16F87X forman una subfamilia


de microcontroladores PIC (Peripheral Interface
Controller) de gama media de 8 bits,
fabricados por Microchip Technology Inc.
Cuentan con memoria de programa de tipo
EEPROM Flash mejorada, lo que permite
programarlos fácilmente usando un dispositivo
programador de PIC. Esta característica facilita
sustancialmente el diseño de proyectos,
minimizando el tiempo empleado en
programar los microcontroladores (µC).
Características principales

 CPU de arquitectura RISC (Reduced Instruction Set Computer).1


 Set de 35 instrucciones.
 Frecuencia de reloj de hasta 20MHz (ciclo de instrucción de 200ns).
 Todas las instrucciones se ejecutan en un único ciclo de instrucción, excepto las de salto.
 Hasta 8K x 14 palabras de Memoria de Programa FLASH (ver tabla a continuación).
 Hasta 368 x 8 bytes de Memoria de Datos tipo RAM (ver tabla a continuación).
 Hasta 256 x 8 bytes de Memoria de Datos tipo EEPROM (ver tabla a continuación).
 Hasta 15 fuentes de Interrupción posibles.
 8 niveles de profundidad en la PilA hardware.
Características principales

 Modo de bajo consumo (Sleep).


 Tipo de oscilador seleccionable (RC, HS, XT, LP y externo).
 Rango de voltaje de operación desde 2,0V a 5,5V.3
 Conversor Analógico/Digital de 10 bits multicanal.1
 3 Temporizadores.
 Watchdog Timer o Perro Guardián.
 2 módulos de captura/comparación/PWM.
 Comunicaciones por interfaz USART (Universal Synchronous Asynchronous Receiver
Transmitter).1
 Puerto Paralelo Esclavo de 8 bits (PSP).
 Puerto Serie Síncrono (SSP) con SPI e I²C.
Características principales
Características principales
Selección de Banco mediante STATUS
Lenguaje Ensamblador - Assembler

El lenguaje ensamblador o assembler (en


inglés: assembly language y la abreviación asm) es
un lenguaje de programación de bajo nivel. Consiste
en un conjunto de mnemónicos que representan
instrucciones básicas para los computadores, y
microcontroladores.
Implementa una representación simbólica de
los códigos de máquina binarios y otras constantes
necesarias para programar una arquitectura de
procesador y constituye la representación más
directa del código máquina específico para cada
arquitectura legible por un programador.
Lenguaje Ensamblador - Assembler

Cada arquitectura de procesador tiene su propio lenguaje ensamblador que


usualmente es definida por el fabricante de hardware, y está basada en
los mnemónicos que simbolizan las instruccionesque derivarán a procedimientos,
los registros del procesador, las posiciones de memoria y otras características del
lenguaje.
Fue usado principalmente en los inicios del desarrollo de software, cuando aún no
se contaba con potentes lenguajes de alto nivel y los recursos eran limitados.
Actualmente se utiliza con frecuencia en ambientes académicos y de
investigación, especialmente cuando se requiere la manipulación directa
de hardware, alto rendimiento, o un uso de recursos controlado y reducido.
También es utilizado en el desarrollo de controladores de dispositivo (en
inglés, device drivers) y en el desarrollo de sistemas operativos, debido a la
necesidad del acceso directo a las instrucciones de la máquina. Muchos
dispositivos programables (como los microcontroladores) aún cuentan con el
ensamblador como la única manera de ser manipulados.
Características

 El código escrito en lenguaje ensamblador posee una cierta dificultad de ser entendido
ya que su estructura se acerca al lenguaje máquina, es decir, es un lenguaje de bajo
nivel.
 El lenguaje ensamblador es difícilmente portable, es decir, al cambiar a una máquina
con arquitectura diferente, generalmente es necesario reescribirlo completamente.
 Los programas hechos por un programador experto en lenguaje ensamblador son
generalmente mucho más rápidos y consumen menos recursos del sistema (memoria
RAM y ROM) que el programa equivalente compilado desde un lenguaje de alto nivel. Al
programar cuidadosamente en lenguaje ensamblador se pueden crear programas que
se ejecutan más rápidamente y ocupan menos espacio que con lenguajes de alto nivel.
 Con el lenguaje ensamblador se tiene un control muy preciso de las tareas realizadas
por un microprocesador por lo que se pueden crear segmentos de código difíciles y/o
muy ineficientes de programar en un lenguaje de alto nivel, ya que, entre otras cosas, en
el lenguaje ensamblador se dispone de instrucciones del CPU que generalmente no
están disponibles en los lenguajes de alto nivel.
Código Máquina

El código máquina, o lenguaje de máquina, está formado por instrucciones sencillas, que -dependiendo de la estructura del procesador-
pueden especificar:
 Registros específicos para operaciones aritméticas, direccionamiento o control de funciones.
 Posiciones de memoria específicas (offset).
 Modos de direccionamiento usados para interpretar operandos.

Las operaciones más complejas se realizan combinando estas instrucciones sencillas, que pueden ser ejecutadas secuencialmente o
mediante instrucciones de control de flujo. Casi todas las instrucciones utilizan 2 operandos específicos para realizar su función. Las
operaciones disponibles en la mayoría de los conjuntos de instrucciones incluyen:

 Mover: Llenar un registro con un valor constante (Ej.: mov al, `20`). o mover datos de una posición de memoria a un registro o
viceversa (Ej.: mov al, [si]) o escribir y leer datos de dispositivos (Ej.: lea dx, offset cadena)

 Computar: Sumar, restar, multiplicar o dividir los valores de dos registros, colocando el resultado en uno de ellos o en otro registro (Ej.:
sum, mul, div, entres otras instrucciones). o realizar operaciones binarias, incluyendo operaciones lógicas (AND/OR/XOR/NOT) o
comparar valores entre registros (mayor, menor, igual) (Ej.: cmp)
 Afectar el flujo del programa: Saltar a otra posición en el programa y ejecutar instrucciones allí(Ej.: jmp) o saltar si se cumplen ciertas
condiciones (IF) (Ej.: jnb, jnz, jb, jz, jne, je, entre otros) o saltar a otra posición, pero guardar el punto de salida para retornar (Ej.: CALL,
llamada a subrutinas) Algunas computadoras incluyen instrucciones complejas dentro de sus capacidades. Una sola instrucción
compleja hace lo mismo que en otras computadoras puede requerir una larga serie de instrucciones, por ejemplo: salvar varios
registros en la Pila de una sola vez, mover grandes bloques de memoria
Lenguaje

Un programa escrito en lenguaje ensamblador consiste en una serie de Instrucciones que corresponden al flujo de órdenes ejecutables que
pueden ser cargadas en la Memoria de un sistema basado en Microprocesador:
 Binario: 10110000 01100001 (Hexadecimal: 0xb061)
La representación equivalente en lenguaje ensamblador es más fácil de recordar:
 MOV al, 061h
Esta instrucción significa:
 Asigna el valor Hexadecimal 61 (97 Decimal) al registro "al".
El mnemónico "mov" es un código de operación u "opcode", elegido por los diseñadores de la colección de instrucciones para abreviar
"move" (mover, pero en el sentido de copiar valores de un sitio a otro). El opcode es seguido por una lista de argumentos o parámetros,
completando una instrucción de ensamblador típica. A diferencia de los lenguajes de alto nivel, aquí hay usualmente una correspondencia
1 a 1 entre las instrucciones simples del ensamblador y el lenguaje de máquina. Sin embargo, en algunos casos, un ensamblador puede
proveer "pseudo instrucciones" que se expanden en un código de máquina más extenso a fin de proveer la funcionalidad necesaria. Por
ejemplo, para un código máquina condicional como "si X mayor o igual que", un ensamblador puede utilizar una pseudo instrucción al
grupo "haga si menor que", y "si = 0" sobre el resultado de la condición anterior
Los microprocesadores difieren en el tipo y número de operaciones que soportan; también pueden tener diferente cantidad de registros, y
distinta representación de los tipos de datos en memoria. Aunque la mayoría de los microprocesadores son capaces de cumplir
esencialmente las mismas funciones, la forma en que lo hacen difiere y los respectivos lenguajes ensamblador reflejan tal diferencia.
Pueden existir múltiples conjuntos de mnemónicos o Sintaxis de lenguaje ensamblador para un mismo conjunto de instrucciones,
instanciados típicamente en diferentes programas en ensamblador. En estos casos, la alternativa más popular es la provista por los fabricantes, y
usada en los manuales del programa.
IDE

IDE de Programación: Un IDE Un entorno de desarrollo


integrado o entorno de desarrollo interactivo, en
inglés Integrated Development Environment (IDE), es
un entorno de programación que ha sido
empaquetado como un programa de aplicación, o
sea, consiste en un editor de código, un compilador,
un depurador y un constructor de interfaz gráfica. Los
IDEs pueden ser aplicaciones por sí solas o pueden
ser parte de aplicaciones existentes. El lenguaje
Visual Basic, por ejemplo, puede ser usado dentro de
las aplicaciones de Microsoft Office, lo que hace
posible escribir sentencias Visual Basic en forma de
macros para Microsoft Word.

También podría gustarte