Está en la página 1de 5

EJERCICIO 1

__CONFIG _CP_OFF& _WDT_OFF&_PWRTE_ON&_XT_OSC ;configuracion principal


LIST P=16F877
INCLUDE<P16F877A.INC> ;nombre del pic a usar

;Enciende los leds pares o impares del puerto B de acuerdo al botón presionado
; en puerto A (RA0=pares; RA1=impares).

pa EQU b'10101010' ; es una constante que va a indicar los led par


imp EQU b'01010101' ;es una constante que va a indicar los impares

org 0 ;inicia en la posicion 0

INICIO ;declaracion de entradas y salidas

bsf STATUS,RP0 ;Pone el alto el bit 5 del reg STATUS,ingreso al banco 1


clrf TRISB ;TRISB declarado como salida
movlw b'00011' ; como entrada RA0 Y RA1
movwf TRISA ;la literal la cargo a W y se definen las E de TRISA
movlw 0x06 ;apaga el convertidor analogico digital
movwf ADCON1 ;off el convertidor analogico genera
bcf STATUS,RP0 ;pone en bajo el bit 5 del STATUS regresa al banco 0

PRINCIPAL

btfsc PORTA,0 ;revisa el bit 0 del puerto A y pregunta si es cero si es asi


;salta una instruccion ,si es 1 se pasa a la siguiete
goto PARES
btfsc PORTA,1;;revisa el bit 1 del puerto A y pregunta si es cero si es asi
;salta una instruccion ,si es 1 se pasa a la siguiete
goto IMPARES

PARES
movlw pa ;pa esta definido como una constante a si que este valor se mueve
;a w
movwf PORTB ;lo que esta en W lo muestra en PORTB
clrw ;limpia el registro W
goto PRINCIPAL ;una vez mostrado el resultaso vuelva al programa principal.

IMPARES
movlw imp ;mueve la constante pa(pares a w)
movwf PORTB ;lo que esta en W lo muestra en PORTB
clrw ;limpia resistro w
goto PRINCIPAL ;una vez mostrado el resultaso vuelva al programa principal.

END
EJERCICIO 2
__CONFIG _CP_OFF& _WDT_OFF&_PWRTE_ON&_XT_OSC ;configuracion principal
LIST P=16F877
INCLUDE<P16F877A.INC>;nombre del pic a usar

; Lee las tres líneas más bajas del puerto A, que fijan la cantidad del número;de
;LEDs a iluminar. Por ejemplo, si (PORTA)=b??00101? (cinco) se
;encenderán cinco diodos LED ; (D4, D3, D2, D1 y D0)
org 0
INICIO
bsf STATUS ,RP0 ;Pone el alto el bit 5 del reg STATUS,ingreso al banco 1
clrf TRISB ;TRISB declarado como salida
movlw b'0011111';PORTA como entrada
movwf TRISA ;la literal la cargo a W y se definen las E de TRISA
movlw 0x06 ;apaga el convertidor analogico digital
movwf ADCON1;off el convertidor analogico genera
bcf STATUS,RP0 ;pone en bajo el bit 5 del STATUS regresa al banco 0

PRINCIPAL
movf PORTA,W;lee el puerto A y se almacena en w
andlw b'00111'; hace la op ANd con el reg w para quedarme con los 3 bits bajos
;como todas estan en 11111 entonces con el and se vuelve 0
;para encender los led dependiendo el numero , se hace una tabla
;la cual se manda a llamar y el resultado lo va mostrando en PORTB que son salidas
call T_LED;llama a la tabla
movwf PORTB ;el resultado lo manda a PORTB
goto PRINCIPAL ;regresa a principal

;;;;T A B L A;;;;;;
T_LED

addwf PCL,f
retlw b'00000000' ; Todos apagados.
retlw b'00000001' ; D0 encendido
retlw b'00000011' ;D1,D0 encendido
retlw b'00000111';D2,D1,D0 encendido
retlw b'00001111';.....
retlw b'00011111';......
retlw b'00111111';.....
retlw b'01111111';;;;todos encendidos

END

DIAGRAMA DE CONEXIÓN , ENTRADAS/SALIDAS


Para la entradas de este circuito se utilizaron resistencias pullup , esto con el fin de
garantizar un 1 cuando este en reposo y al presionarlo cambia de estado ,es decir a 0 , por lo
cual cuando se presione mandara un 0 y se hará el cambio de estado el cual va a determinar
el valor de la salida.
Para las salidas se utilizo active high para garantizar que cuando suceda un cambio de estado el
led enciende.

Ejercicio 1:

Ejercicio 2

COMPROBACION DE LA FUNCIONALIDAD DE LOS EJERCICIOS

Ejercicio1
Ejercicio 2

También podría gustarte