#include <p16f628A.inc>

;	f_ 
;      e/_/ a
;      d/_/ b
;	 c 	
;középen pedig g  /a h legyen a pont/
;binárisan (MSB         LSB)
;	   (a,b,c,d,e,f,g,h)	
;
;a kettes "2" szám kiírásához az f,a,g,d,c pixeleknek kell aktívnak lennie (logika 1)
;tehát a kiküldendő adat binárisan és hexába (b'10110110') 0xB6 (B6h)
;a parancsok értékei=>
;CMD1 0x07 (11digit 11 segmens)
;CMD2 0x40 (Write display data, incerement adress,Normal mode)
;CMD3 0xC0 (kezdeti memóricím beállítás!)
;CMD4 0x8f (Display on, max fényerő)


#define CS PORTA,0
#define CLK PORTA,1
#define DO PORTA,2
#define DI PORTA,3


SSPBUF equ 0x20
SSPDAT equ 0x22
t1 equ 0x21


init	bsf STATUS,RP0
	movlw 0x00
	movwf TRISA
	bcf STATUS,RP0
	clrf PORTA
	bsf CS
	bsf CLK

main	movlw 0x07 			;CMD1
	movwf SSPBUF
	call sspsend

	movlw 0x8f 			;CMD4
	movwf SSPBUF
	call sspsend
	
	movlw 0xc0 			;CMD3
	movwf SSPBUF
	call sspsend

	movlw 0x40			;CMD2
	movwf SSPBUF
	movlw 0xB6			;DATA (2)
	movwf SSPDAT
	call sspsend

vege nop
	goto vege
sspsend	movlw 0x08
	movwf t1
	bcf CS
	
ide	bcf CLK
	btfss SSPBUF,0 
	bcf DO
	btfsc SSPBUF,0
	bsf DO
	bsf CLK
	
	bcf STATUS,C
	rrf SSPBUF
	
	decfsz t1
	goto ide
	
	bsf CLK
	
	bcf STATUS,Z	
	movf SSPDAT,0			
	andlw 0xff
	btfss STATUS,Z
	goto oda

	bsf CS
	bsf CLK
	return	
oda movf SSPDAT,0
	movwf SSPBUF
	clrf SSPDAT
	goto sspsend

end
