Está en la página 1de 8

Programa en ensamblador para

encender LEDS

Alumno: Enrique Isaí Ríos Arcos


Materia: Lenguajes de interfaz
Índice

Objetivo general. ....................................................................................................................... 3


Objetivos específicos. .............................................................................................................. 3
Planteamiento. ........................................................................................................................... 3
Justificación. .............................................................................................................................. 3
Introducción. .............................................................................................................................. 3
Desarrollo ................................................................................................................................... 4
Código ensamblador ................................................................................................................ 5
Pruebas piloto............................................................................................................................ 7
Conclusiones ............................................................................................................................. 7
Referencias ................................................................................................................................ 8
Objetivo general.
Crear un programa en ensamblador utilizando los nemónicos necesarios para
encender LEDS.

Objetivos específicos.
 Encender el LED de forma intermitente.
 Controlar la velocidad de encendido

Planteamiento.
El encender unos cuantos LEDS puede que sea algo sencillo tan solo viéndolo, sin
embargo, este es un principio; lo más fundamental en cuanto a varias tecnologías,
vemos LEDS incluidos en todo tipo de aparatos hoy en día, para dar una idea tan
solo podemos ver los semáforos, estos están programados para encenderse por un
periodo de tiempo.

Justificación.
Para lograr el encendido de estos LEDS se precisará de un lenguaje utilizado
presente en casi todo, referido al lenguaje ensamblador, el cual es un método de
codificación el cuál es interpretado por la máquina para realizar las instrucciones
que se le programen a través de este.

Introducción.
Retomando lo que es un lenguaje ensamblador, es una manera muy eficaz de
programar pues a través de este se puede especificar exactamente lo que la
computadora quiere que haga usando la menor cantidad de instrucciones, además
de esto, el lenguaje ensamblador permite obtener acceso a funciones de bajo nivel
del procesador para realizar tareas que no son soportadas por los lenguajes de alto
nivel.

Una vez aclarado la eficacia del lenguaje ensamblador para realizar varias
instrucciones, y entre estas instrucciones se incluye el control del encendido y
apagado de unos LEDS, el tiempo de encendido y apagado y la velocidad de
encendido; se irá describiendo de manera detallada y a través de pruebas la manera
de controlar estas acciones.

Desarrollo
Para lograr encender de manera efectiva los LEDS se utilizó el programa MPLAB
para desarrollar el código ensamblador y se utilizó el programa proteus para simular
ensamblando el circuito, para este circuito se utilizó el PIC16F84A, dos resistencias
de 200 ohmios y dos leds color amarillo

El PIC16F84 es un microcontrolador a 8 bits de la


familia PIC perteneciente a la Gama Media (según la
clasificación dada a los microcontroladores por la misma
empresa fabricante) Microchip.

MPLAB es un editor IDE gratuito, destinado a productos de la


marca Microchip. Este editor es modular, permite seleccionar los
distintos microcontroladores soportados, además de permitir la
grabación de estos circuitos integrados directamente al
programador.

Proteus Design Suite es software de automatización de diseño


electrónico, desarrollado por Labcenter Electronics Ltd., que
consta de los dos programas principales: Ares e Isis, y los
módulos VSM y Electra.

Se estableció como salida los pines 1 y 6 para colocar los LEDS y un tiempo de
encendido y apagado de 1 segundo creando una subrutina llamada retardo donde
se establece con el valor máximo de 255 e ir decrementando hasta que sea 0, de
manera que al crear 9 veces la instrucción CALL RETARDO 9 veces se logra
hacer que el tiempo entre encendido y apagado sea de 1 segundo.
Código ensamblador
INCLUDE <P16F84A.INC> ;IMPORTA TODAS LAS LIBRERIAS PARA USAR EL
PIC

LIST P=16F84A
TIEMPO EQU 0x0C ;Variable que se almacena en la posición C
ORG 0

BSF STATUS, RP0 ;Se configura el registro F en 1 lógico del status RP0 =
acceder al banco 1
BCF TRISB, 6 ;Se configura el pin 6 como salida
BCF TRISB, 1 ; Se configura el pin 1 como salida
BCF STATUS, RP0

ENCENDER ;Rutina principal


BSF PORTB, 6 ;Establece un 1 lógico en el puerto B del pin 6
BSF PORTB, 1 ;Establece un 1 lógico en el puerto B del pin 1
CALL RETARDO ;Subrutina que controla el tiempo de encendido
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO

BCF PORTB, 6 ;Establece un 0 lógico en el puerto B del pin 6


BCF PORTB, 1 ;Establece un 0 lógico en el puerto B del pin 1
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO

GOTO ENCENDER ;Instrucción que regresa a la rutina ENCENDER

RETARDO ;Subrutina
MOVLW D'255' ;Establece un valor de 255 a W
MOVFW TIEMPO ;SE LE ASIGNA 255 (lo que trae W) a la variable tiempo
DEC ;SUBRUTINA
DECFSZ TIEMPO ;DECREMENTA EL VALOR DE 255 EN 1 HASTA QUE
SEA 0
GOTO DEC ;SI NO ES 0 REGRESA A LA SUBRUTINA DEC
return

END
Pruebas piloto

Conclusiones
Está demás mencionar que el simple hecho de encender un LED o dos LEDS
parece una tarea fácil, sin embargo, para lograr esto se debe conocer la función de
cada nemónico que se puede usar para programar cada PIC; cada PIC trae una
documentación en la que nos explica desde la estructura interna de dicho PIC hasta
como funciona cada bloque, que nemónicos o instrucciones se pueden utilizar para
controlarlo.
En este caso se utilizó la documentación del PIC16F84A para lograr entender cómo
se puede programar este micro controlador, que bloques se pueden utilizar para
almacenar variables, que valores puede manejar, cuantas salidas y entradas se
pueden establecer, como configurar sus registros, etc.

La programación en ensamblador puede llegar a ser tediosa, por otra parte, al usar
este tipo de lenguaje tenemos más dominio en cuanto a las tareas que deseamos
que lo que se está programando realice, se tiene que estudiar a profundidad la
manera en la que se puede utilizar el lenguaje ensamblador e ir descubriendo que
más dispositivos se pueden programar a través de este lenguaje.

Referencias
https://es.wikipedia.org/wiki/Proteus_Design_Suite
https://es.wikipedia.org/wiki/MPLAB
https://ww1.microchip.com/downloads/en/devicedoc/35007b.pdf

También podría gustarte