Está en la página 1de 8

Universidad Nacional del Callao Ingeniera Electrnica

Microcontroladores ~ 1 ~ Ing. Zenn Cucho Mendoza




UNIVERSIDAD NACIONAL DEL CALLAO



FACULTAD DE INGENIERA ELECTRICA Y ELECTRNICA

Informe Final N3

Asignatura: Microcontroladores

Profesor: Ing. Zenn Cucho Mendoza

Alumnos: Cesar Guzmn Alvitrez 090609k
Alvarado Churano Pamela 100704k

Universidad Nacional del Callao Ingeniera Electrnica

Microcontroladores ~ 2 ~ Ing. Zenn Cucho Mendoza


MICROCONTROLADORES
Informe Final N03
(Semestre 2013-B)
INFORME FINAL
Pregunta 1
Implementar un programa para hallar el promedio de 5 notas de laboratorio. Utilizar las siguientes
subrutinas:
Configura Puertos: Para configurar puertos
Suma Notas: Para la suma de las 5 notas
Parmetros de entrada:R16,R17,R18,R19,R20
Parmetros de salida:R24
Calcule menor: Halla el menor de 5 notas
Parmetros de entrada:R16,R17,R18,R19,R20
Parmetros de salida: R25
Promedio: determina el promedio
Parametros de entrada: R24,R25
Parametros de salida:R26
Conexiones de Leds a: PB4,PB3,PB2,PB1,PB0

Solucion:
Cdigo en ensamblador - MVLAB
; ******************************************************
; BASIC .ASM template file for AVR
; ******************************************************
.include "C:\VMLAB\include\m8def.inc"
.org $00
.cseg
rjmp inicio
inicio:
ldi r17,high(ramend); configura la pila
out sph,r17
ldi r18,low(ramend)
out spl,r18
rcall ingresa_notas
ldi r26,5
push r19 ;guarda los numeros en la pila
push r20 ;
push r21
push r22
Universidad Nacional del Callao Ingeniera Electrnica

Microcontroladores ~ 3 ~ Ing. Zenn Cucho Mendoza

push r23
ldi r24,20
compara:
pop r25 ; saco los numeros en un bucle
cp r24,r25
brsh menor
rjmp final
menor:
mov r24,r25; guarda el menor en R24

final:
dec r26 ; contador
cpi r26,0
brne compara

rcall suma
rcall promedio
rcall configura_puertos
fin:
rjmp fin
configura_puertos:
ldi r16,$ff
out ddrc,r16
out portc,r19 ;configura puerto c como salida
ret
ingresa_notas:
ldi r19,18
ldi r20,15 ;ingresa numeros
ldi r21,18 ;parametros entrada r19,r20,r21,r22,r23
ldi r22,9
ldi r23,16
ret
suma:
add r19,r20 ; suma los numeros
add r21,r22 ; parametros de entrada r19,r20,r21,r22,r23
add r19,r21 ;parametro de salida r19
add r19,r23
ret
promedio:
sub r19,r24 ;promedia los numeros
lsr r19 ;parametros de entrada r19,r24
lsr r19 ;parametro de salida r19
ret



Universidad Nacional del Callao Ingeniera Electrnica

Microcontroladores ~ 4 ~ Ing. Zenn Cucho Mendoza

Diagrama de Flujo























FIN

INICIO
Configurar E/S
Entradas: PC3 Y PC4
Salidas:PB3 Y PB4 (muestra inicial)
PB0 Y PB1 (muestra final)

Ingresar combinacin de las
entradas en PC3 Y PC4
Mostrar las nuevas
salidas PB0 Y PB1 en
los leds
PB3 Y PB4 <- Desplazar 3 veces hasta que los
nuevos valores estn en PB0 Y PB1

Despalzamos
Universidad Nacional del Callao Ingeniera Electrnica

Microcontroladores ~ 5 ~ Ing. Zenn Cucho Mendoza


Simulacion en proteus:
En el problema ingresamos nuestras cinco notas y le quitamos el menor (suma de los nmeros
18,15,18,9 y 16 y le quito el menor que es 9 la suma total nos da 67 y luego lo dividimos entre 4 lo
cual aproximadamente nos da 16.15 lo en los leds se prenderia de la siguiente manera como se ve
la figura de simulacin 0b00010000)



