Está en la página 1de 6

ESPE-L NOMBRE: Fernando Barreno NIVEL: 5to Electrnica A MICROCONTROLADORES CODIGOS: EJERCICIO 1 ;Utilizando la instruccin xor determinar si dos

registros ;son iguales. Y guardar el dato en la localidad siguiente. list p=16f877 ; list directive to define processor #include <p16f877.inc> ; processor specific variable definitions

; remaining code goes here DATO1 EQU 19 DATO2 EQU 20 GUARDAR EQU 21 ORG 0X00 LAZO1 MOVLW 19 ;CARGO W CON LO QUE TIENE EL REGISTRO 19 MOVWF DATO1 ;TRANSFIERO LO QUE TIENE W AL REGISTRO DATO1 MOVLW 20 ;CARGO W CON LO QUE TIENE EL REGISTRO 20 MOVWF DATO2 ;TRANSFIERO LO QUE TIENE W AL REGISTRO DATO2 MOVF DATO1,0 ;TRANSFIERO A W LO QUE TIENE EL REGISTRO DATO1 XORWF DATO2,0 ;REALIZO LA OPERACION OR ENTRE W Y DATO2 BTFSS STATUS,2 ;PREGUNTO SI EL BIT 2 DEL REGISTRO STATUS ES 1 GOTO LAZO1 ;SI STATUS,2 NO ES 1 REGRESO A LAZO1 MOVLW DATO2 ;SI STATUS,2 ES 1 TRANSFIERO LO QUE TIENE DATO2 A W MOVWF GUARDAR ;TRANSFIERO LO QUE TIENE W AL REGISTRO GUARDAR NOP END EJERCICIO 2 ;Analizar los datos desde la localidad [35] hasta [45] y determinar ; cuntos datos son mayores a 50h. list p=16f877 ; list directive to define processor #include <p16f877.inc> ; processor specific variable definitions

; remaining code goes here CONTADOR INDF EQU VALOR EQU ORG 0X00 EQU 05 00 06

CLRF CONTADOR ;INICIO EN CERO EL CONTADOR MOVLW 35 ;CARGO W CON EL DATO 50H MOVWF FSR ;TRANSFIERO LO QUE TIENE W AL REGISTRO INDF MOVLW 50H ;CARGO W CON EL DATO 50H MOVWF VALOR ;TRANSFIERO LO QUE TIENE W AL REGISTRO VALOR LAZO1 MOVF INDF,0 ;TRANSFIERO LO QUE TIENE INDF A W SUBWF VALOR,1 ;SE RESTAN LOS REGISTROS (VALOR-W) BTFSC STATUS,0 ;PREGUNTO SI EL CARRY ES 0 INCF CONTADOR,1 ; SI CARRY NO ES CERO SUMO UNO AL CONTADOR INCF FSR,1 ;INCREMENTO FSR MOVLW 46 ;PONGO EN W EL REGISTRO 46 XORWF FSR,1 ;RESLIZO LA OPERACION OR ENTRE W Y FSR BTFSS STATUS,2 ;PREGUNTO SI Z DEL REGISTRO ESTADO ES CERO GOTO LAZO1 MOVF CONTADOR,0 NOP END EJERCICIO 3 ;Contar los datos negativos que existan desde la localidad [20] ; hasta [50], la respuesta guardar en la localidad siguiente. list p=16f877 ; list directive to define processor #include <p16f877.inc> ; processor specific variable definitions

; remaining code goes here CONTADOR EQU 20 RESPUESTA EQU 51 INDF EQU 00 ORG 0X00 MOVLW 20 ;CARGO W CON EL REGISTRO 20 MOVWF FSR ;TRANFIERO DE W AL REGISTRO FSR LAZO1 BTFSC FSR,7 ;PREGUNTO SI EL BIT 7 DE FSR ES CERO INCF CONTADOR,1; INCREMENTO EL CONTADOR SI FSR.7 NO ES CERO INCF FSR,1; INCREMENTO FSR MOVLW 51; CARGO W CON EL REGISTRO 50 XORWF FSR,0 ;REALIZO LA OPERACION OR ENTRE W Y FSR BTFSS STATUS,2 ;PREGUNTO SI Z ES UNO GOTO LAZO1 ;SI Z NO ES UNO SALTO AL LAZO1 MOVLW CONTADOR ;CARGO W CON EL REGISTRO CONTADOR MOVWF RESPUESTA ;TRANSFIERO W AL REGISTRO RESPUESTA NOP END EJERCICIO 4 ;Identificar si los bits de menos peso de una localidad son letras. ; Si es una letra guardar el dato en la localidad [22], ; Si es un nmero obtener el complemento A1 del nmero ;y guardar en la localidad [22]. list p=16f877 ; list directive to define processor

