practica 2 micro

13
PREGUNTA 1 Se tiene la siguiente tabla grabada en la memoria flash del microcontrolador Tabla 7 seg: .DB 0b00111111, 0b00000110 ;0, 1 .DB 0b01011011, 0b01001111 ;2, 3 .DB 0b01100110, 0b01101101 ;4, 5 .DB 0b01111101, 0b00000111 ;6, 7 .DB 0b01111111, 0b01101111 ;8, 9 Código: .include "C:\VMLAB\include\ m8def.inc" .CSEG .ORG $00 RJMP INICIO INICIO: LDI R16,$FF ;declaración de puertos de salida OUT DDRD,R16 LDI R16,$00 ;el display inicialmente ESTA APAGADO OUT PORTD,R16 ;muestra en portD ;ESPERA PRESIÓN Y LIBERACIÓN DE PULSADOR LECTURA: IN R20,PINB ANDI R20,0b00100000 CPI R20,0 BREQ LECTURA ESPERA: IN R20,PINB ANDI R20,0b00100000 CPI R20,0 BRNE ESPERA LDI R17,4 ;convierte BCD para segmentos de display LDI R31,HIGH(TABLA*2) LDI R30,LOW(TABLA*2) ADD R30,R17 LPM R18,Z OUT PORTD,R18 RJMP LECTURA ;para convertir de BCD a segmentos del display TABLA: .DB $3F,$06,$5B,$4F, $66,$6D,$7C,$07 SIMULACION

Upload: bruno-olsson

Post on 03-Nov-2014

124 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Practica 2 Micro

PREGUNTA 1Se tiene la siguiente tabla grabada en la memoria flash del microcontroladorTabla 7 seg: .DB 0b00111111, 0b00000110 ;0, 1

.DB 0b01011011, 0b01001111 ;2, 3

.DB 0b01100110, 0b01101101 ;4, 5

.DB 0b01111101, 0b00000111 ;6, 7

.DB 0b01111111, 0b01101111 ;8, 9

Código:.include "C:\VMLAB\include\m8def.inc".CSEG.ORG $00RJMP INICIOINICIO:LDI R16,$FF ;declaración de puertos de salidaOUT DDRD,R16LDI R16,$00 ;el display inicialmente ESTA APAGADOOUT PORTD,R16 ;muestra en portD;ESPERA PRESIÓN Y LIBERACIÓN DE PULSADORLECTURA: IN R20,PINB ANDI R20,0b00100000CPI R20,0BREQ LECTURA ESPERA:

IN R20,PINBANDI R20,0b00100000CPI R20,0BRNE ESPERA

LDI R17,4;convierte BCD para segmentos de displayLDI R31,HIGH(TABLA*2)LDI R30,LOW(TABLA*2)ADD R30,R17LPM R18,ZOUT PORTD,R18RJMP LECTURA

;para convertir de BCD a segmentos del displayTABLA: .DB $3F,$06,$5B,$4F,$66,$6D,$7C,$07

SIMULACION

PB0/ICP114

PB1/OC1A15

PB2/SS/OC1B16

PB3/MOSI/OC217

PB4/MISO18

PB5/SCK19

PB6/TOSC1/XTAL19

PB7/TOSC2/XTAL210

PC6/RESET1

PD0/RXD2

PD1/TXD3

PD2/INT04

PD3/INT15

PD4/T0/XCK6

PD5/T111

PD6/AIN012

PD7/AIN113

PC0/ADC023

PC1/ADC124

PC2/ADC225

PC3/ADC326

PC4/ADC4/SDA27

PC5/ADC5/SCL28

AREF21

AVCC20

U1

ATMEGA8

R1

10k

Page 2: Practica 2 Micro

DIAGRAMA DE FLUJO

INICIO

DECKLARACION DE PUERTOSDE SALIDA

DISPLAY INICIALMENTEAPAGADOS

PULSADOR

CARGAR 4 DESDELA TABLA

MOSTRAR 4 ENPORT B

PULSADOR

NO

SI

SI

NO

Page 3: Practica 2 Micro

PREGUNTA 2 (A):

Escriba una sub rutina que determina si el número grabado en R18 es par. Si es par el registro R16=1, si es impar R16=0.

