Sunteți pe pagina 1din 9

INSTITUTO POLITCNICO NACIONAL

Unidad Profesional Interdisciplinaria en Ingeniera y


Tecnologas Avanzadas
Ingeniera Mecatrnica
Microprocesadores, Microcontroladores e Interfaz

Prctica 1. Rutinas en AVR


Alumnos:
Grande Roldn Carlos
Medina Torres Jael Sebastian
Snchez Mata Mario Israel
Tovar Daphne

Grupo:
2MV4

Profesor:
Trejo Salazar David Benjamn

Fecha de Entrega:

25 de Enero de 2015

OBJETIVO. Que el alumno conozca la utilizacin y el funcionamiento de las


Rutinas en AVR, as como las instrucciones bsicas y banderas.
INTRODUCCIN
Las rutinas pre generadas en ensamblador se utilizan para ahorrarse tiempo de
diseo en generar un cdigo que ya han hecho otros o que puedes generar tu
mismo y necesitarlo en ms de un proyecto y as no tener que volver a escribirlo o
disearlo.
La extensin de archivo por defecto en rutinas es .lib y contienen nicamente las
instrucciones necesarias para el trabajo al que se destinan.
Para incluir una sub-rutina o librera en nuestro programa tendremos que usar la
directiva include de la manera siguiente:
include "rutina.lib"
Una vez hecho esto, ser como si tuvisemos las lneas de cdigo contenidas en
la librera, incluidas en el listado principal del programa .asm y accederemos a las
partes de la librera utilizando la llamada a subrutinas "CALL" ya que todas las
funciones contenidas en las libreras retornan con la instruccin "RETURN" o
similar que devuelven el proceso del programa a la posicin siguiente a la
instruccin "CALL".
Instrucciones Bsicas y Banderas
El juego de Instrucciones Bsico dentro de AVR, puede clasificarse de la siguiente
manera:
Instrucciones de transferencia de datos Instrucciones aritmtico-lgicas
Instrucciones de salto Instrucciones de manejo de bits Instrucciones de control
del sistema.
Por otro lado, los banderines (flags) que reflejan el resultado de la ejecucin de
algunas instrucciones (principalmente aritmticas, lgicas, etc.) son los siguientes:
- Bit C (Carry) - Bit Z (Zero). Se pone a 1 para resultado cero, 0 en otro caso. - Bit
N (Negative). Bit 7 del resultado.

PROCEDIMIENTO Y DESARROLLO.
Ejercicio 1. Realizar un programa ensamblador tenga programadas 4
secuencias de 8 leds y pueda tener la opcin de ponerlo a dos velocidades
de cambio distintas (400 ms, y 100 ms), en el diseo incluir un botn de
on/off.

Paso 1. Primeramente se procede a implementar la solucin mediante la


generacin de cdigo en ensamblador, se recurre a la apertura de la herramienta
Atmel Studio para la programacin del AVR.

Fig. 1 Acceso a la herramienta Atmel Studio 6.0

Paso 2. Una vez que abrimos el software de programacin del AVR, generamos un
nuevo proyecto mediante la ruta Project/ New Project y seleccionamos la opcin
AVR Assambler indicando a su vez el nombre y la ruta del proyecto como se
muestra en la Fig. 2; posteriormente en la ventana Device Selection (Fig. 3) ,
seleccionamos el integrado a utilizar; en nuestro caso ser el de la familia Atmega
328P.

Fig. 2 Asignacin de nombre y ruta de Proyecto.

Fig. 3 Ventana de dilogo de asignacin de seleccin de microchip.

Paso 3. Posteriormente, procederemos a la generacin de nuestro archivo .asm


cuyos bloques principales se describen a continuacin:
.include "m328Pdef.inc"
.cseg
.org 0X0
ldi r16, low(ramend)
out spl,r16
ldi r16, high(ramend)
out sph, r16
ser r16
out ddrd,r16
clr r16
out ddrb ,r16

En este bloque se muestra la utilizacin de la


librera "m328Pdef.inc" como principio, para
posteriormente inicializar/enmascarar nuestros
puertos de entrada y salida; en esta caso el B y el
D respectivamente.

loop:
on_off:
ldi r21,0X00
out portd,r21
sbis pinb,3
jmp on_off
in r16, PinB
andi r16, 0X03
cpi r16,0X03
brne otra1
rcall rut_3
jmp loop
otra1:
cpi r16, $02
brne otra2
rcall rut_2
jmp loop

En este bloque de loop, implementamos a su vez


una sub-rutina on_off que inicializa en cero el
puerto de salida D hasta que nuestro interruptor
destinado este en uno y pueda ejecutar la
estructura principal de nuestro programa.

En esta
ejecucin
mediante
asignado
accin.

