Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Practica 2 Informe

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 13

PRACTICA NRO1

1. POR LOS LEDS CONECTADOS AL PUERTO B VISUALIZA EL VALOR DE UNA CONSTANTE, POR
EJEMPLO EL NUMERO BINARIO b’01010101’

lIST P=16f84A
INCLUDE <P16F84A.INC>
NUMERO EQU 0x0C
ORG 0
BSF STATUS,RP0
CLRF PORTB
BCF STATUS,RP0
;CODIGO
MOVLW B'01010101'
MOVWF NUMERO
MOVWF PORTB
END

2. LOS LEDS CONECTADOS AL NIBBLE BAJO DEL PUERTO B SE APAGAN Y LOS CONECTADOS
AL NIBBLE ALTO SE ENCIENDEN.

lIST P=16f84A
INCLUDE <P16F84A.INC>
LED EQU 0x0C
ORG 0
BSF STATUS,RP0
CLRF PORTB
BCF STATUS,RP0
;CODIGO
MOVLW B'11110000'
MOVWF LED
MOVWF PORTB
END

3. POR EL PUERTO B SE OBTIENE EL DATO DE LAS 5 LINEAS DEL PUERTO A AL QUE ESTA
CONECTADO UN ARRAY DE INTERRUPTORES. POR EJEMPLO, SI POR EL PUERTO A SE INTRODUCE “-
--11001”, POR EL PUERTO B APARECERA “XXX11001”(EL VALOR DE LAS TRES LINEAS SUPERIORES
NO IMPORTA).

lIST P=16f84A
INCLUDE <P16F84A.INC>
ORG 0
BSF STATUS,RP0
CLRF PORTB
MOVLW B'00011001'
MOVWF PORTA
BCF STATUS,RP0
;CODIGO
MOVF PORTA
MOVWF PORTB
END

4. EL PUERTO B, QUE ACTUA COMO SALIDA ES CONTROLADO POR EL BIT 0 DEL PUERTO A,
QUE ACTUA COMO ENTRADA. DE MANERA TAL QUE:

- SI EL BIT 0 DEL PORTA ES “1”, SE ENCIENDEN TODOS LOS LEDS DE SALIDA.

- SI EL BIT 0 DEL PORTA ES “0”, SE ENCIENDEN TODOS LOS LEDS DEL NIBBLE ALTO Y SE
APAGAN LOS BAJO.

lIST P=16f84A
INCLUDE <P16F84A.INC>
ORG 0
GOTO INICIO
ORG 4
INICIO
BSF STATUS,RP0
CLRF TRISB
MOVLW B'00001111'
MOVWF TRISA
BCF STATUS,RP0

;CODIGO
PROG BTFSC PORTA,0
GOTO UNO
GOTO CERO

UNO
MOVLW B'11111111'
MOVWF PORTB
GOTO PROG

CERO
MOVLW B'11110000'
MOVWF PORTB
GOTO PROG
END

5. COMPARA EL DATO DEL PUERTO DE ENTRADA PORTA Y UN NUMERO (POR EJEMPLO EL


13):

- SI (PORTA)=NUMERO, SE ENCIENDEN TODOS LOS LEDS DE SALIDA.

- SI (PORTA) Y NUMERO NO SON IGUALES, SE ACTIVAN LOS LEDS PARES DE SALIDA Y SE


APAGAN LOS IMPARES.

lIST P=16f84A
INCLUDE <P16F84A.INC>
NUMERO EQU D'13'
ORG 0

BSF STATUS,RP0
CLRF PORTB
MOVLW B'00011111'
MOVWF PORTA
BCF STATUS,RP0

;CODIGO
PRINCIPAL
MOVLW NUMERO
SUBWF PORTA,W
MOVLW B'11111111'
BTFSC STATUS,Z
GOTO OUT
MOVLW B'10101010'

OUT
MOVWF PORTB
GOTO PRINCIPAL
END
6. COMPARA EL DATO INTRODUCIDO POR EL PUERTO A QUE ACTUA COMO ENTRADA, UN
“NUMERO”:

- SI (PORTA) ES MAYOR O IGUAL QUE “NUMERO” SE ENCIENDEN TODOS LOS LEDS DE


SALIDA.

- SI (PORTA) ES MENOR QUE “NUMERO” SE ACTIVAN LOS LEDS PARES DE SALIDA.

