Está en la página 1de 4

EJERCICIO 1

Desarrollar un programa para restar dos operandos (en base


decimal), un operando ingresa por el nibble bajo del puerto B y
el otro por el nibble alto del mismo puerto. El resultado se
obtiene en el puerto A.
LIST P=16F877
RADIX
HEX
INCLUDE P16F877.INC
org
org

0x00
goto
0x05

INICIO

INICIO
;-- CONFIGURACION DE PUERTOS --CLRF STATUS
BSF
STATUS,5
BCF
STATUS,6
MOVLW
b'00000111'
MOVWF
ADCON1
MOVLW
b'00000000'
MOVWF
TRISA
MOVLW
b'11111111'
MOVWF
TRISB
MOVLW
b'00000000'
MOVWF
TRISC
;-- CODIGO DE PROGRAMA ---LEER
BANKSEL PORTB
MOVF
PORTB,0
ANDLW
0X0F
MOVWF
H'20'
SWAPF
PORTB,0
ANDLW
0X0F
MOVWF
H'21'
SUBWF
H'20',0
BTFSC
STATUS,0
GOTO RESTA_NORMAL
GOTO RESTA_NEGATIVA
RESTA_NORMAL
MOVWF
PORTA

MOVLW
MOVWF
GOTO

0X00
PORTC
LEER

RESTA_NEGATIVA
MOVLW
0X01
MOVWF
PORTC
MOVF
H'20',0
SUBWF
H'21',0
MOVWF
PORTA
GOTO LEER
end.
EJERCICIO 2
Desarrollar un programa para el microcontrolador PIC16F84A, que realice la
siguiente tarea:
Por el puerto B se obtiene el dato introducido por el puerto A, pero los bits pares de
la salida se fijan siempre a 1. El orden de los bits ser b7 b6 b5 b4 b3 b2 b1 b0,
siendo los pares el b6, b4, b2 y b0. Por ejemplo, si por el puerto A se introduce el
dato ' 0 1 1 0 0 ', por el puerto B se visualiza ' 1 1 1 0 1 '. En el ejemplo se observa
que los bits impares permanecen con el dato del puerto de entrada.
;ZONA DE DATOS
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
LIST
P=16F877
INCLUDE
P16F877.INC
;ZONA DE CODIGOS
org
0x00
goto Inicio
org
0x05
Inicio
bsf
movlw
movwf
movlw
movwf
bcf
Principal
movf
movwf
andlw
movwf

STATUS,RP0
b'00000000'
TRISB
b'11111111'
TRISA
STATUS,RP0
PORTA,W
H'0C'
b'10101010'
H'0C'

addlw
andlw
movwf
goto

b'01010101'
b'00011111'
PORTB
Principal

END
EJERCICIO 3
Al puerto B se conectan dos displays de siete segmentos a travs de decodificadores
BCD para mostrar la salida indicada en la tabla 1.
Disear un programa cuya salida corresponda conforme a lo indicado en la tabla 1.
Los pines Ra2 y Ra1 determinan el valor de salida. Programar para el PIC16F877A.

LIST P=16F877
RADIX
HEX
INCLUDE
P16F877.inc
ORG

0X00
GOTO

ORG

INICIO
0X05

INICIO
;-- CONFIGURACION DE PUERTOS --CLRF STATUS
BSF
STATUS,5
BCF
STATUS,6
MOVLW
b'00000111'
MOVWF
ADCON1
MOVLW
b'00000000'
MOVWF
TRISB
MOVLW
b'00000111'
MOVWF
TRISA

;-- CODIGO DE PROGRAMA --LEER


BANKSEL PORTA
BTFSC
PORTA,2
GOTO
BIT2_UNO
GOTO
BIT2_CERO
BIT2_CERO
BTFSC
PORTA,1
GOTO
BIT2CERO_BIT1UNO
GOTO
BIT2CERO_BIT1CERO
BIT2CERO_BIT1CERO
MOVLW
0X00
MOVWF
PORTB
GOTO
LEER
BIT2CERO_BIT1UNO
MOVLW
0X01
MOVWF
PORTB
GOTO
LEER
BIT2_UNO
BTFSC
GOTO
GOTO

PORTA,1
BIT2UNO_BIT1UNO
BIT2UNO_BIT1CERO

BIT2UNO_BIT1CERO
MOVLW
0X02
MOVWF
PORTB
GOTO
LEER
BIT2UNO_BIT1UNO
MOVLW
0X03
MOVWF
PORTB
GOTO
LEER
END

También podría gustarte