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