LIST P=16f84A
INCLUDE <P16F84A.INC>
NUMERO EQU D'14'
ORG 0

BSF STATUS,RP0
CLRF PORTB
MOVLW B'00001111'
MOVWF PORTA
BCF STATUS,RP0

;CODIGO
PRINCIPAL
MOVLW NUMERO
SUBWF PORTA,W
MOVLW B'11111111'
BTFSC STATUS,Z
GOTO OUT
MOVLW B'10101010'

OUT
MOVWF PORTB
GOTO PRINCIPAL
END
7. COMPARA EL DATO DE PUERTO DE ENTRADA PORTA CON UN “NUMERO” (POR EJEMPLO
13):

- SI (PORTA) ES MAYOR QUE “NUMERO” SE ENCIENDEN TODOS LOS LEDS DE SALIDA.

- SI (PORTA) ES MENOR O IGUAL QUE “NUMERO” SE ACTIVAN LOS LEDS PARES DE SALIDA.

LIST P=16f84A
INCLUDE <P16F84A.INC>
NUMERO EQU D'14'
ORG 0

BSF STATUS,RP0
CLRF PORTB
MOVLW B'00001111'
MOVWF PORTA
BCF STATUS,RP0

;CODIGO
PRINCIPAL
MOVLW NUMERO
SUBWF PORTA,W
MOVLW B'11111111'
BTFSC STATUS,C
GOTO OUT
MOVLW B'01010101'

OUT
MOVWF PORTB
GOTO PRINCIPAL
END

8. COMPARA EL DATO DEL PUERTO DE ENTRADA PORTA CON UN “NUMERO” TRES


POSIBILIDADES:

- SI (PORTA) = NUMERO, SE ENCIENDEN TODOS LOS LEDS DE SALIDA.

- SI (PORTA) > NUMERO, SE ACTIVAN LOS LEDS PARES DE SALIDA.

- SI (PORTA) < NUMERO, SE ENCIENDEN LOS LEDS DEL NIBBLE ALTO Y SE APAGAN LOS DEL
BAJO.
HAY QUE DESTACAR QUE AL NO HABER INSTRUCCIONES DE COMPARACION, ESTAS SE REALIZAN
MEDIANTE RESTAS.

LIST P=16f84A
INCLUDE <P16F84A.INC>
NUMERO EQU D'14'
ORG 0

BSF STATUS,RP0
CLRF PORTB
MOVLW B'00001111'
MOVWF PORTA
BCF STATUS,RP0

;CODIGO
PRINCIPAL
MOVLW NUMERO
SUBWF PORTA,W

BTFSS STATUS,C
GOTO MENOR

BTFSC STATUS,Z
GOTO IGUALES
MOVLW B'10101010'
MOVWF PORTB
GOTO PRINCIPAL

MENOR MOVLW B'11110000'


MOVWF PORTB
GOTO PRINCIPAL
IGUALES MOVLW B'11111111'
MOVWF PORTB
GOTO PRINCIPAL
END

9. IMPLEMENTAR UNA TABLA DE LA VERDAD MEDIANTE EL MANEJO DE LAS TABLAS


GRABADAS EN ROM. POR EJEMPLO, LA TABLA SERA 3 ENTRADAS Y 6 SALIDAS TAL COMO LA
SIGUIENTE:

C B A S5 S4 S3 S2 S1 S0
0 0 0 0 0 1 0 1 0
0 0 1 0 0 1 0 0 1
0 1 0 1 0 0 0 1 1
0 1 1 0 0 1 1 1 1
1 0 0 1 0 0 0 0 0
1 0 1 0 0 0 1 1 1
1 1 0 0 1 0 1 1 1
1 1 1 1 1 1 1 1 1

LAS ENTRADAS C, B, A SE CONECTARAN A LAS LIENEAS DEL PUERTO A: RA2 (C), RA1 (0), RA0 (A).

LAS SALIDAS SE OBTIENEN EN EL PUERTO B:

RB5 (S5), RB4 (S4), RB3 (S3), RB2 (S2), RB1 (S1) Y RB0 (S0)

LIST P=16f84A
INCLUDE <P16F84A.INC>
ORG 0
BSF STATUS,RP0
CLRF PORTB
MOVLW B'00001111'
MOVWF PORTA
BCF STATUS,RP0

