Fundamentos de Los Microcontroladores

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

Instituto Politécnico Nacional.

Unidad Profesional Interdisciplinaria de


Ingeniería y Ciencias Sociales y
Administrativas “UPIICSA”.

Organización de las Computadoras

“Fundamentos de microcontroladores”

Secuencia: 1CV10

Alumno:
Pérez González Fernando

Profesor:
José Romero Méndez
INDICE.
I. Definición de microcontrolador………………………………………………………………..1
I.1. Arquitectura interna del microcontrolador…………………………….………...1
I.2. Diferencia entre microprocesador y microcontrolador. …………..……………2
I.3. Fabricantes de microcontroladores.……………………………………..………4
II. El microcontrolador PIC 16F716…………………………………………………...…………7
II.1. Arquitectura interna.………………………………………………….……………7
II.2. Puertos de Entrada/Salida.……………………………………….………………8
III. Organización de la Memoria del Microcontrolador PIC 16F716.……………….…………8
III.1. Memoria de programa.………………………………………………...….………9
III.2. Memoria de Datos……………………………………….………...………………9
IV. Registros del Microcontrolador PIC 16F716…………………………………………………9
IV.1. El Contador de Programa.………………………………………...…...…………9
IV.2. Registros del SFR………………………………………...………………….……9
IV.3. Registros relacionados con los Puertos…………………….…………………10
IV.4. Registro PCL………………………………………………………..……………11
IV.5. Registro de trabajo W……………………………………………………………11
IV.6. Registro de Estado o de STATUS……………………..….……………………11
V. Repertorio de instrucciones del Microcontrolador PIC 16F716………………..…………12
V.1. Instrucciones de Carga…………………………………………….……………12
V.2. Instrucciones de Bit………………………………………………………………14
V.3. Configuración de Puertos…………………………………….…………………14
V.4. Instrucciones de Suma…………………………………………….….…………15
V.5. Instrucciones para incrementar y decrementar.………………………………15
V.6. Instrucciones Lógicas……………………………………………………………16
V.7. Instrucciones de Salto……………………………………...……………………17
VI. Lenguaje Ensamblador…………………........................................................................18
VI.1. Etiquetas……………………………………………………………….…………18
VI.2. Código de Operación………….……………..………………….………………19
VI.3. Operandos……………………………….…………………………….…………19
VI.4. Comentarios…………………………………………………………………...…20
VI.5. Normas de estilo para escribir un archivo fuente………………….…….……20
VII. Conclusiones……………………………………………………………..............................21
VIII. Bibliografía………………………………………………………………………………….....21
1

I
Un microcontrolador es un circuito integrado que en su interior contiene una
unidad central de procesamiento (CPU), unidades de memoria (RAM y ROM), puertos de
entrada y salida y periféricos. Estas partes están interconectadas dentro del
microcontrolador, y en conjunto forman lo que se le conoce como microcomputadora. Se
puede decir con toda propiedad que un microcontrolador es una microcomputadora
completa encapsulada en un circuito integrado.
Toda microcomputadora requiere de un programa para que realice una función específica.
Este se almacena normalmente en la memoria ROM. No está de más mencionar que sin
un programa, los microcontroladores carecen de utilidad.
I.I
Para la arquitectura interna del microcontrolador nos encontramos con dos
estructuras que nos guían en la composición esquemática sobre la disposición de sus
diferentes elementos.
De esta forma nos encontramos con la arquitectura tradicional, el modelo de Von
Neumann:
En esta arquitectura de computadoras y microcontroladores la unidad central de
procesamiento, o CPU, está
conectada a una memoria única
donde se almacenan las
instrucciones de programa y los
datos. El tamaño de la unidad de
datos o instrucciones está
determinado por el ancho del
bus de la memoria.
Encontramos pues que las dos
principales limitaciones de esta
arquitectura tradicional son:
 Que la longitud de las instrucciones está limitada por la unidad de longitud de los
datos, por lo tanto el microprocesador debe hacer varios accesos a memoria para
buscar instrucciones complejas.
 La velocidad de operación (o ancho de banda de operación) está limitada por el
efecto de cuello de botella que significa un bus único para datos e instrucciones
que impide superponer ambos tiempos de acceso.
La arquitectura von Neumann permite el diseño de programas con código automodificable,
una práctica bastante usada en las antiguas computadoras que solo tenían acumulador y
pocos modos de direccionamiento, no obstante innecesaria, en las computadoras
modernas.
Por otra parte, encontramos también la arquitectura conocida como Harvard, que
consiste en un esquema en el que el CPU se encuentra conectado a dos memorias por
medio de dos buses separados. Una de estas memorias contiene únicamente las
instrucciones del programa, y es llamada Memoria de Programa. La siguiente memoria
sólo almacena los datos con los cuales se van a trabajar y es conocida como Memoria de
Datos. Ambos buses son totalmente independientes incluso llegando a ser de distintos
anchos.
2

