Informe Practica2 AVR

15
Ingenieria Electrónica UPS, Sistemas Microprocesados LABORATORIO DE SISTEMAS MICROPROCESADOS I PRÁCTICA Nro. 2 AVR Edison Riofrío Francisco Reyes TEMA: Manejo de entrada y salida en el Atmega16 de Atmel. OBJETIVO: Utilizar los puertos del Atmega16, como interface digital al mundo exterior. 2.1 Programa utilizando ROTATE Entradas: -Bit de entrada Salidas: -Bit rotando en las patitas del Atlmega16. Procesos: -Definir variable para guardar el bit de entrada. -Rotar el bit de entrada por todo el puerto D del Atmega16. Diagrama de flujo:

Transcript of Informe Practica2 AVR

Page 1: Informe Practica2 AVR

Ingenieria Electrónica UPS, Sistemas Microprocesados

LABORATORIO DE SISTEMAS MICROPROCESADOS I

PRÁCTICA Nro. 2 AVR

Edison Riofrío

Francisco Reyes

TEMA: Manejo de entrada y salida en el Atmega16 de Atmel.

OBJETIVO: Utilizar los puertos del Atmega16, como interface digital al mundo exterior.

2.1 Programa utilizando ROTATE

Entradas: -Bit de entrada

Salidas: -Bit rotando en las patitas del Atlmega16.

Procesos: -Definir variable para guardar el bit de entrada.

-Rotar el bit de entrada por todo el puerto D del Atmega16.

Diagrama de flujo:

Page 2: Informe Practica2 AVR

Ingenieria Electrónica UPS, Sistemas Microprocesados

Programación en BASCOM-AVR:

$regfile "m16def.dat"

$crystal = 8000000

Ddrd = 255 'se especifica el puerto D como salida

Config Portd = Output

Dim A As Byte

Dim I As Byte

A = 1

Do 'inicia del lazo

For I = 1 To 8 'el lazo se repite por 8 veces

Portd = A

Rotate A , Left 'en la variable A y en el puerto D, se escribe un bit a la vez hacia la izquierda

Waitms 50

Next

I = 0

For I = 1 To 7

Rotate Portd , Right

Waitms 50

Next

Loop

End

Page 3: Informe Practica2 AVR

Ingenieria Electrónica UPS, Sistemas Microprocesados

Simulación

2.2 Utilización de display de siete segmentos. Visualizar en un display de sietesegmentos, datos que van desde cero hasta 9 en forma ascendente

Entradas: -Bits de entrada correspondientes a cada número decimal.

Salidas: -Código binario correspondiente a los números en las patitas del Atlmega16.

Procesos: -Definir variable A para guardar el número.

-Escribir el número en el puerto D del Atmega16.

-Esperar 500 ms.

-Incrementar en uno la variable A.

Diagrama de flujo:

Page 4: Informe Practica2 AVR

Ingenieria Electrónica UPS, Sistemas Microprocesados

Programación en BASCOM-AVR:

$regfile "m16def.dat"

$crystal = 8000000

Ddrb= 0 'se especifica el puerto D como salida

Config Portb = Output

Dim A As Byte

A = 0

Do

Portb = A

Waitms 100

Incr A

If A = 10 Then

A = 0

End If

Loop

End

Simulación

Page 5: Informe Practica2 AVR

Ingenieria Electrónica UPS, Sistemas Microprocesados

2.3 Manejo de display de siete segmentos con barrido. Escribir un número desdecero hasta 99 en forma ascendente

Entradas: -Bits de entrada correspondientes a cada número decimal.

Salidas: -Código binario correspondiente a los números en las patitas del Atlmega16.

-Bit de habilitación del display.

Procesos: -Definir variable A para guardar las decenas.

-Definir variable B para guardar las unidades.

-Escribir el número en el puerto D del Atmega16.

-Escribir el bit de habilitación del display en el puerto C del Atmega16.

-Incrementar en uno la variable A y la variable B.

Diagrama de flujo:

Page 6: Informe Practica2 AVR

Ingenieria Electrónica UPS, Sistemas Microprocesados

Programación en BASCOM-AVR:

$regfile "m16def.dat"

$crystal = 8000000

Config Portc = Output

Config Portd = Output

Dim A As Byte

Dim B As Byte

A = 0

B = 0

Dim I As Word

I = 0

Do

Portc = 1

Portd = A

Waitms 10

Portc = 2

Portd = B

Waitms 10

Incr I

If I = 5 Then

Incr B

If B = 10 Then

B = 0

Incr A

If A = 10 Then

A = 0

End If

End If

Page 7: Informe Practica2 AVR

Ingenieria Electrónica UPS, Sistemas Microprocesados

I = 0

End If

Loop

End

Simulación

