Sie sind auf Seite 1von 7

RESOLUCION DE LOS EJERCICIOS

Ejercicio 1-

;***********************************************************************
;Por el Puerto B se obtiene el dato de las cinco lneas del Puerto A al que est con
ectado un ;array de interruptores. Por ejemplo, si por el Puerto A se introduce
"---11001", por el Puerto B ;aparecer "xxx11001" (el valor de las tres lneas super
iores no importa).
;***********************************************************************
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
LIST P=16F84A ; microcontralador utilizado.
INCLUDE <P16F84A.INC>
;***********************************************************************
ORG 0
Inicio
bsf
STATUS,RP0 ; Acceso al Banco 1.
clrf
TRISB
; El Puerto B es configurado como salida.
movlw
b'00011111' ; El Puerto A es configurado como entrada.
movwf
TRISA
bcf
STATUS,RP0 ; Acceso al Banco 0.
Principal
movf
PORTA,W
; Carga los datos del Puerto A en el registro W.
movwf
PORTB
; Guarda los datos del registro W en el puerto B
goto
Principal
; Crea un loop.
END
; Fin.
;________________________________________________________________________
Ejercicio 2;***********************************************************************
; Por el Puerto B se obtiene el dato de las cinco lneas del Puerto A, al que est c
onectado
; un array de interruptores, sumndole el valor de una constante, por ejemplo 74.
; Es decir: (PORTB)=(PORTA)+K
;***********************************************************************
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
LIST P=16F84A ; Procesador utilizado.
INCLUDE <P16F84A.INC> ; Definicin de algunos operandos utilizados.
K EQU d'74'
; Defino una constante con el valor 74 en decimal
;***********************************************************************
ORG 0
Inicio
bsf
STATUS,RP0 ; Acceso al Banco 1.
clrf
TRISB ; El Puerto B es configurado como salida.
movlw b'00011111' ; El Puerto A es configurado como entrada.
movwf TRISA
bcf
STATUS,RP0 ; Acceso al Banco 0.
Principal
movf PORTA,W ; Carga los datos del Puerto A en el registro W.
addlw
K
; Suma K al registro W
movwf PORTB ; Guarda los datos del registro W en el puerto B

goto

Principal ; Crea un loop.

END
; Fin.
;________________________________________________________________________
Ejercicio 3;***********************************************************************
; Por el Puerto B se obtiene el dato del Puerto A multiplicado por 2.
; Es decir: (PORTB)=2(PORTA)=(PORTA)+(PORT A).
;***********************************************************************
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
LIST P=16F84A ; Procesador utilizado.
INCLUDE <P16F84A.INC> ; Definicin de algunos operandos utilizados.
;**********************************************************************
ORG 0
; El programa comienza en la direccin 0.
Inicio bsf
STATUS,RP0
; Pone a 1 el bit 5 del STATUS. Acceso al B
anco 1.
clrf
TRISB ; Las lneas del Puerto B se configuran como salidas.
movlw b'00011111'
movwf TRISA ; Las lneas del Puerto A como entradas.
bcf
STATUS,RP0 ; Pone a 0 el bit 5 de STATUS. Acceso al Banco 0.
Principal
movf
PORTA,W ; Carga el valor Puerto A en (W).
addwf PORTA,W ; (W)=(PORTA)+(PORTA)=2(PORTA).
movwf PORTB ; El contenido de W se deposita en el Puerto B.
goto
Principal ; Crea un bucle cerrado e infinito.
END

; Fin del programa.

;________________________________________________________________________
Ejercicio 4;***********************************************************************
;Por el Puerto B obtiene el dato del Puerto A, pero en la salida los bits pares
se fijan siempre a ;"1". El orden de los bits ser "b7 b6 b5 b4 b3 b2 b1 b0", sien
do los pares el b6, b4, b2 y el b0.
;Por ejemplo, si por el Puerto A se introduce el dato b'---01100', por el Puerto
B se visualiza ;b'01011101'. Observar que los bits pares estn a "1" (efectivame
nte: Puerto B = b'x1x1x1x1') y ;los impares permanecen con el dato del puerto de
entrada (efectivamente: Puerto A = b'---;x1x0x' y Puerto B = b'xxxx1x0x').
;***********************************************************************
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
LIST
P=16F84A ; Procesador utilizado.
INCLUDE <P16F84A.INC> ; Definicin de algunos operandos utilizados.
Mascara EQU b'01010101' ; Mscara de bits impares siempre a "0".
;***********************************************************************
ORG 0
; El programa comienza en la direccin 0.

Inicio bsf
STATUS,RP0 ; Pone a 1 el bit 5 del STATUS. Acceso al Banco 1.
clrf
TRISB ; Las lneas del Puerto B se configuran como salidas.
movlw b'00011111'
movwf TRISA ; Las 5 lneas del Puerto A como entrada.
bcf
STATUS,RP0 ; Pone a 0 el bit 5 de STATUS. Acceso al Banco 0.
Principal
movf PORTA,W ; Carga el registro de datos del Puerto A en W
iorlw Mascara ; Pone a "0" los bits pares.
movwf PORTB ; El contenido de W se deposita en la salida.
goto Principal ; Se crea un bucle cerrado e infinito.
END