Para un procesador de set de instrucciones reducido o RISC, el set de instrucciones y


el bus de la memoria de programa pueden diseñarse de manera tal que todas las
instrucciones tengan una sola posición de memoria de programa de longitud. Además,
como los buses son independientes, el CPU puede estar accediendo a los datos para
completar la ejecución de una instrucción, y al mismo tiempo estar leyendo la próxima
instrucción a ejecutar. Sus ventajas a señalar resultan evidentes:
 El tamaño de las instrucciones no está relacionado con el de los datos, y por lo
tanto puede ser optimizado para que cualquier instrucción ocupe una sola posición
de memoria de programa, logrando así mayor velocidad y menor longitud de
programa.
 El tiempo de acceso a las instrucciones puede superponerse con el de los datos,
logrando una mayor velocidad de operación.
Una pequeña desventaja de los procesadores con arquitectura Harvard, es que deben
poseer instrucciones especiales para acceder a tablas de valores constantes que pueda
ser necesario incluir en los programas, ya que estas tablas se encontraran físicamente en
la memoria de programa (por ejemplo en la EPROM de un microprocesador).

I.II
Actualmente el mundo se halla diversificado y en abundancia de soluciones
tecnológicas para el procesamiento de datos, la ejecución de tareas y en general para el
tratamiento inteligente de la información. Podemos mencionar específicamente al
microprocesador y a los microcontroladores como herramientas actuales y recurrentes
en los innumerables sistemas digitales que se encargan de realizar diversas tareas
previamente programadas en ellos. Así surge la necesidad de explicar detenidamente la
diferencia entre un microprocesador y un microcontrolador.

El uso de una u otra tecnología depende del fin que se espera, pues debido a sus
características propias, los microcontroladores y los microprocesadores pueden adquirir
variados y diferentes espacios de implementación, por ejemplo, los microprocesadores se
han desarrollado fundamentalmente orientados al mercado de las computadoras
personales y las estaciones de trabajo (Workstation), pues allí se requiere una elevada
potencia de cálculo, el manejo de gran cantidad de memoria y una gran velocidad de
procesamiento. Mientras que los microcontroladores están concebidos principalmente para
ser utilizados en aplicaciones puntuales, es decir, aplicaciones donde el microcontrolador
debe realizar un pequeño número de tareas, al menor costo posible. En estas
3

aplicaciones el microcontrolador ejecuta un programa almacenado permanentemente en su


memoria, el cual trabaja con algunos datos almacenados temporalmente e interactúa con
el exterior a través de las líneas de entrada y salida de que dispone.

En cualquier proyecto la opción es usar ambos, cada uno en la tarea que mejor hace. Por
ejemplo, la recolección de datos, supervisión del entorno, envío de alarmas, accionar
motores, etc. lo puede realizar a la perfección un microcontrolador, para el tratamiento de
los datos recogidos, la interfaz gráfica de usuario, envío de correos, etc. lo dejaremos para
un microprocesador con sus debidos aditamentos en forma de una PC.
Existen una serie de diferencias entre el microprocesador y el microcontrolador,
características al usarlos en la implementación de sistemas digitales programables:

Microprocesadores Microcontroladores

El microprocesador tiene mucha más

potencia de cálculo, por lo cual

solamente realiza sus funciones con Es una de sus partes principales, la

lo que tiene (datos) y su algoritmo o cual se encarga de dirigir sus

CPU programa establecida. operaciones.

Son dispositivos externos que lo

Memorias complementan para su óptimo Las incluye en un solo circuito

RAM y ROM funcionamiento. integrado.

Velocidad de Lenta en comparación con la de un

Operación Rápida microprocesador

La configuración mínima básica de El Microcontrolador incluye todo estos

un Microprocesador está constituida elementos en un solo Circuito

por un Microprocesador, una Integrado por lo que implica una gran

memoria RAM, una memoria ROM, ventaja en varios factores, por

Tamaño un decodificador de direcciones, lo ejemplo, la disminución en el tamaño


4

cual lo convierte en un circuito del circuito impreso por la reducción de

bastante complejo. los circuitos externos.

Para el Microprocesador, el costo es El costo para un sistema basado en

Costos muy alto en la actualidad. Microcontrolador es mucho menor.

Son más susceptibles a la

interferencia electromagnética

debido a su tamaño y a su cableado El alto nivel de integración reduce los

