	list p=16F886;
	errorlevel -302
#include <p16F886.inc>
		;__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
		__CONFIG _CONFIG1 & _CP_OFF & _WDT_OFF & _PWRTE_ON 
		__CONFIG _CONFIG2 & _XT_OSC
w EQU 0
f EQU 1
Speed_value EQU D'5'
Counter EQU H'0C'
Shift_counter EQU H'0D'
W_temp EqU H'0E'
Status_temp EQU H'0F'
Flag_register EQU H'10'
#define shift Flag_register,0
	 	ORG H'0000'
		goto start
 		ORG H'0004'
 		goto Int_Service
start  	bsf STATUS,RP0
		movlw B'10010111'
		movwf OPTION_REG
		bcf STATUS,RP0
		clrf PORTB
		bsf STATUS,RP0
		clrf TRISB
		bcf STATUS,RP0
		clrf TMR0
		movlw B'10100000'
		movwf INTCON
		clrf Flag_register
		movlw Speed_value
		movwf Counter
		goto main
Int_Service
		movwf W_temp
		swapf STATUS,w
		movwf Status_temp
		btfss INTCON,T0IF
		goto end_int
TMR0_int
		decfsz Counter,f
		goto end_int
		bsf shift
		movlw Speed_value
		movwf Counter
end_int
		bcf INTCON,T0IF
		swapf Status_temp,w
		movwf STATUS
		swapf W_temp,f
		swapf W_temp,w
		retfie
main
		movlw D'8'
		movwf Shift_counter
		movlw B'00000001'
		movwf PORTB
		bcf STATUS,C
shift_again
		btfss shift
		goto shift_again
		rlf PORTB,f
		bcf shift
		decfsz Shift_counter,f
		goto shift_again
		goto main
		END


