hola a todos soy nueva en el foro y tengo una duda en un programa que estoy realizando
ya que tengo un error en la simulacion y no he netendido cual es si alguien me puede ayudar gracias
programa que tome dos datos de 4 bits (ambos del puerto A), si en pin 7 del
puerto B hay un cero se muestra la suma de los datos en el puerto C (5 bits); si hay un 1 se
muestra la resta en los últimos 5 bits del puerto C y el signo de la resta en el pin 7 del mismo
puerto. (0 positivo, 1 negativo).
este es mi codigo:
;DIRECTIVAS EN ENSAMBLADOR
.include "m16def.inc"
.device ATMEGA16
;RESET_VECTOR ADDRESS $0000
.org $00
jmp inicio
; PROGRAMA PRINCIPAL
inicio:
ldi r16, high(ramend)
out sph, r16
ldi r16, low(ramend)
out spl, r16
ser r16
;configuracion de puertos
ldi r17,$00 ; entradas de porta
out ddra, r17
ldi r18,$7F ;seleccionPINA 0 25
out ddrb, r18
ldi r19, $1F ;salida con signo
out ddrc, r19
clr r19
ciclo:
in r17,pina
in r18,pinb
mov r20,r17
andi r20,$F0
swap r20
andi r17,$0F
cpi r18,$00
breq suma
resta:
sub r20, r17
brmi signo
out portc,r20
jmp ciclo
suma:
add r20, r17
out portc, r20
jmp ciclo
signo:
neg r17
ldi r23,$08
add r20,r23
out portc, r20
jmp ciclo