externo que lo hace más propenso al niveles de interferencia

Interferencias ruido. electromagnética

Tiempo de El tiempo de desarrollo de un Por el contrario, el de un

desarrollo microprocesador es lento. microcontrolador es rápido.

I.III
Podemos darnos cuenta que existe un gran mercado para este tipo de instrumentos
tecnológicos, así que a lo largo de la historia hemos atestiguado diversas empresas que se
han encargado de producir y vender su propia tecnología, dando lugar así a una constante
evolución y mejoras para este tipo de herramientas. En esta sección veremos algunas
empresas dedicadas al rubro de la fabricación de microprocesadores y sobretodo
microcontroladores.
Microchip Technologies:
5

Microchip Technology Inc. es una empresa fabricante de microcontroladores, memorias y


semiconductores analógicos, situada en Chandler, Arizona, EE. UU. Su Producto más
popular son los microcontroladores PIC de 8 bits.
Atmel Corporation:

Atmel es una compañía de semiconductores, fundada en 1984. Su línea de productos


incluye microcontroladores (incluyendo derivados del 8051, el AT91SAM basados en ARM,
y sus arquitecturas propias AVR y AVR32), dispositivos de radiofrecuencia, memorias
EEPROM y Flash, ASICs, WiMAX, y muchas otras. También tiene capacidad de ofrecer
soluciones del tipo system on chip (SoC).
Freescale Semiconductor:

Freescale Semiconductor es una compañía global líder en la industria de semiconductores


enfocada proveer procesamiento embebido y productos de conectividad. Actualmente, se
enfoca al suministro de productos para la industria automotriz, de redes, comunicaciones
inalámbricas, control industrial e industrias de consumo electrónico. Con se oferta de
procesadores embebidos y de productos complementarios, proporciona una solución
completa de semiconductores y software.
Texas Instruments:

Texas Instruments o TI, es una empresa norteamericana que desarrolla y comercializa


semiconductores y tecnología para sistemas de cómputo. Igualmente, es el mayor
productor de procesadores digitales de señal y semiconductores analógicos. TI es el tercer
mayor fabricante de semiconductores del mundo tras Intel y Samsung y es el mayor
suministrador de circuitos integrados para teléfonos móviles. Otras áreas de actividad
incluyen circuitos integrados para módem de banda ancha, periféricos para ordenadores,
dispositivos digitales de consumo y RFID.
6

Zilog Inc:

Zilog Inc, es un fabricante de microprocesadores y microcontroladores. Su producto más


conocido es el Zilog Z80 de 8 bits.
Motorola:

Motorola Empresa dedicada a fabricar microprocesadores y microcontroladores entre otros


productos, su mayor logro en la industria fue poner al Mercado un microprocesador de 8
bits, llamado 6800. Motorola fue la primera compañía en construir otros periféricos como el
6820 y el 6850.
Intel:

Intel empresa dedicada a la fabricación de microcontroladores y microprocesadores, obtuvo


un logro en abril de 1974, al colocar en el Mercado el microprocesador bajo la denominación
8080 con capacidad de direccionar 64kb de memoria, con 75 instrucciones y un precio de
inicio de $360 dólares.
7

II
Habiendo revisado los conceptos más generales
que engloban a los microprocesadores podemos
adentrarnos al modelo específico solicitado. El
microcontrolador PIC16F716 del fabricante
Microchip Technologies. Los microcontroladores
denominados “PIC” corresponden exclusivamente a la
marca Microchip. PIC significa “Peripheral Interface
Controller” y fue desarrollado por Microchip a principio de los 80.
II.I
La arquitectura que sique este dispositivo es Harvard, pues maneja buses
separados para las memorias de programa y de datos. Podemos observar con
detenimiento la arquitectura interna que sigue este microcontrolador, así como la
organización de sus diferentes partes:

Diagrama de bloque PIC16F716.


8

II.II
Los microcontroladores cuentan con una serie de pines destinados a entrada y
salida de datos o señales digitales. A estos pines se les denomina “Puerto”.
Los puertos “A” y “B” del microcontrolador podrán ser programados como entradas y salidas
indiferentemente. Para el caso de que sean programados como salida se denominan “Modo
Fuente” por que suministran corriente y cuando son programados como entrada se
denominan “Modo Sumidero” por que reciben corriente.
En la imagen siguiente se podrá observar claramente que el microcontrolador tiene dos
puertos denominados “A” y “B”. El puerto “A” tiene 5 líneas disponibles (RA0, RA1, RA2,
RA3, RA4) y el puerto “B” tiene 8 líneas disponibles (RB0, RB1, RB2, RB3, RB4, RB5, RB6,
RB7). Ambos puertos suman un total de 13 líneas que podrán ser programadas
independientemente como entradas o como salidas. Estas son las líneas que estarán
destinadas a comunicar el microcontrolador con el mundo exterior, como por ejemplo
motores, diodos luminosos “Leds”, módulos LCD, teclados matriciales, etc.

