	list p=16F886;
#include <p16F886.inc>
 _CONFIG1 _CP_OFF & _WDT_OFF & _PWRTE_ON & _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


