    ;Following is the code to switch on alternate LEDs for 1 seconds
     
     
    list p=16F84A
    #include <p16F84A.inc>
    __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
    ERRORLEVEL -302
     
     
    CBLOCK 0X0C
    TX ;
    COUNTSPI
    d1
    d2
    d3
    ENDC
     
    #define DATA1 PORTA,0
    #define CLOCK PORTA,1
    #define LATCH PORTA,2
     
    ORG 0X00
    GOTO MAIN
     
    #include "HC595.INC" ;;Thanks to Nebojsa Matic of mikroElektronika for idea
     
    ;;;;;;;;;;;;;;;;;1 sec delay;;;;;;;;;;;;;;;;;;;;;;;
    DELAY1s
     
     
        ;999990 cycles
        movlw 0x07
        movwf d1
        movlw 0x2F
        movwf d2
        movlw 0x03
        movwf d3
    Delay_01
     
        decfsz d1, f
        goto $+2
        decfsz d2, f
        goto $+2
        decfsz d3, f
        goto Delay_01
     
        ;6 cycles
        goto $+1
        goto $+1
        goto $+1
     
        ;4 cycles (including call)
        return
     
    MAIN
     
        BSF STATUS,RP0
        MOVLW B'00000'
        MOVWF TRISA
        BCF STATUS,RP0
        CLRF PORTA
    LUPHR
     
        CLRF PORTA
        MOVLW B'10101010'
        MOVWF TX
        HC595 TX,COUNTSPI
        CALL DELAY1s
        CLRF PORTA
        MOVLW B'01010101'
        MOVWF TX
        HC595 TX,COUNTSPI
        CALL DELAY1s
        GOTO LUPHR
        END