III
La organización de la memoria en el modelo PIC16F716 está dispuesta de manera
que existen dos bloques de memoria en el PIC16F716. Cada bloque (memoria y datos del
programa) tienen su propio bus para que el acceso simultáneo puede ocurrir.
Organización de la memoria del programa.
El PIC16F716 tiene un contador de programa de 13 bits capaz de abordar un espacio de
memoria de programa de 8K x 14. LosPIC16F716 tiene 2K x 14 palabras de memoria de
programa.
Organización de la memoria datos.
9

La memoria de datos se divide en varios bancos que


contienen los Registros de Propósitos Generales
(GPR) y los Registros de Funciones Especiales (SFR).
Los bits RP1 y RP0 del registro ‘Status’ son el banco
seleccionado por defecto.

Cada banco se extiende hasta ‘7Fh’ (128 bytes). La


ubicación más baja de cada banco se encuentran
reservadas para los Registros de Función Especial
(SFR), y por encima de estos se hallan los Registros
de Propósito General (GPR) implementado como RAM
estática. Todos los bancos implementados contienen Registros de funciones especiales.
Los 16 bytes superiores de espacio GPR y algunos especiales de "alto uso", así como los
registros de función en el banco 0 se reflejan en el banco 1 para reducción de código y
acceso más rápido.

IV
IV.I
El Registro Contador de Programa, normalmente denominado PC (Program
Counter), es totalmente 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 el GOTO y el 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 SKIP o “salteos” condicionales, que producen un
incremento adicional del PC si se cumple una condición específica, haciendo que el
programa saltee, sin ejecutar, la instrucción siguiente.
El PC es un registro de 9 bits en los 16C54/55, 10 bits en el 16C56, y 13 bits en el 16F716,
lo que permite direccionar respectivamente 512, 1024 o 2048 posiciones de memoria de
programa.
IV.II
Los Registros de Funciones Especiales (SFR) son registros utilizados por la CPU
y todos los módulos para controlar el funcionamiento deseado del dispositivo. Estos
10

registros son implementados como RAM estática. Una lista de estos registros es mostrada
en la tabla siguiente. Los Registros de funciones especiales se pueden clasificar en dos
conjuntos; núcleo (CPU) y periférico.
Esta zona de memoria no se puede utilizar como memoria de datos, resulta evidente que
si escribimos de forma descontrolada en la memoria asignada a un registro especial, se
modifica el comportamiento del microcontrolador, obteniéndose resultados inesperados
según el registro afectado. Aunque las posiciones de memoria que no están asignadas a
un registro especial pueden ser utilizadas para contener datos, no es aconsejable su uso,
se ha de tener en cuenta que estas pueden estar reservadas y asignadas a registros
especiales en otros modelos de microcontroladores o de fabricantes y nuestro programa
entrará en conflicto cuando cambiemos de modelo.

IV.III
Los puertos de entrada/salida (I/O) de propósito general, mediante los cuales el
microcontrolador puede monitorizar y controlar otros dispositivos. Resultan muy flexibles
pues muchos de sus pines de entrada/salida están multiplexados con funciones
alternativas. Para la mayoría de los puertos, la dirección del pin I/O es controlada por el
registro de dirección de datos, llamado TRIS. Un 1 en el registro TRIS indica que el pin
es de entrada, un 0 indica que es salida. Esta asignación se hace en: TRISA para los pines
del PUERTO A (5 bits) y TRISB para los pines del PUERTO B (8 bits).
Si TRISA es igual a ‘11110’ todos sus pines serán entradas salvo RA0 que esta como salida.
Si TRISB es igual a ‘00000001’ todos sus pines serán salidas salvo RB0 que esta como
entrada. Por defecto el PIC16F716 tendrá todos los puertos I/O (es decir los puertos RA y
RB), colocados como entrada de datos, y si queremos cambiarlos habrá que configurarlos.
11

IV.IV
Existe un registro, llamado PCL, ubicado en la posición 0x02 en el banco de
memoria. Se utiliza para direccionar las palabras de 14 bits del programa del usuario que
se encuentra almacenado en la memoria ROM; este contador de progamas es de 13 bits
de ancho. Todo empieza con la primera instrucción, esta tiene una posición indicada con
un número en el registro PCL, cuando se accede a esa posición, se lee la instrucción, se
decodifica, y luego se ejecuta, una vez hecho esto, el reloj del microcontrolador incrementa
al contador de programa (PCL) en un unidad, esto hace que el PCL apunte a la segunda
instrucción, ahora se lee esta segunda instrucción, se decodifica y también se ejecuta.
Nuevamente, el reloj del sistema incrementa el PCL para que apunte a la tercera
instrucción, la decodifique y la ejecute. Este proceso se repite hasta que termina el
programa (es decir, cuando encuentra un END).

