	;Expt1e.asm
        ;Project: LED on for 0.5sec more than button-press time
	;List P = 16F84
	;#include <p16F84.inc>
	;__CONFIG 1Bh    ;_CP_OFF & _PWRTE_ON & _WDT_OFF & _RC_OSC


	ORG 0		;This is the start of memory for the program.
SetUp	BSF 03,5	;Go to Bank 1
	CLRF 06		;Make all port B output
	MOVLW 01	;Load W with 0000 0001
	MOVWF 05	;Make RA0 input
	BCF 03,5	;Go to Bank 0 - the program memory area.
	CLRF 1F		;Clear the button file
	CLRF 06		;Blank the output
	GOTO Main
		
Delay	NOP		;Create approx 250mS delay
	DECFSZ 1A,1
	GOTO Delay
	DECFSZ 1B,1
	GOTO Delay
	RETURN	

Delay2	NOP		;Create 1mS debounce delay	
	DECFSZ 1A,1
	GOTO Delay2
	RETURN		;Return

Sw	BTFSS 05,0	;Test the push button
	GOTO Sw2	;Button not pressed
	BSF 1F,0	;Button is pressed. Set the button-press flag 	
	BSF 06,0	;Turn on LED
	RETURN		;Return
Sw2	BTFSS 1F,0	;Test if button is pressed
	RETURN		;Return
	BSF 06,0	;Illuminate LED
	CALL Delay	;Keep LED on
	CALL Delay	;Keep LED on
	BCF 1F,0	;Clear button flag bit
	BCF 06,0	;Turn LED off
	RETURN

Main	CALL Sw
	CALL Delay2	;Debounce switch	
	GOTO Main

	END		;Tells assembler end of program