INFORME2_91G
Click here to load reader
-
Upload
percy-vicente-leiva -
Category
Documents
-
view
77 -
download
2
description
Transcript of INFORME2_91G
UNIVERSIDAD NACIONAL DEL CALLAO
FACULTAD DE INGENIERIA ELECTRICA Y ELECTRONICA ESCUELA PROFESIONAL DE INGENIERIA ELECTRONICA
MICROCONTROLADORES
PRE-INFORME 2
PROFESOR: Ing. Zenón Cucho Mendoza
ALUMNO: VICENTE LEIVA, PERCY DAVID 090619F
2012-B
PREGUNTA 1.Mediante el microcontrolador Atmel Avr se desea evaluar el numero ingresado por 3 interruptores , para ello se utiliza presionando un pulsador (sin soltar). Si el numero es mayor o igual que 3, se prende 2 leds, si es menor a 3, se prende 1 led.
SOLUCION:
1. Diagrama de flujo:
2. El código:
INICIO
INGRESO NUMERO EN BINARIO “N”
LEO PULSADOR “PD5”
N >= 3
ENCIENDE D1 Y D2
ENCIENDE D1
a. Primer caso donde N<3 :
; ******************************************************; A,B,C = PC0, PC1, PC2 (0b00000XXX); D0,D1 = PB0, PB1 (0b00000011); K1 = PD5 (0b00100000); AUTOR: VICENTE LEIVA PERCY; ******************************************************.include "C:\VMLAB\include\m8def.inc".CSEG.ORG $00
RJMP INICIOINICIO:
LDI R16,$00OUT DDRC, R16 ;configure puertoC como entradaLDI R16, $03OUT DDRB, R16 ,configure PB10 y PB1 como salidaLDI R16, 0b00000000OUT DDRD, R16 ;configure puertoD como entrada
PULSADOR:IN R19, PIND ;leo puertoDANDI R19, 0b00100000CPI R19, 0b00100000 ;compare si esta presionado el pulsadorBREQ LEER ;si esta presionado me dirijo a la etiqueta “LEER”RJMP PULSADOR ;caso contrario vuelvoa testear el pulsador
LEER:IN R18, PINC ;leo los valores ingresadorANDI R18, 0B00000011 ; filtro el valor a comprarCPI R18, 0B00000011 ,comparo el valor ingresado con el valor de 3BRSH MAYOR ;si es igual me dirijo a la etiqueta “MAYOR”BRLO MENOR ;si es igual me dirijo a la etiqueta “MENOR”RJMP PULSADOR
MAYOR:LDI R16, 0B00000011OUT PORTB, R16 ;enciendo los dos leds PB0 Y PB1RJMP PULSADOR ; vuelvo a testear el pulsador
MENOR:LDI R16, 0B00000001OUT PORTB, R16 ;enciendo el led PB0RJMP PULSADOR ;vuelvo a testear el pulsador
FIN: RJMP FIN
Figura 1
Figura 2
b. Segundo caso donde N=3 :
Figura 3
c. Tercer caso donde N>3 :
Figura 4
PREGUNTA 2:
El microcontrolador, está conectado a 2 pulsadores y 4 diodos leds.Implemente un programa para prender 4 diodos leds, mediante el pulsador k1. Inicialmente los 4 diodos leds están apagados, se prenden cuando se presiona y se suelta dicho pulsador.El pulsador k2, al presionar (sin soltar) permite apagar los diodos leds.Para las conexiones considerar:Entrada: pulsadores k1 y k2 conectados a PC1 y PC2.Salida: diodos leds conectados a PB3, PB2, PB1 y PB0 (LSB).
SOLUCION:
1. Diagrama de flujo.
INICIO
CONFIGURO PUERTOS
LEO PULSADOR
SI
NO
ENCIENDO LOS LEDS
LEO PULSADOR K2
NO
2. Observamos que el circuito sea el mismo al cual es indicado en el problema.
3. Una vez presionado el pulsador K1 que es el de la resistencia R1, los leds se encienden.
SIAPAGO LOS LEDS
4. Presiono el pulsador k2 y los leds se apagan por el momento de ser presionado.
5. El código:
; ******************************************************; El microcontrolador, está conectado a 2 pulsadores y 4 diodos leds.; Implemente un programa para prender 4 diodos leds, mediante el pulsador k1. Inicialmente los 4 diodos leds están apagados, se prenden cuando se presiona y se suelta dicho pulsador.; El pulsador k2, al presionar (sin soltar) permite apagar los diodos leds.; Para las conexiones considerar:; Entrada: pulsadores k1 y k2 conectados a PC1 y PC2.; Salida: diodos leds conectados a PB3, PB2, PB1 y PB0 (LSB).; ******************************************************; AUTOR: VICENTE LEIVA PERCY DAVID; ******************************************************.include "C:\VMLAB\include\m8def.inc".CSEG.ORG $00RJMP INICIOINICIO:
LDI R16, $00OUT DDRC, R16 ;configuro puertoC como entradaLDI R16, $0FOUT DDRB, R16 ;configuro puertoB como salida
;PB3, PB2, PB1 y PB0 (LSB) LEER:
IN R16, PINC ;leo los datos de puertoCANDI R16, $02CPI R16, $02 ;verifico si k1 esta presionadoBREQ ENCENDER_LEDS ;si es cierto me dirijo a esta etiquetaRJMP LEER ;caso contrario regreso a etiqueta "LEER"
ENCENDER_LEDS:LDI R16, $0FOUT PORTB, R16 ;enciendo los leds
APAGAR:IN R16, PINCANDI R16, $04CPI R16, $04 ;verifico si k2 esta presionadoBREQ APAGAR_LEDS ;si es asi me dirijo ala etiqueta "APAGAR_LEDS"RJMP ENCENDER_LEDS ;caso contrario enciendo los leds
APAGAR_LEDS:LDI R16, $00OUT PORTB, R16 ;apago los leds