IV.V
El registro de trabajo o W (Working Register), es un registro relevante especial
de 8 bits que participa en la mayoría de instrucciones. A diferencia de los SFR, se encuentra
dentro de la misma CPU, y puede ser accedido tanto para lectura como para escritura. Este
registro es totalmente escribible “desde el exterior” y se puede leer en cualquier momento
ya que se puede acceder a él desde cualquier banco de memoria. Por medio de este
registro cargamos valores a los distintos registros del μC, es decir, primero se pone un valor
en el registro W y luego se copia el valor del registro W al registro que queramos. No se
puede cargar un valor directamente a otro registro que no sea W.

IV.VI
El registro de estado o STATUS contiene el estado aritmético de la ALU, la causa
del reset y los bits de preselección de página para la memoria de datos. El registro STATUS
puede ser el destino de cualquier instrucción, como con cualquier otro registro. Contiene
los tres bits de estado de la ALU (C, DC y Z), y otros bits que por comodidad se incluyeron
en este registro.

El bit Z indica que el resultado de la última operación fue CERO. El bit C indica acarreo del
bit más significativo (bit 7) del resultado de la última operación de suma. En el caso de la
resta se comporta a la inversa, C resulta 1 si no hubo pedido de préstamo. El bit DC (digit
carry) indica acarreo del cuarto bit (bit 3) del resultado de la última operación de suma o
12

resta, con un comportamiento análogo al del bit C.


El bit C es usado además en las operaciones de rotación derecha o izquierda como un paso
intermedio entre el bit 0 y el bit 7. El bit PD (POWER DOWN) sirve para detectar si la
alimentación fue apagada y encendida nuevamente, tiene que ver con la secuencia de
inicialización. El bit TO (TIME-OUT) sirve para detectar si una condición de reset fue
producida por el ‘watch dog timer’.

V
El conjunto de instrucciones utilizado en el PIC16F716 compatible con RISC, con un
conjunto reducido de instrucciones. Constando de 36 instrucciones de una sola palabra.
Podemos desglosarlos en una tabla asociando su función y su codificación y una breve
descripción (ver tabla ‘1A’).

V.I
Las instrucciones de carga transfieren contenidos de memoria a registros, de
registros a memoria y entre registros. Se trata del grupo principal de instrucciones del
microprocesador, y su necesidad queda justificada, ya que todas las operaciones
aritméticas y lógicas se hacen sobre registros del microprocesador, o entre estos y
posiciones de memoria y casi siempre será necesario almacenar los resultados sobre la
memoria. Por otra parte, gran número de instrucciones utilizan registros para direccionar
posiciones de memoria, bien sea mediante direccionamiento absoluto o indexado.
Entre los principales tipos de instrucciones de carga que maneja el procesador
encontramos:
 MOVF - Move F
Sintaxis: MOVF f, d
Función: Pone el contenido de f en f si d=1 o f en W si d=0.
Atención: El desplazamiento de f en f que parecería inútil, permite comprobar el
contenido de f con respecto a cero ya que esta instrucción actúa sobre el bit Z.

 MOVLW - Move Literal to W with F


Sintaxis: MOVLW k
Función: Añade el contenido de W al contenido de f, y almacena el resultado en
W si d=0, y en f si d=1.

 MOVWF - Move W to F
Sintaxis: MOVWF f
Función: Carga f con el contenido de W.
13

 CLRF - Clear F with F


Sintaxis: CLRF f
Función: Pone el contenido de f a cero y activa el bit z.

 CLRW - Clear W register


Sintaxis: CLRW
Función: Pone el registro W a cero y activa el bit Z

 CLRWDT - Clear Watchdog Timer


Sintaxis: CLRWDT
Función: Pone a cero el registro contador del temporizador watchdog, así como el
predivisor.
14

V.II
Las instrucciones de manipulación de bits son aquellas que se emplean para
actuar sobre un bit de registro sin alterar a los demás. Los bits se numeran desde cero
hasta 7, de acuerdo a la posición que tienen dentro del byte: 0 es el menos significativo
(extremo derecho) y 7 es el más significativo (extremo izquierdo).
 BCF - Bit Clear F
Sintaxis: BCF f, b
Función: Pone a cero el bit numero b de f.

 BSCF - Bit Set F