CODIGO:.include "C:\VMLAB\include\m8def.inc".DEF PAROIMPAR=R24RJMP INICIOINICIO:;DECLARAMOS LA PILALDI R20,LOW(RAMEND)LDI R21,HIGH(RAMEND)OUT SPH,R21OUT SPL,R20;AGINAMOS EL VALOR DE R18:LDI R18,8RCALL EVALUAMOV R16,PAROIMPARFIN:RJMP FINEVALUA: ;GUARDAMOS R18 EN LA PILAPUSH R18LDI R19,2;RESTAMOS SIEMPRE 2 A R18RESTA:

SUB R18,R19CP R18,R19BRLO SALTARJMP RESTASALTA:;SI LLEGA A 0 SERA PAR, SINO SERA IMPARCPI R18,0BREQ PARRJMP IMPARPAR:LDI PAROIMPAR,1;CARGAMOS R18 DE LA PILA Y DEVOLVEMOS LA SUBRUTINA CON RETPOP R18RETIMPAR:;CARGAMOS R18 DE LA PILA Y DEVOLVEMOS LA SUBRUTINA CON RETLDI PAROIMPAR,0POP R18RET

SIMULACIÓN:

Si R18 es par:

Page 4: Practica 2 Micro

Si R18 es impar:

DIAGRAMA DE FLUJO

Page 5: Practica 2 Micro

PROBLEMA 2(B):

Escriba un programa para saber cuántos pares están grabados en la memoria flash. La cantidad se muestra en los diodos leds conectados al puerto B.Números: .DB 5, 6, 2, 14, 0, 13 (números grabados en la tabla).

CÓDIGO:.include "C:\VMLAB\include\m8def.inc".DEF CONTEOIMPAR=R23.DEF CONTEOPAR=R22.CSEG.ORG $00RJMP INICIOINICIO:;DECLARAMOS LA PILALDI R20,LOW(RAMEND)LDI R21,HIGH(RAMEND)OUT SPH,R21OUT SPL,R20CLR R16;LOS CONTEOS ESTARAN INCIALMENTE EN CEOCLR CONTEOPARCLR CONTEOIMPAR;DECLARO EL PUERTO B COMO SALIDALDI R17,$FFOUT DDRB,R17;SALIDA INICIALMENTE EN CEROOUT PORTB,R16;PARA LA TABLANUMEROS:LDI ZL,LOW(TABLA*2)LDI ZH,HIGH(TABLA*2)ADD R30,R16LPM R18,ZRCALL EVALUAINC R16CPI R16,6 ;SOLO EVALUA LA CANTIDAD DE NUMEROS DE LA TABLABREQ MUESTRA

RJMP NUMEROS

MUESTRA:OUT PORTB,CONTEOPARFIN:RJMP FINEVALUA:;GUARDAMOS R18 EN LA PILAPUSH R18LDI R19,2;RESTAMOS SIEMPRE 2 A R18RESTA:SUB R18,R19CP R18,R19BRLO SALTARJMP RESTASALTA:;SI LLEGA A 0 SERA PAR, SINO SERA IMPARCPI R18,0BREQ PARRJMP IMPARPAR:INC CONTEOPAR;CARGAMOS R18 DE LA PILA Y DEVOLVEMOS LA SUBRUTINA CON RETPOP R18RETIMPAR:;CARGAMOS R18 DE LA PILA Y DEVOLVEMOS LA SUBRUTINA CON RETINC CONTEOIMPARPOP R18RETTABLA: .DB 5,6,2,14,0,13

Page 6: Practica 2 Micro

SIMULACIÓN:

SIMULACION CON VMLAB

SIMULACION CON PROTEUS

PB0/ICP114

PB1/OC1A15

PB2/SS/OC1B16

PB3/MOSI/OC217

PB4/MISO18

PB5/SCK19

PB6/TOSC1/XTAL19

PB7/TOSC2/XTAL210

PC6/RESET1

PD0/RXD2

PD1/TXD3

PD2/INT04

PD3/INT15

PD4/T0/XCK6

PD5/T111

PD6/AIN012

PD7/AIN113

PC0/ADC023

PC1/ADC124

PC2/ADC225

PC3/ADC326

PC4/ADC4/SDA27

PC5/ADC5/SCL28

AREF21

AVCC20

U1

ATMEGA8

Page 7: Practica 2 Micro

DIAGRAMA DE FLUJO:

INICIO

DECLARACIÓN DEPUERTOS DE SALIDA

N=0