parte mostramos el ejemplo de la


del seleccionador de Rutina de 4 bits
la comparacin del Puerto de Entrada
a los interruptores destinados a dicha

rut_0:
ldi r17,0X55
out portd,r17
sbis pinb,2
rcall t_100ms
sbic pinb, 2
rcall t_400ms
ldi r17,0XAA
out portd,r17
sbis pinb,2
rcall t_100ms
sbic pinb, 2
rcall t_400ms
ret
t_100ms:

Este bloque representa la estructura principal de


nuestro programa; ya que muestra la carga de la
secuencia
asignada
dependiendo
de
la
comparacin de rutina realizada en el bloque
anterior, adems ejecuta el delay aplicado a la
velocidad de cambio seleccionada por el usuario.

; ----------------------------; delaying 99990 cycles:


ldi R18, $A5
WGLOOP0: ldi R19, $C9
WGLOOP1: dec R19
brne WGLOOP1
Finalmente
la
dec R18
brne WGLOOP0
aplicacin de la rutina
; ----------------------------de retraso para el
; delaying 9 cycles:
seleccionador
de
ldi R18, $03
velocidad
de
cambio.
WGLOOP2: dec R18
brne WGLOOP2
; ----------------------------; delaying 1 cycle:
nop
; =============================
ret

Paso 4. Una vez generado el cdigo, procedemos a la verificacin de errores


mediante la construccin de la solucin en el Men Build/ Build Solution.

Fig. 4 Verificacin del cdigo.

Paso 5. Si no se generaron en errores, continuamos a verificar el funcionamiento


de nuestro programa mediante un software de simulacin. En este caso usaremos
la herramienta ISIS de Proteus.

Fig. 5 Implementacin del Cdigo en el software de diseo.

Ejercicio 2.

Ejercicio 3

Conclusiones
Dentro de la presente prctica, pude implementar a mayor detalle las instrucciones
bsicas para la programacin en AVR, cosa que adiferencia de la prctica 0 no
habamos logrado en su totalidad.
Me di cuenta que el manejo de rutinas simplifica mucho el diseo para la
poramacin en ensamblador y mediante la ayuda de estas pude ir ligando cada
parte del programa sin ningn problema.
Por Jael Sebastian Medina Torres
En la primera practica despues de poder reconocer y poder manejar mejer el
lenguaje ensamblador empezamos con un tema para poder dividir el programa en
pequeos segmentos de codigo llamado rutinas.
Por otro lado el uso de las rutinas nos ayudo a conceptualizar lo visto el clase ,
sabiendo que las rutinas deviden el codigo en diferentes segmentos.
Carlos Grande Roldn

Bibliografas

http://www.x-robotics.com/rutinas.htm

http://www.dte.us.es/personal/pparra/EdC-T4-AVR-v0-1a-parte

Anexo conclusin Prctica 0


Esta prctica me sirvi mucho de parteaguas para el entendimiento en general de
la herramienta de programacin para AVR Atmel Studio as como el manejo y
comprensin de la estructura general del integrado AVR 328P.
Considero que este prctica fue de suma utilidad para poder involucrarnos lo
suficiente dentro del entorno de los microcontroladores para as poder desarrollar
futuros proyectos de mayor complejidad.
Por Jael Sebastian Medina Torres

En la practica 0 se pudo apreciar y conocer a fondo los conceptos basicos y lo


necesario para poder utilizar el AVR ATMEGA328P, pudimos hacer uso del
programador por primera vez y su funcionamiento.
Fue la primera practica para poder familiarizarnos con la programacion en
ensamblador con los fundamentos para poder realizar futuras practicas.
Carlos Grande Roldn

Anexo conclusin Prctica 2


Para esta prctica, pude darme cuenta del uso general de las Interrupciones
dentro del lenguaje ensamblador mediante la herramienta de utilizacin Atmel
Studio. Mediante la prctica, al trabajar con el uso del timer en sus diferentes
configuraciones como lo son Over-Flow, fast PWM o CTC, pude darme cuenta de
la utilidad que estas tienen dentro de la programacin de nuestro integrado 328P.
Sin duda considero que el manejo de estas instrucciones es una parte
fundamental que debemos manejar para la programacin en AVR.
Por Jael Sebastian Medina Torres
En la segunda practica se estudio el manejo de la interrupcin timer , que es muy
util cuando se tiene un conjunto de codigo que se tiene que ejecutar cada
determinado tiempo , mientras que en el codigo principal puede seguir ejecutando
y cuando se llama a la interrupcion regresa al mismo momento que fue llamado.
Tambien se hace el uso de PWM para poder variar la intensidad y frecuencia.
Carlos Grande Roldn

S-ar putea să vă placă și