Sintaxis: BSF f, b
Función: Pone a uno el bit numero b de f.

 BTFSC - Bit Test, Skip If Clear


Sintaxis: BTFSC f, b
Función: Si el bit numero b de f es nulo, la instrucción que sigue a esta se ignora y
se trata como un NOP. En este caso, y solo en este caso, la instrucción BTFSC
precisa dos ciclos para ejecutarse.

 BTFSS - Bit Test, Skip If Set


Sintaxis: BTFSS f, b
Función: Si el bit numero b de f esta en uno, la instrucción que sigue a esta se
ignora y se trata como un NOP. En este caso, y solo en este caso, la instrucción
BTFSC precisa dos ciclos para ejecutarse.

V.III

Como mencionamos con anterioridad el microcontrolador tiene dos puertos


denominados “A” y “B”. El puerto “A” tiene 5 líneas disponibles (RA0, RA1, RA2, RA3, RA4)
y el puerto “B” tiene 8 líneas disponibles (RB0, RB1, RB2, RB3, RB4, RB5, RB6, RB7).
Ambos Puertos suman un total de 13 líneas que podrán ser programadas
independientemente como entradas o como salidas.
Los bits de cada puerto se configuran mediante los bits correspondientes de un registro
de control asociado que recibe el nombre de TRIS. En realidad cada puerto soporta dos
registros:
1. El registro de datos, al que se denomina Puerto A o B (PORTA o PORTB).
2. El registro de control TRISA o TRISB, con el que se programa el sentido (Entrada o
Salida) de las líneas de cada puerto.
Los Puertos A y B se corresponden con las posiciones 5 y 6 del área de datos. Cada uno
de sus bits puede programarse como una línea de Entrada o de Salida, según se ponga un
1 o un 0 en el bit del registro de control TRIS correspondiente.
En la tabla 1B podemos observar un ejemplo del código requerido para establecer una
entrada y una salida por el puerto A:
15

V.IV
Las instrucciones de suma que podemos encontrar en este dispositivo son las
siguientes:
 ADDLW - ADD Literal to W
Sintaxis: ADDLW k
Función: Añade el contenido de W al contenido de k, almacena el resultado en W.

 ADDWF - ADD W to F
Sintaxis: ADDWF f, d
Función: Añade el contenido de W al contenido de f, y almacena el resultado en
W si d=0, y en f si d=1.

 INCF - Increase F Register


Sintaxis: INFC f, d
Función: Se incrementa en una unidad el contenido del registro f, si d=1 el
resultado se almacena en f, si d=0 el resultado se almacena en w.
V.V

Las instrucciones de incremento y decremento que podemos nombrar son:

 DECF - Decrement F to F
Sintaxis: DECF f, d
Función: Decrementa el contenido de f en una unidad. El resultado se guarda en
W si d=0 (f no varía), y en f si d=1.

 DECFSZ - Decrement F, Skip If Zero


16

Sintaxis: DECFSZ f, d
Función: Decrementa el contenido de f en una unidad. El resultado se guarda en
W si d=0 (f no varía), y en f si d=1. Si el resultado es nulo, se ignora la siguiente
instrucción y en este caso la instrucción dura dos ciclos.

 INCF - Increment F
Sintaxis: INCF f, d
Función: Incrementa el contenido de f en una unidad. El resultado se almacena
de nuevo en f si d=1 y en W si d=0(en este caso f no varía).

 INCFSZ – Increment F, Skip if Zero


Sintaxis: INCFSZ f, d
Función: Incrementa el contenido de f en una unidad. El resultado se guarda de
nuevo en f si d=1 y en w si d=0 (en este caso f no varía). Si el resultado es nulo, se
ignora la siguiente instrucción y en este caso, esta instrucción dura dos ciclos.

 SUBLW - Substract W from Literal


Sintaxis: SUBLW k
Función: Sustrae el contenido de W del literal k, y almacena el resultado en W. La
sustracción se realiza en complemento a dos.

 SUBWF- Substract W from F


Sintaxis: SUBWF f, d
Función: Sustrae el contenido de W del contenido de f, y almacena el resultado
en W si d=0 y en f si d=1. La sustracción se realiza en complemento a dos.

V.VI
Dentro de las instrucciones lógicas que podemos detallar, aquellas encargadas
de las comparaciones entre diferentes valores y su posterior movimiento, encontramos las
siguientes:

 XORLW - Exclusive OR Literal With W


Sintaxis: XORLW k
Función: Efectúa un OR lógico exclusivo entre el contenido de W y el contenido
del Literal K y almacena el resultado en W.

 XORWF - Exclusive Or W with F