; Fin del programa.

;________________________________________________________________________
Ejercicio 5;***********************************************************************
;Por el Puerto B obtiene el dato del Puerto A, pero en las salida los bits impar
es se fijan siempre a ;"0". El orden de los bits ser "b7 b6 b5 b4 b3 b2 b1 b0", s
iendo los impares el b7, b5, b3 y b1.
;Por ejemplo si por el Puerto A se introduce el dato b'---01100', por el Puerto
B se visualiza ;b'00000100'. Observar que los bits impares estn a "0" (efectivam
ente: Puerto B = b'0x0x0x0x') y ;los pares permanecen con el dato del puerto de
entrada (efectivamente: Puerto A = b'---0x1x0' ;y Puerto B = b'---0x1x0').
;***********************************************************************
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
LIST
P=16F84A ; Procesador utilizado.
INCLUDE <P16F84A.INC> ; Definicin de algunos operandos utilizados.
Mascara EQU b'01010101' ; Mscara de bits impares siempre a "0".
;***********************************************************************
ORG 0
; El programa comienza en la direccin 0.
Inicio bsf STATUS,RP0 ; Pone a 1 el bit 5 del STATUS. Acceso al Banco 1.
clrf TRISB
; Las lneas del Puerto B se configuran como salidas.
movlw b'00011111'
movwf TRISA ; Las 5 lneas del Puerto A como entrada.
bcf STATUS,RP0 ; Pone a 0 el bit 5 de STATUS. Acceso al Banco 0.
Principal
movf PORTA,W ; Carga el registro de datos del Puerto A en W
andlw Mascara ; Pone a "0" los bits pares.
movwf PORTB ; El contenido de W se deposita en la salida.
goto Principal
; Se crea un bucle cerrado e infinito.
END

; Fin del programa.

;________________________________________________________________________
Ejercicio 6;***********************************************************************
;Por el Puerto B se obtiene el dato del Puerto A invirtiendo los bits pares. Los
impares se dejan ;como en la entrada. El orden de los bits ser "b7 b6 b5 b4 b3 b

2 b1 b0", siendo los pares el b6, ;b4, b2 y el b0.


