You are on page 1of 11

Trabajo de sistemas embebidos.

Integrantes: Anderson Ojeda


Gina rodríguez

Profesor: José Caicedo.

Haga un programa en assembler que sume dos números cualquiera entre si


comprendidos entre 1 y 255 el resultado debe ser guardado en un registro llamado
respaldo, por último, este valor debe ser mostrado por el puerto B utilizando leds.

1) Suma 25+50

list p=16f84A

include <p16f84A.INC>

cblock 0x0C

respaldo

endc

ORG 0X00

BSF STATUS, RP0

CLRF TRISB

BCF STATUS, RP0

;codigo

L1

Movlw .25

addlw .50

movwf respaldo
btfss STATUS,C

goto mostrar

;resultado mayor que 255 prendera el nibble bajo de portb

;y apagara los leds conectados al nibble bajo de

;portb para indicar quela suma es suerior a 255

;que es el maximo numero que se uede representar con 8 bits

movlw B'00001111'

movwf PORTB

movlw B'00000000'

movwf PORTB

goto fin

mostrar

movf respaldo,w

movwf PORTB

fin

END
2) Haga un programa en assembler que sume dos números de 4 bits introducidos por el
puerto A utilizando dipswitch (utilice los primeros cuatro bits para el número y el bit más
significativo como botón enter el cuál indicará que ya el usuario terminó de digitar cada
número). El resultado debe multiplicarlo por 5 y mostrarlo por el puerto B.

Num1=Num2=2 , resultado=20

list p=16f84A

include <p16f84A.INC>

CBLOCK 0x0C

RESULTADO

NUM1

ENDC

ORG 0X00

BSF STATUS, RP0

CLRF TRISB

BCF STATUS, RP0

CLRF PORTB

INICIO

CLRF RESULTADO

CLRF NUM1

;CODIGO

P1 BTFSS PORTA,RA4

GOTO P1

P2 BTFSC PORTA,RA4

GOTO P2

MOVF PORTA,W
MOVWF NUM1

P3 BTFSS PORTA,RA4

GOTO P3

P4 BTFSC PORTA,RA4

GOTO P4

MOVF PORTA,W ;NUM2-->W

;RESULTADOS

ADDWF NUM1,W ;NUM2+NUM1 --->W

MOVWF RESULTADO ;W-->RESULTADO

ADDWF RESULTADO,F

ADDWF RESULTADO,F

ADDWF RESULTADO,F

ADDWF RESULTADO,F

MOVF RESULTADO,W ;SUMA 5 VECES RESULTADO

MOVWF PORTB

GOTO INICIO

END
3) Haga un programa en assembler que reste dos números digitados por software. Si el
resultado es positivo lo debe multiplicar por 4 mostrarlo por el PORTB, si es negativo
aplíquele el complemento A2, muéstrelo por el PORTB y active un led conectado al pin
RA1 que indicará que el resultado es negativo.

list p=16f84A

include <p16f84A.INC>

cblock 0x0C

RS

endc

ORG 0X00

BSF STATUS, RP0

CLRF TRISB

CLRF TRISA

BCF STATUS, RP0

CLRF PORTB

CLRF PORTA
;CODIGO

INICIO

BCF STATUS,C

BCF STATUS,Z

MOVLW .50

SUBLW .25

MOVWF RS

BTFSC STATUS,Z

GOTO CERO ;SI EL RESULTADO ES CERO

BTFSS STATUS,C

GOTO NEGATIVO ;RESULTADO NEGATIVO

;RESULTADO POSITIVO

MOVF RS,W

ADDWF RS,F

ADDWF RS,F

ADDWF RS,F

MOVF RS,W

MOVWF PORTB

GOTO INICIO

NEGATIVO

COMF RS,W

ADDLW .1 ;COMP A2-->W

MOVWF PORTB

BSF PORTA,RA1
GOTO INICIO

CERO

BSF PORTA,RA2 ;PRENDERA RA2 SI EL RESULTADO ES CERO

MOVF RS,W

MOVWF RS

GOTO INICIO

END

CASO: RESULTADO = -25 (NEGATIVO)

CASO :RESULTADO=30 (POSITIVO )


CASO: RESULTADO =0 (NEUTRO)

4)

CASO: CONTADOR=NUM=15 , RESULTADO =15*15=225

CASO: CONT=0 Y NUM=2 (RESULTADO=2)


*SE INGRESA PRIMERO EL CONTADOR

list p=16f84A

include <p16f84A.INC>

cblock 0x0C

NUM

CONTADOR

RESULTADO

endc

ORG 0X00

BSF STATUS, RP0

CLRF TRISB
BCF STATUS, RP0

CLRF PORTB

;CODIGO

INICIO

BCF STATUS,Z

CLRF CONTADOR

CLRF NUM

CLRF RESULTADO

P1 BTFSS PORTA,RA4

GOTO P1

P2 BTFSC PORTA,RA4

GOTO P2

MOVF PORTA,W

MOVWF CONTADOR

P3 BTFSS PORTA,RA4

GOTO P3

P4 BTFSC PORTA,RA4

GOTO P4

MOVF PORTA,W

MOVWF NUM

MOVF CONTADOR,W

SUBLW .0

BTFSC STATUS,Z

GOTO CONT_CERO
;NO ES CERO

SEGUIR

MOVF NUM,W

ADDWF RESULTADO,F

DECFSZ CONTADOR,F

GOTO SEGUIR

MOVF RESULTADO,W

MOVWF PORTB

GOTO INICIO

CONT_CERO

MOVF NUM,W

MOVWF PORTB

GOTO INICIO

END

You might also like