Pregunta 2
Se tiene 4 interruptores, un pulsador P1y 6 diodos leds (D6 D5 D4 D3 D2 D1) conectados al
microcontrolador. Cuando se presiona y se suelta el pulsador P1 se valida el ingreso de cada
numero en la direccin $60,$61,$62,$63,$64(son 5 pulsaciones). Luego de guardar los 5 nmeros
se prende el diodo D6.Luego al presionar y soltar de nuevo el pulsador P1(sexto pulso), se muestra
en el puerto D la semisuma del menor con el mayor nmero. Implemente programa.
En la solucin use las subrutinas:
Configura_Puertos, Halla_menor, Halla_mayor, indicando sus parmetros de entrada y salida.
Ejemplo: Sean los nmeros 20,30 ,15, 40 y 25
Resultado (15+40)/2=27 este valor se muestra en los leds
PB0/ICP1
14
PB1/OC1A
15
PB2/SS/OC1B
16
PB3/MOSI/OC2
17
PB4/MISO
18
PB5/SCK
19
PB6/TOSC1/XTAL1
9
PB7/TOSC2/XTAL2
10
PC6/RESET
1
PD0/RXD
2
PD1/TXD
3
PD2/INT0
4
PD3/INT1
5
PD4/T0/XCK
6
PD5/T1
11
PD6/AIN0
12
PD7/AIN1
13
PC0/ADC0
23
PC1/ADC1
24
PC2/ADC2
25
PC3/ADC3
26
PC4/ADC4/SDA
27
PC5/ADC5/SCL
28
AREF
21
AVCC
20
U1
ATMEGA8
0
0
0
0
1
Universidad Nacional del Callao Ingeniera Electrnica

Microcontroladores ~ 6 ~ Ing. Zenn Cucho Mendoza


Solucion:
Cdigo en ensamblador MVLAB
.include "C:\VMLAB\include\m8def.inc"
.dseg
.org $60
numeros: .byte 5
.cseg
.org $00
rjmp inicio
inicio:
ldi r17,0
ldi r16,high(ramend); configuramos la pila
out sph,r16
ldi r16,low(ramend);
out spl,r16
; configurar puntero de pila
ldi xh,high(numeros)
ldi xl,low(numeros)
rcall configuracion_puertos
;ingresar numeros
ingrese_numero:
in r16,pinb
andi r16,$0f
;pulsador P1
pulsadorP1:
nopresionadoP1:
sbis pind,0
rjmp ingrese_numero
presionadoP1:
soltadoP1:
sbic pind,0
rjmp soltadoP1
; contador
out portc,r16
inc r17
cpi r17,6
breq promedio
st x+,r16
cpi r17,5
breq prenderD6
rjmp ingrese_numero
prenderD6:
ldi r18,0b00100000
out portc,r18
rjmp pulsadorP1
promedio:
Universidad Nacional del Callao Ingeniera Electrnica

Microcontroladores ~ 7 ~ Ing. Zenn Cucho Mendoza

ldi r20,4
ld r21,-x
rcall mayor
ldi r20,4
ld r22,x+
rcall menor
add r21,r22
lsr r21
out portc,r21
fin:
rjmp fin
configuracion_puertos:
ldi r16,$00;pulsador
out ddrd,r16
ldi r16,$00;entradas
out ddrb,r16
ldi r16,$ff
out ddrc,r16
ret
mayor:
ld r23,-x
cp r21,r23
brlo mayor1
rjmp final1
mayor1:
mov r21,r23
final1:
dec r20
cpi r20,0
brne mayor
ret
menor:
ld r24,x+
cp r22,r24
brsh menor1
rjmp final2
menor1:
mov r22,r24
final2:
dec r20
cpi r20,0
brne menor
ret

Simulacion:
Universidad Nacional del Callao Ingeniera Electrnica

Microcontroladores ~ 8 ~ Ing. Zenn Cucho Mendoza




En los registros ingresamos como nmeros al 13,5, 4 y 15 en nuestra salida nos da el promedio del
menor con el mayor que seria que es (15+4)/2= 9.5




PB0/ICP1
14
PB1/OC1A
15
PB2/SS/OC1B
16
PB3/MOSI/OC2
17
PB4/MISO
18
PB5/SCK
19
PB6/TOSC1/XTAL1
9
PB7/TOSC2/XTAL2
10
PC6/RESET
1
PD0/RXD
2
PD1/TXD
3
PD2/INT0
4
PD3/INT1
5
PD4/T0/XCK
6
PD5/T1
11
PD6/AIN0
12
PD7/AIN1
13
PC0/ADC0
23
PC1/ADC1
24
PC2/ADC2
25
PC3/ADC3
26
PC4/ADC4/SDA
27
PC5/ADC5/SCL
28
AREF
21
AVCC
20
U1
ATMEGA8
0
1
0
0
0
0
0
0
1
0
0