	;Expt2.asm
        ;Project: Toggle a LED
	;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 1mS debounce delay	
	DECFSZ 1A,1
	GOTO Delay
	RETURN		;Return

Main	BTFSS 05,0	;Test the input line on port A
	GOTO Main2	;Button not pressed
	CALL Delay	;Debounce the button
	BTFSC 1F,0	;Button pressed first time?
	GOTO Main	;Button already pressed
	MOVLW 01	;First time button pressed
	XORWF 06,1	;Toggle LED
	BSF 1F,0	;Set button-press flag
	GOTO Main	;Loop Main
Main2	CALL Delay	;Button not pressed. Call Delay
	BCF 1F,0	;Clear button-press flag
	GOTO Main	;Loop Main

	END		;Tells assembler end of program