;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;	SPIST.ASM	MPB	Ver:1.0		14-9-05
;...............................................................
;
;	SPI Slave Transmitter program
;	
;	Waits for !SS and transmits switch BCD data
;
;	
;	
;	
;	
;	
;	
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

	PROCESSOR 16F877	; define MPU
	__CONFIG 0x3731		; XT clock (4MHz)

;	LABEL EQUATES	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

	INCLUDE "P16F877.INC"	; Standard register labels 




; Initialise ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

	ORG	0		; Place machine code 
	NOP			; Required for ICD mode

	BANKSEL	TRISC		
	BCF	TRISC,5		; Serial data output
	CLRW	SSPSTAT		; Default clock timing

	BANKSEL	PORTD
	MOVLW	B'00000100'	; SPI slave mode with SS
	MOVWF	SSPCON		; SPI clock = 1MHz
	BSF	SSPCON,SSPEN	; Enable SPI mode


; MAIN LOOP ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;	

start	MOVF	PORTD,W		; Read BCD switch
	MOVWF	SSPBUF		; Write SPI buffer
	
wait	BTFSS	PIR1,SSPIF	; wait for SPI interrupt
	GOTO	wait
	BCF	PIR1,SSPIF	; clear interrupt flag

	GOTO	start		; repeat main loop



	END 	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

