Está en la página 1de 2

PRENDER APAGAR UN LED PIC16F877A

ASSEMBLER
;Rotación de un bit 
;Mayo 21 2020

;Palabra de configuración 

__CONFIG    _CONFIG1, _LVP_OFF & _FCMEN_ON & _IESO_OFF & _BOR_OFF & _CPD_OFF &
_CP_OFF & _MCLRE_ON & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT
__CONFIG    _CONFIG2, _WRT_OFF & _BOR21V

;Librerias del MICROCONTROLADOR


LIST P=16f887
#include "p16f887.inc"

;**** Bloque de direcciones


cblock 0x20 ; 
counter1 ; Contador1 toma la posicion de memoria 0x20
counter2 ; Contador2 toma la posicion de memoria 0x21
endc ; Cerrar el bloque
;***************************************
org 0x0000 ; Vector de reset

banksel ANSEL ; acceso al banco ansel 


clrf ANSEL ; borra ansel 
clrf ANSELH ; habilita ansel como pin digital
banksel TRISB ; acceso a TRISB
clrf TRISB ; habilita el puerto B como salida digital
movlw B'00000010' ; Mueve una literal al registro W
movwf TRISA ;Activa el bit A1 como entrada 
banksel PORTB ; acceso al banco que contiene el puerto B
movlw B'00000001' ; mueve una litera al registro W
movwf PORTB ; se carga una literal al puerto B

lazo       ; bucle
rlf PORTB ; rota un bit a la izquierda 
call DELAY ; llama a la subrutina retardo 
lazo3      ;bucle 3
btfss PORTA,1         ;checa el estado del pin A1 
goto lazo3 ;        
goto lazo ; 

;
DELAY
clrf counter2 ; 
lazo1
clrf counter1 ; 
lazo2
decfsz counter1 ; decrementa el contador1
goto lazo2 ; 
decfsz counter2 ; decrementa el contador 2
goto lazo1 ; 
return ; 
end

También podría gustarte