	;Beacon.asm
        ;Project: "Rotating Beacon" - eventually for a 508A 
	;List P = 16F84
	;#include <p16F84.inc>
	;__CONFIG 1Bh    ;_CP_OFF & _PWRTE_ON & _WDT_OFF & _RC_OSC


	ORG 0		;Start of memory for the program
SetUp	MOVLW 08	;Load W with 0000 1000
	TRIS 06		;Make RB3, (GP3) input	
	OPTION 0DFh  	;Make GP2 an output & disable weak pullups	
	MOVLW 17h 	;Make GP0, GP1, GP2, GP4, GP5  HIGH 
	MOVWF 06	
	GOTO Main

Main	BSF 06,5	;Turn on LHS sinking transistor
	NOP
	NOP
	BCF 06,0
	MOVLW 42h	;Create 50mS delay
	MOVWF 1B
Del1	DECFSZ 1A,1	
	GOTO Del1
	MOVLW 01h
	XORWF 06,1	
	DECFSZ 1B,1
	GOTO Del1
	BSF 06,0	
	BCF 06,1
	MOVLW 42h	;Create 50mS delay
	MOVWF 1B
Del2	DECFSZ 1A,1	
	GOTO Del2
	MOVLW 02h
	XORWF 06,1	
	DECFSZ 1B,1
	GOTO Del2
	BSF 06,1
	BCF 06,2
	MOVLW 42h	;Create 50mS delay
	MOVWF 1B
Del3	DECFSZ 1A,1	
	GOTO Del3
	MOVLW 04h
	XORWF 06,1	
	DECFSZ 1B,1
	GOTO Del3
	BSF 06,2
	BCF 06,4
	MOVLW 42h	;Create 50mS delay
	MOVWF 1B
Del4	DECFSZ 1A,1	
	GOTO Del4
	MOVLW 10h
	XORWF 06,1	
	DECFSZ 1B,1
	GOTO Del4
	BSF 06,4	
	BCF 06,5	;Turn on RHS sinking transistor	
	BCF 06,0
	MOVLW 42h	;Create 50mS delay
	MOVWF 1B
Del5	DECFSZ 1A,1	
	GOTO Del5
	MOVLW 01h
	XORWF 06,1	
	DECFSZ 1B,1
	GOTO Del5
	BSF 06,0	
	BCF 06,1
	MOVLW 42h	;Create 50mS delay
	MOVWF 1B
Del6	DECFSZ 1A,1	
	GOTO Del6
	MOVLW 02h
	XORWF 06,1	
	DECFSZ 1B,1
	GOTO Del6
	BSF 06,1
	BCF 06,2
	MOVLW 42h	;Create 50mS delay
	MOVWF 1B
Del7	DECFSZ 1A,1	
	GOTO Del7
	MOVLW 04h
	XORWF 06,1	
	DECFSZ 1B,1
	GOTO Del7
	BSF 06,2
	BCF 06,4
	MOVLW 42h	;Create 50mS delay
	MOVWF 1B
Del8	DECFSZ 1A,1	
	GOTO Del8
	MOVLW 10h
	XORWF 06,1	
	DECFSZ 1B,1
	GOTO Del8
	BSF 06,4
Loop	BTFSC 06,3			
	GOTO Main
	NOP
	GOTO Loop

	END			;Tells assembler end of program