Sintaxis XORWF f, d
Función: Efectúa un Or lógico exclusivo entre el contenido de W y el contenido de
f y almacena el resultado en f si d=1 o en W si d=0.

 ANDLW - AND Literal and W


17

Sintaxis: ANDLW k
Función: Efectúa un AND lógico entre el contenido de W y el literal k, y lo
almacena en W.

 ANDWF - AND W with F


Sintaxis: ANDWF f, d
Función: Efectúa un AND lógico entre el contenido de W y el contenido de f, y
almacena el resultado en W si d=0, y en f si d=1.

 SWAPF - Swap F to F
Sintaxis: SWAPF f, d
Función: Intercambia los cuatro bit de mayor peso por los cuatro de menor peso
de f, y almacena el resultado en W si d=0, y en f si d=1.

V.VII

El siguiente tipo de instrucciones son las instrucciones de salto, estas sirven para
alterar la secuencia lineal de la ejecución del programa, son capaces de alterar el
contador de programa según se cumplan ciertas condiciones y así generar apoyar
el diseño de ciclos o lazos (loops) de instrucciones que deben repetirse una cantidad
determinada de veces.

 GOTO - Salto Incondicional with F


Sintaxis: GOTO k
Función: La instrucción GOTO dispone solo de 9 bits en el código de operación
para especificar la dirección de destino del salto. Al ejecutar una instrucción GOTO
el microprocesador toma los dos bits que restan para completar la dirección de 11
bits, de los bits 5 y 6 de la palabra de estado. Estos últimos son llamados bits de
selección de página (PA0 y PA1). El programador deberá asegurarse de que estos
dos bits tengan el valor correcto antes de toda instrucción GOTO.

 CALL - Subrutina Call


Sintaxis: CALL k
Función: Guarda la dirección de vuelta en la pila y después llama a la subrutina
situada en la dirección cargada en el PC.

Las instrucciones que siguen son casos especiales de las de incremento y


decremento vistas anteriormente. Estas instrucciones podrían categorizarse dentro
del grupo de instrucciones orientadas a byte sobre registros, ya que efectivamente
operan sobre los mismos, y el formato del código de la instrucción responde al de
ese grupo, pero, a diferencia de las otras, pueden además alterar el flujo lineal del
programa y por eso se les incluyó en este grupo.

DECFSZ f,d ; decrementa y saltea sí 0, destino= f - 1, = 0 saltea.

INCFSZ f,d ; incrementa y saltea sí 0, destino= f + 1, = 0 saltea.


18

Estas dos instrucciones (Decrement File and Skip if Zero, e Increment File and Skip
if Zero) se comportan de manera similar a DECF e INCF, salvo que no afectan a
ningún bit de la palabra de estado. Una vez realizado el incremento o decremento,
si el resultado es 00000000, el microprocesador salteara la próxima instrucción del
programa.

VI
Un programa escrito en lenguaje ensamblador por un programador se llama
programa fuente. Después de que el ensamblador convierte el programa fuente en código
máquina a este se le denomina programa objeto.
El código representa normalmente datos y números e instrucciones para manipularlos. Un
modo más fácil de comprender el código máquina es dando a cada instrucción un
mnemónico, como por ejemplo STORE, ADD o JUMP. Esta abstracción da como resultado
el ensamblador, un lenguaje de muy bajo nivel que es específico de cada microprocesador.
Los lenguajes de bajo nivel permiten crear programas muy rápidos, pero que son, a
menudo, difíciles de aprender. Más importante es el hecho de que los programas escritos
en un bajo nivel sean altamente específicos de cada procesador. Si se lleva el programa a
otra máquina se debe reescribir el programa desde el principio.
VI.I
Las etiquetas se sitúan a la izquierda de las instrucciones (ver Imagen 1C) y sirven
para agrupar fragmentos de código. Estos fragmentos pueden ser de dos tipos:
1. El primer tipo no es un fragmento tal cual, si no que es un punto del programa al
que podremos saltar de manera incondicional a través de la instrucción adecuada.
2. El segundo tipo es denominado subrutina. Este empieza con una etiqueta y acaba
con la instrucción RETURN o RETLW, que veremos más adelante.
Deberemos tener en cuenta:
 la etiqueta es el primer campo en una línea en lenguaje ensamblador y puede no
existir.
 Si una etiqueta está presente, el ensamblador la define como el equivalente a la
dirección del primer byte correspondiente a esa instrucción.
 Esta etiqueta puede volver a usarse en otro lugar pero como operando de una
instrucción. El ensamblador reemplazará ésta etiqueta por el valor de cuando fue
creada. Se usan frecuentemente en las instrucciones de salto.
 No puede existir más de una etiqueta en la primera columna o primer campo de
