P. 1
Turorial_AVR

Turorial_AVR

|Views: 8.538|Likes:
Publicado porEdmundo Valencia

More info:

Published by: Edmundo Valencia on Mar 25, 2011
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

08/11/2013

pdf

text

original

Este proyecto propone familiarizar aún más con el manejo de los puertos, esta vez
vamos a utilizar las 8 salidas del puerto B, se trata de una secuencia de luces que deben
encender de izquierda a derecha una tras otra con un intervalo de 200 mili segundos.
En la figura siguiente se muestra como conectar cada uno de los leds.

A continuación, en el siguiente programa veremos una declaración nueva el GOSUB y
el RETURN, estos sirven para cuando tenemos muchas repeticiones de una línea o
grupo de líneas de programa, en nuestro caso el Wait, en vez de poner en cada cambio
de estado de las luces, lo agrupamos en una sola subrutina y lo llamaremos las veces
que queramos, la declaración RETURN lo envía de regreso a continuar después del
GOSUB que lo envió. Una de las ventajas mas importantes que tenemos es que ahorra
espacio en el AVR, y otra que si queremos cambiar el Wait por el de otro valor, basta
con cambiar una sola vez y el cambio se ejecuta para todos, lo que al contrario si no lo
utilizaremos el GOSUB y escribiríamos 30 Wait, deberíamos cambiarlo a los 30 Wait
por el de otro valor, un ejemplo sería:

21

Octavo Electrónica 2009 – 2010 FISEI - UTA

FISEI

Nota: La ubicación de la subrutina Pause, es importante, fíjense que se encuentra
después y fuera de las líneas principales de programación, si esta misma subrutina lo
colocáremos al principio del programa, de seguro se nos cuelga por que al encontrar el
RETURN simplemente no sabe a donde retornar ya que nadie lo ha enviado aún.

EJERCICIO CON LA INSTRUCCIÓN FOR NEXT

Este proyecto es muy importante encenderlo, ya que el siguiente proyecto de luces de
auto fantástico utilizando la declaración FOR NEXT.
Esa declaración sirve para ejecutar un número n de veces una línea de programa o grupo
de líneas de programa, el siguiente proyecto pretende encender un led en el puerto B.0 5
veces con intervalo de medio segundo segundo, después debe detenerse por 2 segundos
y luego parpadear 3 veces mas, detenerse por 3 segundos y luego repetir nuevamente el
proceso, se puede utilizar el proto que se armo para las luces de discoteca ya que el
mismo nos servirá después para el siguiente proyecto el de las luces del auto fantástico,
FOR NEXT se utiliza de la siguiente manera:

$regfile = "m8def.dat"
$crystal = 1000000
Config Portb = Output

Discoteca:
Portb = 1
Gosub Pause
Portb = 2
Gosub Pause
Portb = 4
Gosub Pause
Portb = 8
Gosub Pause
Portb = 16
Gosub Pause
Portb = 32
Gosub Pause
Portb = 64
Gosub Pause
Portb = 128
Gosub Pause
Goto Discoteca

Pause:
Waitms 300
Return
End

22

Octavo Electrónica 2009 – 2010 FISEI - UTA

FISEI

Dim Peter As Byte ; Primero se crea y asigna un tamaño para la variable peter
FOR Peter = 1 to 5 ; Ejecuta las siguientes instrucciones 5 veces hasta donde dice
NEXT

……..

; una vez concluido las repeticiones continúa con la declaración

que está

……..

; después del NEXT, peter debe ser creado como variable, es decir

NEXT

; asignarle un espacio en la memoria en este caso para 5.

You're Reading a Free Preview

Descarga
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->