#include <p16f877.inc>

; processor specific variable definitions

; remaining code goes here LOCALIDAD EQU 20 BASE EQU 21 DATO EQU 22 ORG 0X00 MOVLW 09H MOVWF BASE MOVLW LOW LOCALIDAD MOVWF DATO MOVF DATO,0 SUBWF BASE,1 BTFSS STATUS,0 COMF DATO,1 MOVWF DATO NOP END EJERCICIO 5 ;Realizar un contador ascendente que inicie desde el dato de ;la localidad [50] hasta llegar a FF al llegar a FF se termina el lazo. list p=16f877 ; list directive to define processor #include <p16f877.inc> ; processor specific variable definitions

; remaining code goes here INICIO EQU 50 FIN EQU 21 ORG 0X00 MOVLW 050 ;CARGO W CON EL DATO 50 LAZO MOVWF INICIO ;TRANSFIERO W A EL REGISTRO INICIO DECF INICIO,1 ;DECREMENTO EL DATO DE LA LOCALIDAD INICIO MOVLW 0FF ;CARGO W CON EL DATO FFh XORWF INICIO,0 ;REALIZO LA OPERACION OR ENTRE W Y INICIO BTFSS STATUS,2 ;PREGUNTO SI Z ES UNO GOTO LAZO ;SI Z NO ES UNO SALTO A LAZO NOP END EJERCICIO 6 ;Contar los datos negativos mayores a 80h que existan entre ;las localidades [30] a [60], el resultado guardar en la localidad [25]. list p=16f877 ; list directive to define processor #include <p16f877.inc> ; processor specific variable definitions

; remaining code goes here

CONTADOR EQU 20 NUMERO EQU 21 INDF EQU 00 FSR EQU 04 ORG 0X00 MOVLW 30 ;CARGO W CON LA LOCALIDAD 30 MOVWF FSR ;TRANSFIERO W A FSR MOVLW 80H ;CARGO W CO EL DATO 80h MOVWF NUMERO ;TRANSFIERO EL DATO A LA LOCALIDAD NUMERO LAZO BTFSS INDF,7 ;PREGUNTO SI EL FSR,7 ES 1 GOTO LAZO1 INCF CONTADOR,1 ;SI FSR,7 ES UNO SUMO UNO AL CONTADOR LAZO1 MOVF INDF ;TRANSFIERO INDF A W INCF FSR; INCREMENTO EN 1 A FSR SUBWF NUMERO,1 ;RESTO W-NUMERO BTFSS STATUS,0 ;PREGUNTO SI CARRY ES IGUAL A 1 GOTO LAZO ;SI CARRY NO ES CERO SALTO A LAZO NOP END EJERCICIO 7 ;Intercambiar los 4 bits de mayor peso de un registro ;cualesquiera con los cuatro bits de menor peso, ;sin utilizar la instruccin SWAP f,d list p=16f877 ; list directive to define processor #include <p16f877.inc> ; processor specific variable definitions

; remaining code goes here RESPUESTA EQU 20 REGISTRO EQU 21 ORG 0X00 RLF REGISTRO,1 ;ROTAR HACIA LA IZQUIERDA EL REGISTRO (REGISTRO) RLF REGISTRO,1 ;ROTAR HACIA LA IZQUIERDA EL REGISTRO (REGISTRO) RLF REGISTRO,1 ;ROTAR HACIA LA IZQUIERDA EL REGISTRO (REGISTRO) RLF REGISTRO,1 ;ROTAR HACIA LA IZQUIERDA EL REGISTRO (REGISTRO) RLF REGISTRO,1 ;ROTAR HACIA LA IZQUIERDA EL REGISTRO (REGISTRO) MOVF REGISTRO,0 ;TRANSFIERO A W EL REGISTRO (REGISTRO) MOVWF RESPUESTA ;RANSFIERO DE W AL REGISTRO RESPUESTA NOP END EJERCICIO 8 ;Utilizando instrucciones de transferencia, determinar ;si el valor que tiene guardado un registro a sufrido variacin o cambio. list p=16f877 ; list directive to define processor #include <p16f877.inc> ; processor specific variable definitions