;CODIGO
PRINCIPAL
MOVF PORTA,W
ANDLW B'00000111'
CALL TABLA
MOVWF PORTB
GOTO PRINCIPAL

TABLA ADDWF PCL,F


RETLW B'00001010'
RETLW B'00001001'
RETLW B'00100011'
RETLW B'00001111'
RETLW B'00100000'
RETLW B'00000111'
RETLW B'00010111'
RETLW B'00111111'

END
PRACTICA NRO 2

ELABORE LOS SIGUIENTES PROGRAMAS EN LENGUAJE ASSEMBLER PARA EL PIC 16F84, con su
respectivo esquema electrónico y diagramas de flujo.

1.- Sumar en binario 00FF y 001B. Guardar el resultado en 0x20.


LIST P=16F84
INCLUDE <P16F84A.INC>
ORG 0
BCF STATUS,RP0
;PROGRAMA

MOVLW B'11111111'
ADDLW B'00011011'
MOVWF 0X20
END

2.- Restar dos números binarios y almacenar el resultado en la dirección 0x21


LIST P = 16F84
INCLUDE <P16F84.INC>

ORG 0
MOVLW B'00001111'
SUBLW B'00000001'
MOVWF 0X21
END
3.- Decrementar el valor 20 nueve veces y almacenarlo en la dirección 0x2A.

LIST P=16F84
INCLUDE <P16F84A.INC>
DESTINO EQU 0X2A ;DESTINO ESTA EN LA DIRECCION
;0X2A
CONT EQU 0X0D
ORG 0
MOVLW D'20'
MOVWF DESTINO
MOVLW D'10'
MOVWF CONT
RESTAR DECFSZ CONT
GOTO RESTAR20
GOTO FIN
RESTAR20 DECF DESTINO
GOTO RESTAR

FIN NOP
END
4.- Realizar un decrementador de 250 a 10 y que al llegar a 10 entre en un bucle
no operativo infinito.
LIST P=16F84
INCLUDE <P16F84A.INC>

NUM EQU 0X0C

ORG 0

MOVLW D'15'
MOVWF NUM
;MOVLW D'10'
RESTAR DECF NUM,1
MOVLW D'10'
SUBWF NUM
MOVWF 0X0D
BTFSS STATUS,Z
GOTO RESTAR
INFINI NOP
GOTO INFINI

END

5.- Que genere la serie de FIBONACI en sus primeros 11 Numeros. Usar como
Datos iniciales el 0 y 1. Los Numeros generados deben verse en la PUERTAB
donde se tienen conectados diodos led.

LIST P=16F84
INCLUDE <P16F84A.INC>
NUM1 EQU 0X0C
NUM2 EQU 0X0D
AUX EQU 0X0E

ORG 0
GOTO INICIO
ORG 5

BSF STATUS,RP0
CLRF PORTB ;CONFIG COMO SALIDA
BCF STATUS,RP0
INICIO MOVLW D'0'
MOVWF PORTB
MOVWF NUM1
MOVLW D'1'
MOVWF NUM2
MOVWF PORTB

VOLVER ADDWF NUM1,W


MOVWF AUX
MOVF NUM2,W
MOVWF PORTB
MOVWF NUM1
MOVF AUX,W
MOVWF NUM2
GOTO VOLVER

NOP

END

6.- Que encienda los leds del PUERTO B en forma secuencial uno a uno,
comenzando por el bit 7 y seguidamente descendiendo hasta el 0, luego que
apague todos los leds y se repita indefinidamente el ciclo.
LIST P=16F84
INCLUDE <P16F84A.INC>
ORG 0
BSF STATUS,RP0
CLRF PORTB
BCF STATUS,RP0
;PROGRAMA
REP MOVLW B'00000001'
MOVWF PORTB
MOVLW B'00000010'
MOVWF PORTB
MOVLW B'00000100'
MOVWF PORTB
MOVLW B'00001000'
MOVWF PORTB
MOVLW B'00010000'
MOVWF PORTB
MOVLW B'00100000'
MOVWF PORTB
MOVLW B'01000000'
MOVWF PORTB
MOVLW B'10000000'
MOVWF PORTB
MOVLW B'00000000'
MOVWF PORTB
GOTO REP
END

