Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
P’URHÉPECHA
ASIGNATURA:
MICROCONTROLADORES
LCD
Presentan:
ALFREDO SILVERIO SAUCEDO.
JOSE JUAN NUCI ESTRADA
JOSE DANIEL MARCELO PAHUAMBA.
JHONATAN DURAN VELAZQUES
Desarrollo ............................................................................................................................... 9
Conclusiones......................................................................................................................... 14
Bibliografía ........................................................................................................................... 15
ii
Introducción.
Los microcontroladores AVR cuentan con un amplio conjunto de instrucciones y con 32
registros de trabajo de propósito general. En este caso se trabajara con microcontrolador
ATMEGA 328P de la familia Atmel, programado con la herramienta Atmel Studio de
AVR. Esta herramienta nos permite programar nuestros microcontroladores con un
lenguaje de programación de alto nivel C++, o con un lenguaje de bajo nivel Ensamblador,
en este caso se utilizó el lenguaje ensamblador, con la finalidad de escribir palabras en un
LCD para el código del programa utilizado se utilizaron subrutinas y registros guardados en
la pila, así como directivas de ensamblador. La finalidad de este programa es la
familiarización de el estudiante con este tipo de subrutinas y llamados a la pila, ya que en
mayor parte el programa crea registros y salidas de estos mismos.
Marco Teórico
1.1 EL PROGRAMA ENSAMBLADOR
Descripción:
El programa ensamblador es el programa que realiza la traducción de un programa
escrito en ensamblador a lenguaje máquina. Esta traducción es directa e inmediata, ya que
las instrucciones en ensamblador no son más que nemotécnicos de las instrucciones
máquina que ejecuta directamente la CPU.
Estructura:
Un programa en ensamblador está compuesto por líneas, conteniendo cada una de
ellas un comentario, una única instrucción o una directiva. En lo que sigue se utilizan los
símbolos <> para encerrar un identificador o un número que el programador debe escribir;
los símbolos [] elementos opcionales; los símbolos {} encierran elementos que se puede
escribir consecutivamente varias veces; el carácter |separa elementos opcionales.
Directivas del Ensamblador:
Controlan acciones auxiliares que realiza el programa ensamblador. No son
traducibles a código máquina, sino que indican al ensamblador las preferencias del
programador de cómo ha de efectuarse la traducción a lenguaje máquina. Ejemplo:
Variable DS.B 1 Variable es la etiqueta, DS.B es la directiva y 1 es su argumento
La Directivas en el Ensamblador se ajustan al código del usuario. Por ejemplo,
podrás cambiar la localidad del código en la memoria del programa, asignando etiquetas
que direccionan a la SRAM o definir los valores de las constantes. “. macro” es también
una directiva en el ensamblador.
.equ
Esta directiva asigna un nombre a una constante la cual no pueda cambiarse
después.
Conjunto de instrucciones:
En este apartado se comentan las instrucciones de ensamblador que poseen los
µC AVR de 8-BIT. El conjunto de instrucciones para estos microcontroladores se
puede dividir en el siguiente orden de grupos: Instrucciones Aritméticas y Lógicas
Instrucciones de Desvío (salto)Instrucciones de Transferencia de Datos Instrucciones de Bit
y prueba de Bit Una línea típica en lenguaje ensamblador está dada de la siguiente forma:
[Mnemónico] operando1, operando2
Los Mnemónicos son las instrucciones en lenguaje ensamblador que puede
reconocer el microprocesador. Dependiendo de la instrucción, puede haber uno o dos
operandos, incluso pueden no existir; su contenido consiste en un número, una variable o
una dirección; normalmente el resultado de una operación lógica, aritmética o de carga es
almacenado en operando1.
3
NOMENCLATURA DEL CONJUNTO DE INSTRUCCIONES
4
5
6
7
Tablas 1.1.-Instrucciones para lenguaje ensamblador.
8
Desarrollo
a continuación, se presenta el código utilizado en el programa Atmel Studio, el siguiente
código presenta una impresión en un LCD 8x1 en el cual se imprimirá la palabra HI. El
siguiente código muestra varias rutinas, saltos de rutinas y almacenamiento en pila. Para
poder utilizar instrucciones de llamados a subrutinas, y en general la pila del
microcontrolador entonces es necesario indicarle al programa la posición inicial de la
misma, esto se logra con las siguientes instrucciones:
9
LDI R21,LOW(RAMEND) //carga el registro 21 con los 8 bits más
significativos de RAMEND
OUT SPL,R21 //copia en contenido del registro 16 en SPL
10
CALL DELAY_100us //crea un retardo de 100
milisegundos
RET //regresa a la subrutina DATAWRT
;----------------------------------------------------------------------------
----------------------------------------------------------
SDELAY:
NOP //no se realiza nada en este ciclo
NOP //no se realiza nada en este ciclo
RET //regresa a la subrutina SDELAY
;----------------------------------------------------------------------------
--------------------------------------------------------
DELAY_100Us:
PUSH R17 //carga el registro 17 en la pila
LDI R17,60 //carga 60 en el registro 17
DR0: CALL SDELAY //llama a subrutina SDELAY
DEC R17 //decrementa el registro 17
BRNE DR0 //salta si el registro ha cambiado
POP R17 //saca el dato del registro 17 de la pila
RET //regresa a la subrutina DELAY_100Us
;----------------------------------------------------------------------------
--------------------------------------------------------
DELAY_2ms:
PUSH R17 //carga el registro 17 en la pila
LDI R17,20 //carga 20 en el registro 17
11
Pruebas y Resultados
En la imagen anterior se puede observar el circuito armado en Proteus sin correr aun
el programa, se puede notar las conexiones de los pines del microcontrolador y en que pines
del LCD están estos conectados.
Imagen 2.2. circuito armado en Proteus corriendo.
13
Conclusiones
Con lo visto anteriormente y durante el lapso de la elaboración del código anterior,
se llegó a la conclusión que el lenguaje ensamblador llega a ser mas complicado y tedioso
que el lenguaje de alto nivel C++ por lo que muchos estudiantes optan por usar el lenguaje
de alto nivel en proyectos para prueba, ya que logra ser menos complicado, se utiliza una
menor cantidad de líneas de código. Se optaría por usar lenguaje de bajo nivel en caso de
que se fuera a poner en ejecución el programa, pero por lo pronto y para practicas escolares
los estudiantes optamos por lenguaje de alto nivel.
Bibliografía
ATMEL. (2016). AVR Instruction Set Manual. ATMEL.
M, J. (2010). SEÑALES.
Madrid., U. C. (2002). Cuaderno de Prácticas Laboratorio de Fundamentos de
Computadores. Madrid: Facultad de Informática.
Mojica, J. S. (2016). INSTRUCIONES MICROCONTROLADORES AVR EN ESPAÑOL.
cd. mexico: MAGALLANES.
PADILLA., C. (2016). Directivas y Software Del AVR Studio (español). CD. MEXICO:
MAGALLANES.
Solis, F. (14 de Febrero de 2017). acuscorp.blogspot. Obtenido de acuscorp.blogspot:
http://acuscorp.blogspot.com/2017/02/programacion-del-microatmega328p-en.html