Está en la página 1de 7

1.

Utilizando los 8 bits del puerto B (PIC16F8A4) como salidas a diodos LED
y 3 bits del puerto A como entradas de pulsadores; de esta forma cree un
programa que decodifique las entradas del pulsador de tal forma que se
cumpla que por cada combinación 23de las entradas se encienda un diodo
LED que defina el número en decimal.
Código:
list p=16f84a
include<p16f84a.inc>
__CONFIG _CP_OFF & _XT_OSC
;CONFIGURACION DE PUERTOS

ORG 0 ;se coloca un inicio en posicion de memoria


BSF STATUS,RP0 ; ingresamos al banco de memoria 00
CLRF PORTB ;colocamos como salidas los pines b
MOVLW b'00001111' ;colocar como entradas el puerto a
MOVWF TRISA ;mueva el valor anterior colocalo en el puerto a
BCF STATUS,RP0 ;salir del banco de memoria

PRINCIPAL
BTFSS PORTA,0 ;comparacion del puerto a0
GOTO SECUENCIA1
GOTO SECUENCIA0

SECUENCIA0
BTFSS PORTA,1 ; comapracion del puerto a1
GOTO SECUENCIA4
GOTO SECUENCIA5
SECUENCIA1
BTFSS PORTA,1 ;comparacion del puerto a1
GOTO SECUENCIA2
GOTO SECUENCIA3
SECUENCIA2 ;comparacion del puerto a2
BTFSS PORTA,2
GOTO LED7
GOTO LED3
SECUENCIA3 ;comparacion del puerto a2
BTFSS PORTA,2
GOTO LED5
GOTO LED1
SECUENCIA4 ;comparacion del puerto a2
BTFSS PORTA,2
GOTO LED6
GOTO LED2
SECUENCIA5 ;comparacion del puerto a2
BTFSS PORTA,2
GOTO LED4
GOTO LED0

LED7 ;muestra en el puerto b el valor definido para la secuencia


respectiva
MOVLW B'00000001'
MOVWF PORTB
GOTO PRINCIPAL
LED6 ;muestra en el puerto b el valor definido para la secuencia
respectiva
MOVLW B'00000010'
MOVWF PORTB
GOTO PRINCIPAL
LED5 ;muestra en el puerto b el valor definido para la secuencia
respectiva
MOVLW B'00000100'
MOVWF PORTB
GOTO PRINCIPAL
LED4 ;muestra en el puerto b el valor definido para la secuencia respectiva
MOVLW B'00001000'
MOVWF PORTB
GOTO PRINCIPAL
LED3 ;muestra en el puerto b el valor definido para la secuencia respectiva
MOVLW B'00010000'
MOVWF PORTB
GOTO PRINCIPAL
LED2 ;muestra en el puerto b el valor definido para la secuencia respectiva
MOVLW B'00100000'
MOVWF PORTB
GOTO PRINCIPAL
LED1;muestra en el puerto b el valor definido para la secuencia respectiva
MOVLW B'01000000'
MOVWF PORTB
GOTO PRINCIPAL
LED0 ;muestra en el puerto b el valor definido para la secuencia respectiva
MOVLW B'10000000'
MOVWF PORTB
GOTO PRINCIPAL
END
MOVLW B'00000111'
MOVWF PORTB
GOTO PRINCIPAL
LED6 ;muestra en el puerto b el valor definido para la secuencia respectiva
MOVLW B'00000011'
MOVWF PORTB
GOTO PRINCIPAL
LED7 ;muestra en el puerto b el valor definido para la secuencia respectiva
MOVLW B'00000001'
MOVWF PORTB
GOTO PRINCIPAL
END

list p=16f84a
include<p16f84a.inc>
__CONFIG _CP_OFF & _XT_OSC
;CONFIGURACION DE PUERTOS

ORG 0
BSF STATUS,RP0
CLRF PORTB
MOVLW b'00001111'
MOVWF TRISA
BCF STATUS,RP0

PRINCIPAL
BTFSS PORTA,0
GOTO SECUENCIA1
GOTO SECUENCIA0

SECUENCIA0
BTFSS PORTA,1
GOTO SECUENCIA4
GOTO SECUENCIA5
SECUENCIA1
BTFSS PORTA,1
GOTO SECUENCIA2
GOTO SECUENCIA3

