Beruflich Dokumente
Kultur Dokumente
ELECTRÓNICA
SISTEMAS MICROPROCESADOS I
ELABORADO POR:
BELÉN AUQUILLA
ÁNGEL FIERRO
FERNANDO LAPO
1
INDICE
Práctica Nº 2 AVR
1. Ejercicio Nº 1:
Programa utilizando Rotate……………………………….…………………...3
2. Ejercicio Nº 2:
Visualizar en un Display de 7 segmentos, datos que van desde 0 – 9 en
forma ascendente……………………………………………………………….5
3. Ejercicio Nº 3:
Escribir un número del 0 – 99 en forma ascendente………………………..8
4. Ejercici1 Nº 4:
Generar un Número aleatorio entre 0 – 99………………………………….11
5. Ejercicio Nº 5:
Prender un Led Intermitente 3 veces, luego prender un segundo led
intermitente 2 veces…………………………………………………………..14
2
Práctica Nº 2
OBJETIVO:
TEMA:
Programa utilizando Rotate
1. Ejercicio Nº 1:
Esquemático:
CÓDIGO:
$regfile "m16def.dat"
$crystal = 8000000
Ddrd = 255
Config Portd = Output
Dim A As Bit , I As Byte
Do
A=1
Waitms 100
For I = 1 To 7
Rotate Portd , Left
Waitms 100
Next
I=0
For I = 1 To 7
Rotate Portd , Right
Waitms 100
Next
Loop
End
Entradas:
3
Salidas:
1. Datos que observamos en los leds
Proceso:
1. Configuro el Puerto D como Salida
2. Dimensiono la A como Bit y L como Byte
3. Si la variable A = 1
4. Comparación For L =1 rota el Portd hacia la Derecha
5. Retardo de 100 ms
6. Si la variable L = 0
7. Comparación For L =1 rota el Portd hacia la Izquierda
8. Retardo de 100 ms
Diagrama de Flujo:
INICIO
Ddrd = 255
A=1
For I = 1 To 7
Retardo 100 ms
L=0
For I = 1 To 7
Retardo 100 ms
4
2. Ejercicio Nº 2:
Esquemático:
CÓDIGO:
$regfile "m16def.dat"
$crystal = 8000000
Config Portd = Output
Dim A As Byte
Ddrd = 0
A=0
Do
Portd = A
Waitms 500
Incr A
If A = 10 Then
A=0
End If
Loop
End
5
Entradas:
1. Datos que ingresan al Microcontrolador
Salidas:
1. Datos que observamos en el Display
Proceso:
1. Configuro el Puerto D como Salida
2. Defino la variable A
3. Dimensiono la variable A como Byte
4. Configuro el Puerto D como entrada
5. Comparaciones A = 0 el puerto D va hacer = A
6. Retardo de 500 ms
7. Se incrementa A
Diagrama de Flujo:
INICIO
Entradas de datos al uc
Dim A As Byte
Ddrd = 0
6
A=0
Portd = A
Retardo 500ms
Increment A
A = 10 No
Si FIN
A=0
7
3. Ejercicio Nº 3:
Esquemático:
CÓDIGO:
$regfile = "m16def.dat"
$crystal = 8000000
Config Portd = Output
Config Portc = Output
Dim A As Byte
Dim B As Byte
A=0
B=0
Dim I As Word
Dim H As Byte
I=0
Do
Portc = 1
Portd = A
Waitus 10
Incr I
If I = 2000 Then
Incr B
If B = 10 Then
B=0
Incr A
If A = 10 Then
A=0
End If
End If
I=0
End If
Loop
End
8
Entradas:
1. Datos que ingresan al Microcontrolador
Salidas:
1. Datos que observamos en los Display
Proceso:
1. Configuro los Puerto D y C como Salida
2. Defino las variables A, B y L
3. Dimensiono las variables A, B y H como Byte
4. Retardo de 10 ms
5. Incrementa L
6. Comparación If L=2000 se incrementa B
7. Comparación If B=10 se incrementa A
Diagrama de Flujo:
INICIO
Entradas de datos al uc
Dim A As Byte
Dim B As Byte
Dim l As Word
Dim H As Byte
Portc =1
Portd = A
Retardo 10 ms
Incrementa L
L= 2000
Si
Incrementa B
B=0
Si
Incrementa A
A=0
Si FIN
10
4. Ejercicio Nº 4:
Comando RND
Var=RND (limite)
Var.- Variable donde se guarda el número
Lim.- Valor aleatorio máximo
Esquemático:
CÓDIGO:
$regfile = "m16def.dat"
$crystal = 8000000
Config Portd = Output
Config Portc = Output
Portd = Menor
Portc = 2
Waitus 100
Portd = Mayor
11
Portc = 1
Waitus 100
Loop
End
Entradas:
1. Datos que ingresan al Microcontrolador
12
Salidas:
1. Datos que observamos en los Display
Proceso:
1. Configuro los Puerto D y C como Salida
2. Defino las variables Mayor, Menor, H y I
3. Hago a H un número del 0 -99 (comando Rnd)
4. Convierto a H a BCD
5. Escribo la Condición de Mayor y Menor
6. Retardo de 1ms
Diagrama de Flujo:
INICIO
Entradas de datos al uc
H = Rnd(99)
H = Makebcd(h)
Portd = Menor
)
Portc = 2
Retardo 100
ms
Portd = Mayor
)
Portc = 1
Retardo 100
ms
13
5. Ejercicio Nº 5:
Prender un Led Intermitente 3 veces, luego prender un segundo led intermitente 2 veces,
si se presiona el pulsador 1 sólo funciona el segundo led y si si presiona el pulsante 2 sólo
funciona el primer led
Esquemático:
CÓDIGO:
$regfile = "m16def.dat"
$crystal = 8000000
$baud = 9600
Ddrd = 0
Ddrd = 255
Config Portd = Output
Config Portb = Input
Portd = 0
Dim I As Byte
Lazo:
If Pinb.0 = 0 Then Gosub Sub1
Waitms 100
If Pinb.1 = 0 Then Gosub Sub2
Waitms 100
Goto Lazo
End
Sub1:
For I = 1 To 3
Portd.1 = 1
Waitms 500
Portd.1 = 0
Waitms 500
Next
Return
14
Sub2:
For I = 1 To 2
Portd.2 = 1
Wait 1
Portd.2 = 0
Wait 1
Next
Return
Entradas:
1. Datos que ingresan al Microcontrolador
Salidas:
1. Datos que observamos en los Led´s
Proceso:
1. Configuro los Puerto D como Salida
2. Configuro los Puerto B como Entrada
3. Dimensiono a L como byte
4. Realizo un lazo.
5. Comparaciones If Pinb.0=0 se activa Gosub Sub1
6. Retardo 100 ms
7. Comparaciones If Pinb.1=0 se activa Gosub Sub2
8. Retardo 100 ms
9. Realizo la subrutina 1 y 2
Diagrama de Flujo
INICIO
Entradas de datos al uc
Portd=0
Goto Lazo
No
Pinb.0 =0 Pinb.1=0
No
SI
SI
Gosub Sub1
For I =1 To 3
Gosub Sub2 FIN
For I =1 To 2
Pord.a=1 FIN Pord..2=1
Retardo 500ms Retardo 1ms
Portd.1=0
Portd.2=0
Restrado 500 ms Restrado 1 ms
15