Vous êtes sur la page 1sur 5

Objetivo.

Utilizar el set de instrucciones del microcontrolador PIC16F873A, para


desarrollar soluciones que involucren la configuracin de los puertos de
entrada/salida y el desarrollo de subrutinas.

Introduccin.
El lenguaje ensamblador es el lenguaje de programacin de en este caso un
microcontrolador este es la representacin ms directa del cdigo mquina, un
programa escrito en lenguaje assembler consiste en una serie de instrucciones
que corresponden al flujo de rdenes ejecutables que pueden ser cargadas en
la memoria de un microprocesador.
Caractersticas:

El cdigo escrito en lenguaje ensamblador posee una cierta dificultad de


ser entendido directamente por un ser humano ya que su estructura se
acerca ms bien al lenguaje mquina, es decir, lenguaje de bajo nivel.

Los programas hechos en lenguaje ensamblador, al ser programado


directamente sobre Hardware, son generalmente ms rpidos y consumen
menos recursos del sistema (memoria RAM y ROM). Al programar
cuidadosamente en lenguaje ensamblador se pueden crear programas que
se ejecutan rpido 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 cdigo difciles de programar en un lenguaje de alto nivel.

Tambin se puede controlar el tiempo en que tarda una Rutina en


ejecutarse, e impedir que se interrumpa durante su ejecucin.

El lenguaje ensamblador es un cdigo estructurado y gravitatorio


desarrollado sobre un archivo de programacin (.ASM), en el cual pueden
existir varios programas, macros o rutinas que pueden ser llamados entre
si.

En este laboratorio utilizaremos el software Mplab IDE (que se obtiene de


forma gratuita), y que se ejecuta en un pc para desarrollar aplicaciones para
microcontroladores, utilizaremos PIC16F873A que viene de la subfamilia
PIC16F87X de gama media de 8 bits, la letra A corresponde a que estos modelos
cuentan con mdulos de comparacin analgicos y es muy utilizado en proyectos
sencillos, de educacin y de entretenimiento. Con respecto a la memoria de los
microcontroladores estos tienen 3 bloques distintos:

Memoria de programa EEPROM Flash: es el lugar fsico donde se

guarda el programa de usuario. Es de tipo no voltil.


Memoria de datos SRAM: es el lugar fsico donde se guardan datos. Es

de tipo voltil.
Memoria de datos EEPROM: es el lugar fsico donde se guardan datos.

Es de tipo no voltil.

Registros De funciones:
Todos los microcontroladores cuentan con registros internos que permiten
controlar y supervisar las funciones y recursos disponibles del dispositivo, estos
se encuentran en un espacio especial de la memoria de datos. En los
dispositivos PIC16F87X estos registros son de 8 bits, la mayora de lectura y
escritura. Se puede acceder a dichos bits de manera individual, o bien a todo el
registro a la vez.

Registro STATUS: Proporciona informacin acerca del resultado de


operaciones aritmticas, operaciones lgicas y causa de reinicios,
adems de permitir la seleccin del banco de memoria de datos.

Registro W: Es el registro de trabajo relevante especial de 8 bits que


participa en la mayora de instrucciones que puede ser accedido tanto
como lectura y escritura.

Set de instrucciones y sintaxis.


Estos microcontroladores tienen un repertorio que se reduce a slo 25
instrucciones, estas se pueden clasificar en:

Instrucciones de carga.

Instrucciones de bits.

Instrucciones aritmticas.

Instrucciones lgicas.

Instrucciones de salto.

Instrucciones de manejo de subrutinas.

Instrucciones especiales.

Trabajo de Laboratorio.
Disee una solucin basada en la PIC16F873A, y en lenguaje assembler que
cumpla con los siguientes requerimientos:

Diagrama Electrico.

a) Realiza constantemente la lectura del PORTB (RB0-RB7), y muestra en el


PORTC(RC0-RC7) el complemento del dato ledo.
Ejemplo 1: PORTB = 0011 1000 => PORTC = 1100 0111.
Ejemplo 2: PORTB = 0000 1111 => PORTC = 1111 0000.
b) Realiza constantemente la lectura del PORTB (RB0-RB7) y muestre en el
PORTC(RC0-RC7) segn lo siguiente:
PORTC = PORTB + 0x0A cuando PORTB = [0x00, 0x96].
PORTC = PORTB - 0x0A cuando PORTB = [0x97, 0xFF].
Ejemplo 1: PORTB = 0000 0000 => PORTC = 0000 1010.
Ejemplo 2: PORTB = 1010 1010 => PORTC = 1010 0000.

c) Realiza constantemente la lectura del Nibble Bajo del PORTB (RB0-RB3),


y muestra su valor en el Nibble Bajo del PORTC (RC0-RB3) y en el Nibble
Alto del PORTC (RC4-RB7).
Ejemplo 1: PORTB = XXXX 1010 => PORTC = 1010 1010.
Ejemplo 2: PORTB = XXXX 1000 => PORTC = 1000 1000.
d) Realiza constantemente la lectura del Nibble Bajo del PORTB (RB0-RB3),
y muestra su valor en el Nibble Bajo del PORTC (RC0-RB3) y su
complemento en el Nibble Alto del PORTC (RC4-RB7).
Ejemplo 1: PORTB = XXXX 1010 => PORTC = 1010 1010.
Ejemplo 2: PORTB = XXXX 1000 => PORTC = 1000 1000.

En Proteus queda:

Vous aimerez peut-être aussi