2.4 Programa utilizando RND. Generar un número aleatorio entre cero y 99.

Sintaxis del comando RND:

Var=RND(límite)

Var: variable donde se guarda el número aleatorio generado.

Límite: el valor máximo que el número aleatorio puede tomar.

Entradas: -Número aleatorio.

Salidas: -Código binario correspondiente al número en las patitas del Atlmega16.

-Bit de habilitación del display.

Procesos: -Definir variable Mayor para guardar las decenas.

-Definir variable Menor para guardar las unidades.

-Definir variable H para guardar el número aleatorio.

-Escribir el número en el puerto D del Atmega16.

-Escribir el bit de habilitación del display en el puerto C del Atmega16.

Page 8: Informe Practica2 AVR

Ingenieria Electrónica UPS, Sistemas Microprocesados

Diagrama de flujo:

Programación en BASCOM-AVR:

$regfile "m16def.dat"

$crystal = 8000000

Ddrc = 255

Ddrd = 255

Config Portc = Output

Config Portd = Output

Dim I As Byte , H As Byte , Menor As Byte , Mayor As Byte

Do

H = Rnd(99)

H = Makebcd(h)

Menor = H And &B0000_1111

Mayor = H And &B1111_0000

Shift Mayor , Right , 4

For I = 1 To 10

Portd = Menor

Portc = 1

Page 9: Informe Practica2 AVR

Ingenieria Electrónica UPS, Sistemas Microprocesados

Waitms 10

Portd = Mayor

Portc = 2

Waitms 10

Next

Loop

End

Simulación

2.5 Utilización del comando GOSUB y GOTO. Prender un led intermitentemente 3veces, luego prender un segundo led intermitentemente 2 veces, si se presiona el pulsador 1sólo funciona el segundo led y si se presiona el pulsante 2 sólo funciona el prime led.

Entradas: -Bits de entrada correspondientes a cada pulsante por el puerto B.

Salidas: -Bits que encienden los dos leds intermitentemente.

Procesos: -Prender el primer led por 500ms.

-Apagar el primer led por 500ms.

-Repetir los dos pasos anteriores por 2 veces más

-Prender el segundo led por 1 s.

-Apagar el segundo led por 1 s.

-Repetir los dos pasos anteriores por 1 vez más

-Si se mantiene presionado el pulsante P1 apagar el primer led y solo dejarfuncionando el segundo led.

Page 10: Informe Practica2 AVR

Ingenieria Electrónica UPS, Sistemas Microprocesados

-Si se mantiene presionado el pulsante P2 apagar el segundo led y solo dejarfuncionando el primer led.

Programación en BASCOM-AVR:

$regfile "m16def.dat"

$crystal = 8000000

Ddrd = 0

Ddrb = 255

Config Portb = Input

Config Portd = Output

Portd = &B0000_0000

Dim I As Byte

Lazo:

If Pinb.0 = 1 Then Gosub Sub1

Waitms 100

If Pinb.1 = 1 Then Gosub Sub2

Waitms 100

Goto Lazo

End

Sub1:

For I = 1 To 3

Portd.1 = 1

Waitms 50

Portd.1 = 0

Waitms 50

Next

Return

Page 11: Informe Practica2 AVR

Ingenieria Electrónica UPS, Sistemas Microprocesados

Sub2:

For I = 1 To 2

Portd.2 = 1

Waitms 100

Portd.2 = 0

Waitms 100

Next

Return

Simulación

Page 12: Informe Practica2 AVR

Ingenieria Electrónica UPS, Sistemas Microprocesados

CONCLUSIONES

Bascom-AVR es una muy buena herramienta para la programación de AVR’s, es este caso para el Atmega16

Bascom-AVR permite crear subrutinas dentro de la programación para que seanllamadas en cualquier instante que se las requiera, ahorrando espacio y líneas deprogramación.

Una correcta programación en conjunto con el correcto diseño del hardware garantizaun buen resultado final.

RECOMENDACIONES

Obtener información suficiente sobre el Atmaga16 para conocer la correctadistribución y funcionamiento de cada uno de sus pines.

El IDE de Bascom-AVR es un tanto menos amigable que el IDE de MikroBasic, por estarazón se recomienda tener a la mano toda la información posible acerca de estecompilador para AVR’s de manera que se pueda lograr una óptima programación

Page 13: Informe Practica2 AVR

Ingenieria Electrónica UPS, Sistemas Microprocesados

ANEXOS

Fotografías de las prácticas de AVR’s realizadas en el laboratorio de sistemas microprocesados.

Page 14: Informe Practica2 AVR

Ingenieria Electrónica UPS, Sistemas Microprocesados

Page 15: Informe Practica2 AVR

Ingenieria Electrónica UPS, Sistemas Microprocesados