SECUENCIA2
BTFSS PORTA,2
GOTO LED7
GOTO LED3
SECUENCIA3
BTFSS PORTA,2
GOTO LED5
GOTO LED1
SECUENCIA4
BTFSS PORTA,2
GOTO LED6
GOTO LED2
SECUENCIA5
BTFSS PORTA,2
GOTO LED4
GOTO LED0

LED0 ;muestra en el puerto b el valor definido para la secuencia respectiva


MOVLW B'11111111'
MOVWF PORTB
GOTO PRINCIPAL
LED1 ;muestra en el puerto b el valor definido para la secuencia respectiva
MOVLW B'01111111'
MOVWF PORTB
GOTO PRINCIPAL
LED2 ;muestra en el puerto b el valor definido para la secuencia respectiva
MOVLW B'00111111'
MOVWF PORTB
GOTO PRINCIPAL
LED3 ;muestra en el puerto b el valor definido para la secuencia respectiva
MOVLW B'00011111'
MOVWF PORTB
GOTO PRINCIPAL
LED4 ;muestra en el puerto b el valor definido para la secuencia respectiva
MOVLW B'00001111'
MOVWF PORTB
GOTO PRINCIPAL
LED5 ;muestra en el puerto b el valor definido para la secuencia respectiva
list p=16f84a
include<p16f84a.inc>
__CONFIG _CP_OFF & _XT_OSC
;CONFIGURACION DE PUERTOS

ORG 0
BSF STATUS,RP0
CLRF PORTB
MOVLW b'00001111'
MOVWF TRISA
BCF STATUS,RP0

PRINCIPAL
BTFSS PORTA,0
GOTO SECUENCIA1
GOTO SECUENCIA0

SECUENCIA0
BTFSS PORTA,1
GOTO SECUENCIA4
GOTO SECUENCIA5
SECUENCIA1
BTFSS PORTA,1
GOTO SECUENCIA2
GOTO SECUENCIA3
SECUENCIA2
BTFSS PORTA,2
GOTO LED7
GOTO LED3
SECUENCIA3
BTFSS PORTA,2
GOTO LED5
GOTO LED1
SECUENCIA4
BTFSS PORTA,2
GOTO LED6
GOTO LED2
SECUENCIA5
BTFSS PORTA,2
GOTO LED4
GOTO LED0

LED0
MOVLW B'00011000'
MOVWF PORTB
GOTO PRINCIPAL
LED1
MOVLW B'00111100'
MOVWF PORTB
GOTO PRINCIPAL
LED2
MOVLW B'01100110'
MOVWF PORTB
GOTO PRINCIPAL
LED3
MOVLW B'01100110'
MOVWF PORTB
GOTO PRINCIPAL
LED4
MOVLW B'11000011'
MOVWF PORTB
GOTO PRINCIPAL
LED5
MOVLW B'11000011'
MOVWF PORTB
GOTO PRINCIPAL
LED6
MOVLW B'10000001'
MOVWF PORTB
GOTO PRINCIPAL
LED7
MOVLW B'10000001'
MOVWF PORTB
GOTO PRINCIPAL
END
4. Sin necesidad de pulsadores, configure todos los pines de los puertos A y B, MOVWF PORTA
como salidas conectando Leds; diseñe un sistema generador de ciclos (utilice el CALL RETARDO
set de instrucciones del PIC según el Datasheet), que permita, con retardos ;
generar la siguiente secuencia de desplazamiento de luces.
MOVLW B'00001000'
MOVWF PORTB
MOVLW B'00000000'
MOVWF PORTA
CALL RETARDO
;
MOVLW B'00010000'
MOVWF PORTB
MOVLW B'00000000'
MOVWF PORTA
CALL RETARDO
;
MOVLW B'00100000'
MOVWF PORTB
MOVLW B'00000000'
MOVWF PORTA
CALL RETARDO
;
MOVLW B'01000000'
MOVWF PORTB
MOVLW B'00000000'
MOVWF PORTA
CALL RETARDO
;
MOVLW B'10000000'
MOVWF PORTB
list p=16f84a MOVLW B'00000000'
include<p16f84a.inc> MOVWF PORTA
__CONFIG _CP_OFF & _XT_OSC CALL RETARDO

TIEMPO EQU 0X0C


TIEMPO2 EQU 0X0D ;SEGUNDA PARTE

;CONFIGURACION DE PUERTOS MOVLW B'11111111'


