INFORME2_91G

9

Click here to load reader

description

este es un laboraorio de microcontroladores atmel, espero ue sea de mucha ayuda

Transcript of INFORME2_91G

Page 1: 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

Page 2: INFORME2_91G

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

Page 3: INFORME2_91G

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

Page 4: INFORME2_91G

Figura 1

Figura 2

b. Segundo caso donde N=3 :

Figura 3

c. Tercer caso donde N>3 :

Page 5: INFORME2_91G

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

Page 6: INFORME2_91G

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

Page 7: INFORME2_91G

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