LIST p=16F877A
INCLUDE <P16F877A.INC> ;Librería del PIC16F877A
ORG 0x00 ; Inicio de programa
CONT1 EQU 0x20
CONT2 EQU 0x21
INICIO
BSF STATUS,RP0 ; Accede a banco 1
CLRF TRISB ; Configura todas las patitas de PORTB como salidas
BCF STATUS,RP0 ; Regresa a banco 0
ENCIENDELED
CLRF PORTB
MOVLW B'00000001'
MOVWF PORTB
CALL Retardo
MOVLW B'00000011'
MOVWF PORTB
CALL Retardo
MOVLW B'00000111'
MOVWF PORTB
CALL Retardo
MOVLW B'00001111'
MOVWF PORTB
CALL Retardo
GOTO ENCIENDELED
Retardo ; Rutina de retardo
MOVLW d'256'
MOVWF CONT1
REP1
MOVLW d'256'
MOVWF CONT2
REP2
DECFSZ CONT2,1 ; Decrementa el valor de CONT2 en 1 (3 instrucciones * 256 = 768)
GOTO REP2
DECFSZ CONT1,1 ; Decrementa el valor de CONT1 en 1 (768*256=0,2seg aprox)
GOTO REP1
Return
END ; Fin de programa