Post on 13-Jun-2015
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:
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
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:
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
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:
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
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.
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
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.
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
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
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
Ingenieria Electrónica UPS, Sistemas Microprocesados
ANEXOS
Fotografías de las prácticas de AVR’s realizadas en el laboratorio de sistemas microprocesados.
Ingenieria Electrónica UPS, Sistemas Microprocesados
Ingenieria Electrónica UPS, Sistemas Microprocesados