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 escrib escribe e 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 Utiliz Utilizaci ación ón de displa displayy de siete siete segment segmentos. os. Visualiz Visualizar ar en un displa displayy de siete siete segmentos, 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= 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 desde cero 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) 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 3 veces, luego prender un segundo led intermitentemente 2 veces, si se presiona el pulsador 1 só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 -Apagar el segundo 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 dejar funcionando el segundo led.
Ingenieria Electrónica UPS, Sistemas Microprocesados
-Si se mantiene presionado el pulsante P2 apagar el segundo led y solo dejar funcionando 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 & B0000_0000
Dim I As Byte Lazo: Lazo:
If Pinb.0 = 1 Then Gosub Sub1 Waitms 100 If Pinb.1 = 1 Then Gosub Sub2 Waitms 100 Goto Lazo End Sub1: 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: 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 BascomBascom-AVR AVR permit permite e crear crear subrut subrutina inass dentro dentro de la progra programaci mación ón para para que sean sean llamad llamadas as en cualqu cualquier ier instan instante te que se las requie requiera, ra, ahorrando ahorrando espacio espacio y líneas líneas de programación. Una correcta programación en conjunto con el correcto diseño del hardware garantiza un buen resultado final.
RECOMENDACIONES
Obte Obtene nerr info inform rmaci ación ón sufi sufici cien ente te sobr sobre e el Atma Atmaga ga16 16 para para conoc conocer er la corre correct cta a distribució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 esta razón razón se recomi recomiend enda a tener tener a la mano mano toda la inform informaci ación ón posibl posible e acerca acerca de este este compilador 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 realizadas en el laboratorio de sistemas microprocesados.
Ingenieria Electrónica UPS, Sistemas Microprocesados
Ingenieria Electrónica UPS, Sistemas Microprocesados