7.- Por el Puerto B se obtiene el dato del Puerto A multiplicado por 2, es necesario
colocar 5 switches en todas las lineas del puerto A y diodos led en las líneas del
puerto B.
LIST P= 16F84
INCLUDE <P16F84A.INC>
ORG 0
BSF STATUS,RP0
BSF PORTA,0
BSF PORTA,1
BSF PORTA,2
BSF PORTA,3
BSF PORTA,4
CLRF PORTB
BCF STATUS,RP0
;PROGRAMA

MOVLW PORTA
MOVWF 0X20
ADDWF 0X20,W
MOVWF PORTB
END

8.- Se tiene el No.03h en el registro 0Ch y el No. FFh en el registro 0Dh. Mientras
el No. en el registro 0Ch se va incrementando de una unidad en unidad, el No en
el registro 0Dh se va decrementando de una unidad en una unidad. El programa
deberá detenerse en un bucle no operativo infinito encendiendo todos los leds
conectados al puerto A cuando ambos Nos coincidan (el uno que va
incrementándose y el otro que va decrementandose).
LIST P = 16F84A
INCLUDE <P16F84A.INC>
NUM1 EQU 0X0C
NUM2 EQU 0X0D
ORG 0
GOTO INICIO
ORG 5
INICIO BSF STATUS,RP0
MOVLW B’00000000’
MOVWF PORTA
BCF STATUS,RP0
CLRF PORTA
BUCLE MOVLW 0X03
MOVWF NUM1
MOVLW 0X0A
MOVWF NUM2
BUCLE1 INCF NUM1,F
DECF NUM2,F
MOVWF NUM2
SUBWF NUM1,W
BTFSS STATUS,C
GOTO BUCLE1
MOVLW B’11111111’
MOVWF PORTA
REPITE GOTO REPITE
END
9.- Elaborar un programa para el PIC 16F84 que tiene conectado un cristal de
1MHZ.
Se tienen conectados 8 diodos led a la puerta B. El programa debe comenzar
mostrando el valor 00H en los leds de la puerta B y debe ir incrementándose en 2
unidades 127 veces; tras ello el programa debe entrar en un bucle no operativo
infinito. Los leds deben mostrar la información binaria cada incremento de 2
unidades.
INICIO BSF STATUS,RP0
CLRF TRISB
BCF STATUS,RP0
MOVLW D'127'
MOVWF CONTADOR
MOVLW D'0'
MOVWF DATO
MOVLW D'2';
MOVWF INCREMENTO
PRINCIPAL MOVF DATO,W
MOVWF PORTB
ADDWF INCREMENTO,W
MOVWF DATO
DECFSZ CONTADOR,F
GOTO PRINCIPAL
BUCLE_INFINITO
GOTO BUCLE_INFINITO
END
11.- Realizar un programa que genere Nos. pares y que cuando llegue a 50
decimal, encienda el led en la línea RA0.
LIST P= 16F84
INCLUDE <P16F84A.INC>
ORG 0
BSF STATUS,RP0

CLRF PORTB
BCF STATUS,RP0
;PROGRAMA
MOVLW D'25'
MOVWF 0X21
SUM MOVLW D'2'
MOVWF 0X20
ADDWF 0X20,W
DECFSZ 0X21
GOTO SUM
END
15.- Que instrucciones se utilizan para testear bits y para realizar saltos cuando un
resultado es cero en condiciones de incremento o decremento de registros, para el
PIC16X84?
Las instrucciones de salto son:
BTFSC F,D INSTRUCCIÓN QUE SALTA CUANDO F ES CERO EN D
16.- Cuantos bancos tiene la memoria de datos del PIC16F877 y cuantas puertas
de Entrada/Salida?
EL PIC 16F877 CUENTA CON 5 PUERTOS DE ENTRADA O SALIDA Y POSEE
CUATRO BANCOS DE MEMORIA
17.- Cuales recursos auxiliares cuenta el PIC 16F877, descríbalos y explíquelos.
POSEE EL SAVEBANK QUE NOS SIRVE PARA GUARDAR LOS ESTADOS DEL
BANCO QUE SE DESEA
19.- Cuantos registros de propósito especial y cuantos de propósito general tiene
el PIC16F84?
POSEE 22 REGISTROS DE PROPOSITO ESPECIAL
Y 68 DE PROPOSITO GENERAL

También podría gustarte