; remaining code goes here

VALOR EQU 25 SINCAMBIO EQU 26 CONCAMBIO EQU 27 ORG 0X00 MOVF VALOR ;TRANSFIERO A W EL VALOR DEL REGISTRO (VALOR) SUBWF VALOR ;REALIZO LA OPERACION OR ENTRE W Y VALOR BTFSS STATUS,2 ;PREGUNTO SI Z ES IGUALA 1 GOTO VARIACION ;SI Z ES DIFERENTE DE 1 SALTO A VARIACION MOVWF SINCAMBIO ;GUARDO EN EL REGISTRO SINCCAMBIO SI EL DATO NO CAMBIA VARIACION MOVWF CONCAMBIO ;GUARDO EN EL REGISTRO CON CAMBIO SI LA VARIABLE CAMBIA NOP END EJERCICIO 9 ; Elegir un registro cualesquiera y contar los nmeros de unos ;que conforman el dato. Si el nmero de unos es par, sumar el nmero ;de unos obtenido al dato y guardar en la localidad [28]. ;Si el nmero de unos es impar guardar en la localidad [30]. list p=16f877 ; list directive to define processor #include <p16f877.inc> ; processor specific variable definitions

; remaining code goes here VALOR EQU 27 CONTADOR EQU 26 PAR EQU 28 IMPAR EQU 30 FSR EQU 04 ORG 0X00 MOVLW 07H ;CARGO EN W EL DATO 07H MOVWF FSR ;TRANSFIERO DE W A FSR BTFSC VALOR,0 ;PREGUNTO SI VALOR,0 ES CERO INCF CONTADOR,1 ;INCREMENTO EL CONTADOR RLF VALOR,1 ;ROTAR HACIA LA IZQUIERDA EL REGISTRO (VALOR) LAZO RLF VALOR,1 ;ROTAR HACIA LA IZQUIERDA EL REGISTRO (VALOR) BTFSC VALOR,0 ;PREGUNTO SI VALOR,0 ES CERO INCF CONTADOR,1 ;INCREMENTO EL CONTADOR DECFSZ FSR ;DECREEMENTO FSR GOTO LAZO ;SALTO A LAZO BTFSC CONTADOR,0 ;PREGUNTO SI CONTADOR,0 ES CERO GOTO IMPARES; SI CONTADOR,0 NO ES CERO SALTO A IMPARES MOVF VALOR,0; TRANSFIERO DE VALORE A W ADDWF CONTADOR,1 ; SUMO W + CONTADOR MOVF CONTADOR,0 ;TRANSFIERO DE CONTADOR A W MOVWF PAR ;TRANSFIERO DE W A PAR GOTO FIN; SALTO A FIN IMPARES MOVF CONTADOR,0 ;TRANSFIERO A W EL REGISTRO CONTADOR MOVWF IMPAR ;TRANSFIERO W A IMPAR

FIN NOP END EJERCICIO 10 ;Realizar un ejercicio a su eleccin utilizando instrucciones ;de transferencia, aritmticas, y de salto. ;EJERCCIO ;Contar cuantos numeros pares hay desde la localidad [30] a la [40] ;y la respuesta que vaya a continuacion. list p=16f877 ; list directive to define processor #include <p16f877.inc> ; processor specific variable definitions

; remaining code goes here CONT EQU 41 FSR EQU 04 ESTADO EQU 03 INDF EQU 00 ORG 0X00 CLRF CONT ;PONGO EN CERO EL CONTADOR MOVLW 30 ;CARGO W CON EL DATO 30 MOVWF FSR ;TRANSFIERO DE W A FSR LAZO BTFSS INDF,0; PREGUNTO SI INDF,0 ES 1 INCF CONT,1 ;SI INDF,0 NO ES UNO ENCREMENTO EL CONTADOR INCF FSR,1 ;INCREMENTO FSR MOVLW 41 ;CARGO A WCO EL DATO 41 XORWF FSR,0 ;REALIZO LA OPERACION OR ENTRE W Y FSR BTFSS ESTADO,2 ;PREGUNTO SI Z ES IGUAL A 1 GOTO LAZO ;SALTO A LAZO NOP END

También podría gustarte