APUNTA VALOR “N”EN LA TABLA

CARGAR EN R18VALOR DE “N” TABLA

SUBRUTINA

N=N+1

N=6

MUESTRA CANTIDADDE NÚMERO PAR EN

PORT B

FIN

Cantidad de números en la tabla

SI

NO

Page 8: Practica 2 Micro

PREGUNTA 3

Escriba un programa que muestre la cuenta desde 4 hasta 36, de 4 en 4, en 6 diodos leds que están conectados en PB2, PB3, PB4, PB5, PB6 Y PB7 (LSB). El retardo es de 0.7 segundos. Use el temporizador 1, modo CTC, con un pre escalador igual a 64.

CÓDIGO:

.INCLUDE "C:\VMLAB\INCLUDE\M8DEF.INC"

.CSEG

.ORG 0RJMP INICIOINICIO:LDI R20,0 ;REGISTRO QUE LLEVARA EL CONTEOLDI R16,$FF ; CONFIGURAMOS PORTB COMO SALIDAOUT DDRB,R16RCALL CONFIGURA_TMR1LDI R16,$20 ; INICIALIZAMOS CUENTA EN 4 (DESPLAZADO 2 BITS)OUT PORTB, R16LAZO:IN R16, TIFR ; SONDEAMOS OCF1A (BIT4 DE TIFR)ANDI R16,$10 ; ESPERAMOS QUE SEA 1CPI R16,$10BRNE LAZOIN R16,TIFR ; SE PONE 0 EL BIT OCF1AORI R16,$10OUT TIFR,R16;SE INCREMENTA LA CUENTALDI ZL,LOW(TABLA*2)LDI ZH,HIGH(TABLA*2)ADD R30,R20LPM R18,ZINC R20

CPI R20,10BREQ INICIOOUT PORTB,R18RJMP LAZO ; RETORNO AL LAZO

CONFIGURA_TMR1:; PREESCALAMIENTO 1:64; MODO CTCLDI R16, 0B00000000;OUT TCCR1A, R16LDI R16, 0B00001011;OUT TCCR1B, R16; VALOR DE REGISTRO OCR1A: 10936,5 ...REDONDEARE A 10936($2AB8)LDI R17,$2ALDI R16,$B8OUT OCR1AH,R17 ; (1US)X(64)X(OCR1A+1) = 0.7 SEGOUT OCR1AL,R16RET

TABLA:;SON LOS VALORES DE LA SERIE CONSIDERANDO PB7 COMO LSB.DB 0B00100000,0B00010000.DB 0B00110000,0B00001000.DB 0B00101000,0B00011000.DB 0B00111000,0B00000100.DB 0B00100100

Page 9: Practica 2 Micro

SIMULACIÓN:

VISUALIAZADO EN PROTEUS

PB0/ICP114

PB1/OC1A15

PB2/SS/OC1B16

PB3/MOSI/OC217

PB4/MISO18

PB5/SCK19

PB6/TOSC1/XTAL19

PB7/TOSC2/XTAL210PC6/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

AREF21

AVCC20

U1

ATMEGA8

D1LED-RED

D2LED-RED

D3LED-RED

D4LED-RED

D5LED-RED

D6LED-RED

65

43

21

VISUALIZADO EN DISPLAY

PB0/ICP114

PB1/OC1A15

PB2/SS/OC1B16

PB3/MOSI/OC217

PB4/MISO18

PB5/SCK19

PB6/TOSC1/XTAL19

PB7/TOSC2/XTAL210

PC6/RESET1

PD0/RXD2

PD1/TXD3

PD2/INT04

PD3/INT15

PD4/T0/XCK6

PD5/T111

PD6/AIN012

PD7/AIN113

PC0/ADC023

PC1/ADC124

PC2/ADC225

PC3/ADC326

PC4/ADC4/SDA27

PC5/ADC5/SCL28

AREF21

AVCC20

U1

ATMEGA8

65

43

21

4 3 2 16 5

Page 10: Practica 2 Micro

DIAGRAMA DE FLUJO

INICIO

CONFIGURAR PUERTOSDE SALIDA PARA LOS LEDS

CONFIGURAR EL TEMNPORIZADOR

CUENTA = 4

SE CUMPLE EL TIEMPO?

CUENTA = CUENTA+4

MUESTRA DE CUENTAEN LEDS

NO

SI