MOVWF PORTB
ORG 0 MOVLW B'11111111'
BSF STATUS,RP0 MOVWF PORTA
CLRF PORTB CALL RETARDO
CLRF PORTA ;
BCF STATUS,RP0 MOVLW B'01111111'
MOVWF PORTB
PRINCIPAL MOVLW B'11111111'
MOVLW B'00000000' MOVWF PORTA
MOVWF PORTB CALL RETARDO
MOVLW B'00000001' ;
MOVWF PORTA MOVLW B'10111111'
CALL RETARDO MOVWF PORTB
; MOVLW B'11111111'
MOVLW B'00000000' MOVWF PORTA
MOVWF PORTB CALL RETARDO
MOVLW B'00000010' ;
MOVWF PORTA MOVLW B'11011111'
CALL RETARDO MOVWF PORTB
; MOVLW B'11111111'
MOVLW B'00000000' MOVWF PORTA
MOVWF PORTB CALL RETARDO
MOVLW B'00000100' ;
MOVWF PORTA MOVLW B'11101111'
CALL RETARDO MOVWF PORTB
; MOVLW B'11111111'
MOVLW B'00000000' MOVWF PORTA
MOVWF PORTB CALL RETARDO
MOVLW B'00001000' ;
MOVWF PORTA MOVLW B'11110111'
CALL RETARDO MOVWF PORTB
; MOVLW B'11111111'
MOVLW B'00000000' MOVWF PORTA
MOVWF PORTB CALL RETARDO
MOVLW B'00010000' ;
MOVWF PORTA MOVLW B'11111011'
CALL RETARDO MOVWF PORTB
; MOVLW B'11111111'
MOVWF PORTA
MOVLW B'00000001' CALL RETARDO
MOVWF PORTB ;
MOVLW B'00000000' MOVLW B'11111101'
MOVWF PORTA MOVWF PORTB
CALL RETARDO MOVLW B'11111111'
; MOVWF PORTA
MOVLW B'00000010' CALL RETARDO
MOVWF PORTB
MOVLW B'00000000' ;
MOVWF PORTA MOVLW B'11111110'
CALL RETARDO MOVWF PORTB
; MOVLW B'11111111'
MOVLW B'00000100' MOVWF PORTA
MOVWF PORTB CALL RETARDO
MOVLW B'00000000' ;
MOVLW B'11111111'
MOVWF PORTB
MOVLW B'11101111' ;CONFIGURACION DE PUERTOS
MOVWF PORTA
CALL RETARDO ORG 0
; BSF STATUS,RP0
MOVLW B'11111111' CLRF PORTB
MOVWF PORTB MOVLW b'00001111'
MOVLW B'11110111' MOVWF TRISA
MOVWF PORTA BCF STATUS,RP0
CALL RETARDO
; PRINCIPAL
MOVLW B'11111111' BTFSS PORTA,0
MOVWF PORTB GOTO SECUENCIA0
MOVLW B'11111011' GOTO SECUENCIA1
MOVWF PORTA
CALL RETARDO SECUENCIA0
; BTFSS PORTA,1
MOVLW B'11111111' GOTO SECUENCIA3
MOVWF PORTB GOTO SECUENCIA2
MOVLW B'11111101' SECUENCIA1
MOVWF PORTA BTFSS PORTA,1
CALL RETARDO GOTO SECUENCIA5
; GOTO SECUENCIA4
MOVLW B'11111111'
MOVWF PORTB SECUENCIA2
MOVLW B'11111110' BTFSS PORTA,2
MOVWF PORTA GOTO SECUENCIA7
CALL RETARDO GOTO SECUENCIA6
SECUENCIA3
RETARDO BTFSS PORTA,2
MOVLW D'180' GOTO SECUENCIA9
MOVWF TIEMPO GOTO SECUENCIA8
DEC DECFSZ TIEMPO
GOTO DEC1 SECUENCIA4
RETURN BTFSS PORTA,2
DEC1 MOVLW D'180' GOTO SECUENCIA11
MOVFW TIEMPO2 GOTO SECUENCIA10
DEC3 DECFSZ TIEMPO2 SECUENCIA5
GOTO DEC3 BTFSS PORTA,2
GOTO DEC GOTO SECUENCIA13
END GOTO SECUENCIA12
SECUENCIA6
BTFSS PORTA,3
GOTO SEIS
GOTO CATORCE
SECUENCIA7
BTFSS PORTA,3
GOTO DOS
GOTO DIEZ
SECUENCIA8
BTFSS PORTA,3
GOTO CUATRO
GOTO DOCE
SECUENCIA9
BTFSS PORTA,3
GOTO CERO
GOTO OCHO
SECUENCIA10
BTFSS PORTA,3
GOTO SIETE
GOTO QUINCE
SECUENCIA11
BTFSS PORTA,3
GOTO TRES
GOTO ONCE