;Por ejemplo, si por el Puerto A se introduce "---11001", por el Puerto B aparec
er "xxx01100". ;Observar que los bits pares estn invertidos (efectivamente: Puert
o A = "---1x0x1" y Puerto B = ;"xxxx0x1x0") y en los impares permanece el dato d
el puerto de entrada
(efectivamente:
;Puerto A ;= "---x1x0x' y Puerto B = b'xxxx1x0x').
;Ayuda: Utiliza la funcin XOR y la mscara b'01010101'
;************************************************************************
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
LIST P=16F84A ; Procesador utilizado.
INCLUDE <P16F84A.INC> ; Definicin de algunos operandos utilizados.
Mascara EQU b'01010101' ; Mscara para invertir los bits pares mediante la
; funcin XOR con "1".
;************************************************************************
ORG 0
; El programa comienza en la direccin 0.
Inicio
bsf STATUS,RP0 ; Acceso al Banco 1.
clrf TRISB
; Las lneas del Puerto B se configuran como salida.
movlw b'00011111' ; Las 5 lneas del Puerto A se configuran como entrada.
movwf TRISA
bcf STATUS,RP0 ; Acceso al Banco 0.
Principal
movf PORTA,W ; Carga el registro de datos del Puerto A en W.
xorlw Mascara ; Invierte los bits pares, dejando igual los impares.
movwf PORTB ; El resultado se visualiza por el puerto de salida.
goto Principal
; Se crea un bucle cerrado e infinito.
END
; Fin del programa.
;________________________________________________________________________
Ejercicio 7;************************************************************************
;Por el Puerto B se obtiene el dato del Puerto A invertidos los unos y ceros. Po
r ejemplo, si por el ;Puerto A se introduce "---11001", por el Puerto B aparecer
"xxx00110" (no importa el estado de ;los tres bits superiores del Puerto B).
;************************************************************************
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
LIST
P=16F84A ; Procesador utilizado.
INCLUDE <P16F84A.INC> ; Definicin de algunos operandos utilizados.
;************************************************************************
ORG 0
; El programa comienza en la direccin 0.
Inicio
bsf
STATUS,RP0 ; Acceso al Banco 1.
clrf
TRISB ; Las lneas del Puerto B se configuran como salida.
movlw b'00011111' ; Las 5 lneas del Puerto A se configuran como entrada.
movwf TRISA
bcf
STATUS,RP0 ; Acceso al Banco 0.
Principal
comf
PORTA,W ; Invierte el contenido del Puerto A y el resultado lo
movwf PORTB ; lleva a la salida para que se visualice.
goto
Principal ; Crea un bucle cerrado e infinito.
END
; Fin del programa.
;________________________________________________________________________
Ejercicio 8-

;************************************************************************
; Por el Puerto B obtiene el dato del Puerto A intercambiando los nibbles alto y
bajo. Por
; ejemplo, si por el Puerto A se introduce "---11001" por el Puerto B aparecer "1
001xxx1".
;************************************************************************
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
LIST P=16F84A ; Procesador utilizado.
INCLUDE <P16F84A.INC> ; Definicin de algunos operandos utilizados.
;************************************************************************
ORG 0
; El programa comienza en la direccin 0.
Inicio
bsf
STATUS,RP0 ; Acceso al Banco 1.
clrf
TRISB ; Las lneas del Puerto B se configuran como salida.
movlw b'00011111' ; Las 5 lneas del Puerto A se configuran como entrada.
movwf TRISA
bcf
STATUS,RP0 ; Acceso al Banco 0.
Principal
swapf
PORTA,W ; Intercambia nibbles del Puerto A y el resultado lo
movwf PORTB ; lleva al Puerto B para que se visualice.
goto
Principal ; Crea un bucle cerrado e infinito.
END
; Fin del programa.
;________________________________________________________________________
Ejercicio 9;************************************************************************
; Por el Puerto B obtiene el dato del Puerto A desplazando un bit hacia la izqui
erda, por la
; derecha entrar un "1". Por ejemplo, si por el Puerto A se introduce "---11001",
por el
; Puerto B aparecer "xx110011" (no importa el estado de los dos bits superiores d
el Puerto B).
;************************************************************************ __CONF
IG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
LIST P=16F84A ; Procesador utilizado.
INCLUDE <P16F84A.INC> ; Definicin de algunos operandos utilizados.
;************************************************************************
ORG 0
; El programa comienza en la direccin 0.
Inicio
bsf
STATUS,RP0
; Acceso al Banco 1.
clrf
TRISB ; Las lneas del Puerto B se configuran como salida.
movlw b'00011111' ; Las 5 lneas del Puerto A se configuran como entrada.
movwf TRISA
bcf
STATUS,RP0
; Acceso al Banco 0.
Principal
bsf
STATUS,C ; Este es el "1" que entrar por la derecha.
rlf
PORTA,W ; Rota los bits una posicin a la izquierda y lo
movwf PORTB ; lleva al Puerto B para que se visualice.
goto
Principal ; Se crea un bucle cerrado e infinito.
END
; Fin del programa.
;________________________________________________________________________

Ejercicio 10;************************************************************************
; Por el Puerto B se obtiene el dato del Puerto A desplazando un bit hacia la de
recha, por
; la izquierda entrar un "0". Por ejemplo, si por el Puerto A se introduce "---11
001",
; por el Puerto B aparecer "0xxx1100".
;************************************************************************
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
LIST P=16F84A ; Procesador utilizado.
INCLUDE <P16F84A.INC> ; Definicin de algunos operandos utilizados.
;************************************************************************
ORG 0 ; El programa comienza en la direccin 0.
Inicio
bsf
STATUS,RP0 ; Acceso al Banco 1.
clrf
TRISB ; Las lneas del Puerto B se configuran como salida.
movlw b'00011111' ; Las 5 lneas del Puerto A se configuran como entrada.
movwf TRISA
bcf
STATUS,RP0 ; Acceso al Banco 0.
Principal
bcf
STATUS,C ; Este "0" es el que entrar por la izquierda.
rrf
PORTA,W ; Rota los bits una posicin a la derecha y lo
movwf PORTB ; lleva al Puerto B para que se visualice.
goto
Principal ; Se crea un bucle cerrado e infinito.
END
; Fin del programa.
;________________________________________________________________________
Ejercicio 11
;*******************************************************************************
***************************
;Ejercicio 11
;Por el Puerto B se obtiene el dato de las cinco lneas del Puerto A al que estn co
nectado un array de
;interruptores.Por ejemplo, si por el Puerto A se introduce "---11001", por el P
uerto B aparecer
;"xxx11001" (el valor de las tres lneas superiores no importa).
;Esta operacin la realizar una nica vez. Despus el programa entrar en modo "Standby"
o de bajo consumo
; del cual no podr salir despus.
;*******************************************************************************
***************************
LIST P=16f84a
INCLUDE <p16f84a.inc>
__CONFIG _XT_OSC & _PWRTE_ON & _CP_OFF & _WDT_OFF
errorlevel -302
;*******************************************************************************
***************************

ORG 0
;*******************************************************************************
***************************
;Configuro los puertos
;*******************************************************************************
***************************
bsf STATUS,RP0 ;Cambio al banco 1 para configurar los puertos.
clrf TRISA ;Borro lo del puerto A.
movlw b'00011111'
movwf TRISA ;Cargo como entrada 5 puertos del portA.
clrf PORTB ;Configuro el puerto B como salida.
bcf STATUS,RP0 ;Cambio al banco 0 de trabajo.
;*******************************************************************************
***************************
;Programa
MAIN
movlw PORTA
movwf PORTB
SLEEP
goto MAIN
END
;*******************************************************************************
***************************

Das könnte Ihnen auch gefallen