Tarea EliamCaballeroCruz
Tarea EliamCaballeroCruz
Tarea EliamCaballeroCruz
604-A
MICROCONTROLADORES
M.C. Arturo Pablo Sandoval Garcia
Adicione los códigos utilizados en ensamblados
1- Indique el comportamiento del registro de estado Responda indicando el
comportamiento de las banderas C,H,Z. para las siguiente operaciones.
A) C)
B)
ldi R20,0x9C ldi R20, 0x88
ldi R20, 0x38
ldi R21, 0x64 ldi R21, 0x93
ldi R21, 0x2f
add R20,r21 add R20, R21
add R20, R21
; C= , H= , Z= ; C= , H= , Z=
; C= , H= , Z=
Solución:
ldi R20,0x9C
ldi R21, 0x64
add R20,r21
;C = Indica un acarreo en la operacion aritmetica.
;H = Indica un acarreo intermedio en alguna operacion artmetica.
;Z = Indica un cero despues de una operacion aritmetica.
Solución:
ldi R16, 0x25
ldi R17, 0x65
ldi R18, 12
;add R16,R16
ldi R16, 89
lsr R16
Solución:
ldi R16, 28
lsr R16
start:
in R16, PIND
call despIzq
out PORTB, R16
rjmp start
despIzq:
ldi R17, 4
iteracion:
lsl R16
dec R17
brne iteracion
RET
5. Por el puerto B, se obtienen los dato del puerto D, intercambie nibbles de alto a
bajo por ejemplo si escribe (1011).
Solución:
ldi R16, 0x00
out DDRD, R16
start:
in R16, PIND
swap R16
out PORTB, R16
rjmp start
6. Por el puerto B se tienen los datos de 5 lineas del puerto C sume la constante
decimal 67. PORTB = PORTC + 74
Solución:
ldi R16, 0x00
out DDRC, R16
ldi R17, 67
start:
in R16, PINC
andi R16, 0b00011111
add R16, R17
out PORTB, R16
rjmp start
7. Hacer que en el puerto D, muestre los leds de forma intermitente 0x5A.
Solución:
ldi R16, 0xFF
out DDRD, R16
start:
ldi R16, 0x5A
out PORTD, R16
call retardo
ldi R16, 0
out PORTD, R16
call retardo
rjmp start
retardo:
ldi R17, 100
delay:
dec R17
brne delay
RET
Solución:
cbi DDRB, 0
sbi DDRB, 5
start:
sbis PINB, 0
rjmp task
sbi PORTB, 5
rjmp start
task:
cbi PORTB, 5
rjmp start
Solución:
sbi DDRB, 5
start:
cbi PORTB, 5
call retardo
sbi PORTB, 5
call retardo
rjmp start
;1 Hz
retardo:
ldi R18, 5
iteracion2:
ldi R17, 255
iteracion1:
ldi R16, 255
delay:
dec R16
brne delay
dec R17
brne iteracion1
dec R18
brne iteracion2
RET
10. Configure los primeros 4 bits del PUERTO C y el PUERTO D como entrada y el
puerto B como salida: Verifique las intrucciones lógicas: AND, OR, OER
Solución:
ldi R16, 0x00
out DDRD, R16
start:
in R16, PIND
in R17, PINC
11. Configure los primeros 4 bits del PUERTO C y el PUERTO D como entrada y el
puerto B como salida: Verifique Las intrucciones aritmeticas: add, sub, mul.
Solución:
ldi R16, 0x00
out DDRD, R16
Solución:
;Registro de entrada
ldi R26, 0x00
out DDRD, R26
;Registro de salida
ldi R27, 0xFF
out DDRB, R27
;Registro de trabajo
ldi R18, 0x00
start:
in R27, PIND
call comparacion0
out PORTB, R18
rjmp start
comparacion0:
ldi R26, 0
cp R27, R26
brne comparacion1
ldi R18, 0b0000001
rjmp start_call
comparacion1:
ldi R26, 1
cp R27, R26
brne comparacion2
ldi R18, 0b00000010
rjmp start_call
comparacion2:
ldi R26, 2
cp R27, R26
brne comparacion3
ldi R18, 0b00000100
rjmp start_call
comparacion3:
ldi R26, 3
cp R27, R26
brne comparacion4
ldi R18, 0b00001000
rjmp start_call
comparacion4:
ldi R26, 4
cp R27, R26
brne comparacion5
ldi R18, 0b00010000
rjmp start_call
comparacion5:
ldi R26, 5
cp R27, R26
brne comparacion6
ldi R18, 0b00100000
rjmp start_call
comparacion6:
ldi R26, 6
cp R27, R26
brne comparacion7
ldi R18, 0b01000000
rjmp start_call
comparacion7:
ldi R26, 7
cp R27, R26
brne start_call
ldi R18, 0b10000000
rjmp start_call
start_call: RET
13. El siguiente código corresponde aun contador de 8 bits. El código tiene algunos
errores, por tanto hay que corregirlos. Como implementaria un contador BCD.
; ejem5_cont.asm
.include"m328pdef.inc"
ldi R16, 0xfF
out DDRB, R16
rstar:
ldi R16,0x00
Conta;
out PORTB,R16
inc R16
call RETARDO
CP R16, R17
ldi R17,0xFF
BRNE conta
rjmp restar
; retardo de un 1seg
RETARDO: LDI R17,100 ;100
LOOP3: LDI R18,25 ;25
LOOP2: LDI R19,20 ;213
LOOP1: DEC R19
BRNE LOOP1
DEC R18
BRNE LOOP2
DEC R17
BRNE LOOP3
RET
Solución:
.include"m328pdef.inc"
ldi R17,0xFF
restar:
ldi R16, 0x00
Conta:
out PORTB,R16
inc R16
call retardo
cp R16, R17
BRNE conta
rjmp restar
; retardo de un 1seg
retardo:
ldi R18, 255
ldi R19, 255
ldi R20, 255
LOOP3:
dec R18
brne LOOP3
LOOP2:
dec R19
brne LOOP2
LOOP1:
dec R20
brne LOOP1
RET