SECUENCIA12
BTFSS PORTA,3
GOTO CINCO
GOTO TRECE

SECUENCIA13
BTFSS PORTA,3
GOTO UNO
GOTO NUEVE

CERO
MOVLW b'00111111'
MOVWF PORTB
GOTO PRINCIPAL

UNO
MOVLW b'00000110'
MOVWF PORTB
GOTO PRINCIPAL
5. En un Display de 7 segmentos conectado al puerto B se visualiza la cantidad DOS
leída por el puerto A, así si la entrada se lee ---0101, el Display visualizará “5”, MOVLW b'01011011'
también tendrá la posibilidad de visualizar números hexadecimales. MOVWF PORTB
list p=16f84a GOTO PRINCIPAL
include<p16f84a.inc> TRES
__CONFIG _CP_OFF & _XT_OSC MOVLW b'01001111'
MOVWF PORTB 6. Generar un Programa que genere por un puerto de salida, una señal que se
GOTO PRINCIPAL encienda durante (400 ms) y se apague durante 300 ms. Debe visualizarse en
CUATRO un LED conectado directamente a un puerto de salida, o directamente visualizar
MOVLW b'01100110' la señal en el Osciloscopio.
MOVWF PORTB
GOTO PRINCIPAL list p=16f84a
CINCO include<p16f84a.inc>
MOVLW b'01101101' __CONFIG _CP_OFF & _XT_OSC
MOVWF PORTB
GOTO PRINCIPAL TIEMPO EQU 0X0C
SEIS TIEMPO2 EQU 0X0D
MOVLW b'01111101' ;CONFIGURACION DE PUERTOS
MOVWF PORTB
GOTO PRINCIPAL ORG 0
SIETE BSF STATUS,RP0
MOVLW b'00000111' CLRF PORTB
MOVWF PORTB CLRF PORTA
GOTO PRINCIPAL BCF STATUS,RP0
OCHO
MOVLW b'01111111' PRINCIPAL
MOVWF PORTB MOVLW B'00000001'
GOTO PRINCIPAL MOVWF PORTA
NUEVE CALL RETARDO
MOVLW b'01100111' MOVLW B'00000000'
MOVWF PORTB MOVWF PORTA
GOTO PRINCIPAL CALL RETARDO
DIEZ ;
MOVLW b'01110111' RETARDO
MOVWF PORTB MOVLW D'250'
GOTO PRINCIPAL MOVWF TIEMPO
ONCE DEC DECFSZ TIEMPO
MOVLW b'01111100' GOTO DEC1
MOVWF PORTB RETURN
GOTO PRINCIPAL DEC1 MOVLW D'250'
DOCE MOVFW TIEMPO2
MOVLW b'00111001' DEC3 DECFSZ TIEMPO2
MOVWF PORTB GOTO DEC3
GOTO PRINCIPAL GOTO DEC
TRECE END
MOVLW b'01011110'
MOVWF PORTB
GOTO PRINCIPAL
CATORCE
MOVLW b'01111001'
MOVWF PORTB
GOTO PRINCIPAL
QUINCE
MOVLW b'01110001'
MOVWF PORTB
GOTO PRINCIPAL

END
7. Comparar el dato del puerto de entrada PORTA con un número (por ejemplo,
el 13), pueden darse dos Posibilidades:
a) Si (PORTA) es mayor o igual que “NUMERO” se encienden los LEDS
b) Si (PORTA) diferente a NUMERO, se activan los LEDS pares y se apagan los
Impares.

list p=16f84a
include<p16f84a.inc>
__CONFIG _CP_OFF & _XT_OSC

NUMERO EQU B'00001000'

;CONFIGURACION DE PUERTOS

ORG 0
BSF STATUS,RP0
CLRF PORTB
MOVLW b'00001111'
MOVWF TRISA
BCF STATUS,RP0

PRINCIPAL
MOVLW NUMERO
SUBWF PORTA,W
MOVLW B'01010101'
BTFSC STATUS,C
MOVLW B'11111111'
BTFSC STATUS,Z
MOVLW B'11111111'
MOVWF PORTB
GOTO PRINCIPAL
END

También podría gustarte