instrucción.
19

 No pueden usarse como nombres de etiquetas a palabras ya reservadas por el


ensamblador (ORG, EQU, etc.) o nombres de instrucciones (movlw, call, nop, etc.)

VI.II
En esta columna (ver imagen 1D) se situarán las instrucciones u operaciones.
El campo del código de operación es el único que nunca puede estar vacío; éste siempre
contiene una instrucción o una directiva del ensamblador. Una etiqueta es una palabra
utilizada para designar alguna línea o sección del programa, se pueden utilizar para saltar
de una parte hacia esa etiqueta. Es importante que las etiquetas empiecen con una letra o
con un guion bajo "_". La longitud de una etiqueta puede ser de hasta 32 caracteres y como
ya se dijo se deben escribir en la primer columna.

VI.III
Los operandos, (ver imagen 1E) son los elementos que emplea la instrucción que
se está ejecutando. Usualmente los operandos son los registros, las variables o las
constantes. El campo de operandos o de dirección puede contener una dirección o un
dato, o puede estar en blanco. Normalmente contendrá registros o literales con los que se
operará (‘f’, ‘l’ o ‘k’, ‘b’ y ‘w’). Pudiendo haber 0, 1 ó 2; en el caso de que sean dos al primero
se le llama ‘destino’ y al segundo -separado por una coma- ‘fuente’.
En el caso del ejemplo observamos que el operando se trata de un número hexadecimal.
20

VI.IV
El campo del comentario o de etiquetas es opcional. Aquí podremos escribir
cualquier comentario que deseemos. Estos son útiles para saber qué hace un programa
sin tener que descifrar el código entero. El compilador (ensamblador) ignorará todo texto
más allá del punto y coma ";".

VI.V
Existen una serie de pasos que se deben seguir para dar por definitiva la realización
de un programa. Cuando más detallada sea la organización de estos pasos, más fácil será
la realización del siguiente. Para la programación se utiliza una cierta tabulación que se
debe respetar, además utilizar una tabulación adecuada hace los programas más claros y
legibles. Las etiquetas se escriben en la primera columna de cualquier línea, las
instrucciones y directivas en la segunda y por último, en la tercera columna, los operandos.
Los comentarios se pueden escribir en cualquier parte del programa. (ver Imagen 1G)
21

VII
A modo de conclusiones es factible denotar la gran diversidad de usos que tienen
los microcontroladores actualmente, son herramientas altamente optimizadas para ejecutar
tareas muy concretas. El lenguaje ensamblador también se convierte en un instrumento con
el cual, como especialistas, podemos comenzar a desarrollar e implementar nuestras
propias soluciones tecnológicas. La programación de bajo nivel requiere de habilidades
altamente analíticas y un buen desempeño intelectual, pues como hemos repasado, se
requiere tener consciencia de gran cantidad de información técnica y normas que han sido
establecidas con el paso de los años para normalizar el desarrollo de este tipo de proyectos
a nivel mundial. Podemos incluso recalcar la amplia cantidad de fabricantes de tecnología
que desarrollan y preparan su hardware con su conjunto particular de instrucciones y
bancos de registros. Por esto mismo, es muy importante la compilación exhaustiva de toda
la información disponible actualmente, con el fin de generar un trabajo enriquecedor y que
su veracidad y solidez se convierta en el apoyo de más personas.

VIII
Bibliografía
http://www.electronicaestudio.com/microcontrolador.htm
_____________________________________________________________________
https://microcontroladoressesv.wordpress.com/empresas-fabricantes-de-
microcontroladores/
_____________________________________________________________________
https://microcontroladoressesv.wordpress.com/arquitectura-de-los-microcontroladores/
_____________________________________________________________________
http://ww1.microchip.com/downloads/en/DeviceDoc/41206B.pdf
_____________________________________________________________________
https://www.unioviedo.es/ate/alberto/manualPic.pdf
_____________________________________________________________________
http://micropic.galeon.com/instrucciones.htm
_____________________________________________________________________
https://misistemaelectrico.wikispaces.com/file/view/SED+7+SALTO+2014.pdf
_____________________________________________________________________
https://www.avnet.com/shop/us/p/microcontrollers/8-bit-microcontrollers/microchip--
1/pic16f716-i-so-3074457345626506535/
______________________________________________________________________
https://www.unioviedo.es/ate/alberto/TEMA2-Memoria.pdf
22

______________________________________________________________________
https://www.serina.es/empresas/cede_muestra/211/TEMA%20MUESTRA.pdf
______________________________________________________________________
https://www.iso.org/committee/54992.html

También podría gustarte