Practica 2 Micro
-
Upload
bruno-olsson -
Category
Documents
-
view
124 -
download
2
Transcript of 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
DIAGRAMA DE FLUJO
INICIO
DECKLARACION DE PUERTOSDE SALIDA
DISPLAY INICIALMENTEAPAGADOS
PULSADOR
CARGAR 4 DESDELA TABLA
MOSTRAR 4 ENPORT B
PULSADOR
NO
SI
SI
NO
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:
Si R18 es impar:
DIAGRAMA DE FLUJO
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
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
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
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
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
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