;*******************************
; CLOCK	10MHz
;*************************************
errorlevel 2
list p=16f88
include "p16f88.inc"
__CONFIG    _CONFIG1, _CP_OFF & _CCP1_RB0 & _DEBUG_OFF & _WRT_PROTECT_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _MCLR_OFF & _PWRTE_OFF & _WDT_OFF &_HS_OSC 
;*********
;MAKRÓK  
;*********
JNZ MACRO J1		;ugrás ha nem nulla
BTFSS	STATUS,2
GOTO	J1
ENDM
JZ	MACRO J2		;ugrás ha nulla
BTFSC	STATUS,2
GOTO	J2
ENDM
JNC MACRO J3		;ugrás, ha carry alacsony
BTFSS	STATUS,0
GOTO	J3
ENDM
JC	MACRO J4		;ugrás ha carry magas
BTFSC	STATUS,0
GOTO	J4
ENDM
CLC	MACRO			;CARRY TÖRLÉSE
BCF	STATUS,0
ENDM
SEC MACRO			;CARRY =1
BSF	STATUS,0
ENDM

#DEFINE MEMLAP0		STATUS,RP0
#DEFINE MEMLAP1 	STATUS,RP1




CBLOCK	0X20
W_		;W MENTÉSE VAGY ÁTMENETI REGISZTER
AC0		;SEGÉDREG	
AC1		;SEGÉDREG		
AC2		;SEGÉDREG
SZ1		;SZÁMLÁLÓ
SZ2
ADATH	;PARANCS FELSŐBYTE
ADATL	;PARANCS ALSÓBYTE
COUNT1	;SZÁMLÁLÓ
COUNT2
SUMM		;ADAT RÉSZÖSSZEG
endc
;
#DEFINE TABL 0X70	;IDE KERÜLNEK AZ ADATOK

;**************************************
#define SDO 	PORTB,7	;IN
#DEFINE	NIRQ	PORTB,6	;IN
#define NSEL	PORTB,5	;OUT
#define SCK 	PORTB,4	;OUT
#define SDI 	PORTB,3	;OUT
;**************************************
#DEFINE	LED		PORTB,0	;OUT


org	0x00
CALL	INIT
GOTO	PRG
NOP
NOP
RETFIE ;NINCS MEGSZAK.
;***************************



INIT
	CLRF	PORTB
	CLRF	PORTA
	BSF		MEMLAP0
	MOVLW	B'11000000'
	MOVWF		TRISB
	MOVLW	B'00000000'
	MOVWF		ANSEL		;EGYENLŐRE MIND I/O
	BCF		MEMLAP0
	BSF		NSEL
	BCF		SCK	
	CALL	RXINIT		;MODULINIT
	RETURN
;**********************************
D20mS
	MOVLW	0XED;
	MOVWF	SZ1
	MOVLW	0X41
	MOVWF	SZ2
D00	DECFSZ	SZ1
	GOTO	D00
	DECFSZ	SZ2
	GOTO	D00
	RETURN
;****************************
WRITECMD				;73.6uSEC
	MOVLW	0X10
	MOVWF	COUNT1		;16 LÉPÉS
	BCF		NSEL		;CHIP ENABLE
;	NOP
W01	BCF		SCK			;ORAJEL LO
	RLF		ADATL,F		;KÖVETKEZŐ BIT
	RLF		ADATH,F
	BCF		SDI
	JNC		W00			;UGRÁS, HA CARRY ALACSONY
	BSF		SDI
;	NOP
W00	BSF		SCK
	DECFSZ	COUNT1		
	GOTO	W01
	BCF		SCK
	BSF		NSEL
	RETURN
;****************************
RXINIT
	CALL	D20mS	;ALAP 1MHz MIATT MÉG 200mSEC
	MOVLW	0X80	;nem írjuk újra az azonos parancsokat (POR)
	MOVWF	ADATH	;tehát csak a szükségeseket
	MOVLW	0X68
	MOVWF	ADATL
	CALL	WRITECMD	;enable fifobuffer,868MHz,12.5pF
	MOVLW	0X82
	MOVWF	ADATH
	MOVLW	0XD8
	MOVWF	ADATL
	CALL	WRITECMD	;enable receive,!PA,CRIST OSC,SZINTÉZER, CLKOUT
	MOVLW	0XC6
	MOVWF	ADATH
	MOVLW	0X11		;19.157 BAUDRATE 
	MOVWF	ADATL
	CALL	WRITECMD
	MOVLW	0X90
	MOVWF	ADATH
	MOVLW	0X60		;VDI,FAST,270kHz,0dBm,-103dBm
	MOVWF	ADATL
	CALL	WRITECMD
	MOVLW	0XC2
	MOVWF	ADATH
	MOVLW	0XAC		
	MOVWF	ADATL
	CALL	WRITECMD;Data Filter Command
	MOVLW	0XC4
	MOVWF	ADATH
	MOVLW	0X83		
	MOVWF	ADATL
	CALL	WRITECMD;
	MOVLW	0X98
	MOVWF	ADATH
	MOVLW	0X68	;105kHZ -10.5DB		
	MOVWF	ADATL
	CALL	WRITECMD
	MOVLW	0XE0
	MOVWF	ADATH
	CLRF	ADATL
	CALL	WRITECMD
	MOVLW	0XC0
	MOVWF	ADATH
	MOVLW	0XE0	;clock 10MHz PIC részére			
	MOVWF	ADATL
	CALL	WRITECMD
	RETURN
	
;****************************
GETFILE
	CLRF	SUMM	;ellenörző összeg null
	MOVLW	0X06
	MOVWF	AC0		;6DB SZÁMOT OLVASUNK BE
	MOVLW	TABL	;IDE MENTÜNK
	MOVWF	FSR		;INDIREKT CÍM
	MOVLW	0XCA		
	MOVWF	ADATH	;FIFO RESET
	MOVLW	0X80
	MOVWF	ADATL
	CALL	WRITECMD
	MOVLW	0XCA
	MOVWF	ADATH	;FIFO START 
	MOVLW	0X83
	MOVWF	ADATL
	CALL	WRITECMD
	CLRW
G00	ADDWF	SUMM,F	;
	CALL	DATAIN	;68,8uSEC/	1BYTE
	MOVWF	INDF	;ELMENTJÜK 
	INCF	FSR		;MUTATÓ KÖVETKEZŐRE
	DECFSZ	AC0		;HA MÉG NINCS MEG MIND VISSZA
	GOTO	G00
	MOVLW	0XCA		
	MOVWF	ADATH	;FIFO RESET
	MOVLW	0X80	;TOVÁBBIAKBAN FIFO TILTVA
	MOVWF	ADATL
	CALL	WRITECMD
	DECF	FSR		;VETT ELLENÖRZŐ ÖSSZEG BEOLVASÁSA
	MOVF	INDF,0
	SUBWF	SUMM,W	;ÖSSZEHASONLÍTÁS A SZÁMÍTOTTAL
	JNZ		G01	;HIBÁS VÉTEL 
	BSF		LED	;ADATOK STIMMELNEK
G01	RETURN
;****************************
DATAIN				
	MOVLW	0X10	;16 ÓRAJEL
	MOVWF	COUNT1
D04 BTFSC	NIRQ
	GOTO	D04		;VÁRUNK A STÁTUSZJELRE (AZ RFM MODUL
					;HA NINCS VETT JEL ÁLLANDÓ MAGASAT AD
					;EZÉRT ITT "KIAKAD" A PROGI SZIMULÁCIÓBAN
					;TOVÁBB LÉP)
	BCF		SDI
;	NOP				;PICKÖNYV SZERINT KELL, VALÓJÁBAN NEM
	BCF		NSEL
;	NOP
D01	BSF		SCK		;READSTATUSZ PARANCS
;	NOP
	BCF		SCK
	DECFSZ	COUNT1
	GOTO	D01
	MOVLW	0X08	;UTÁNA JÖN AZ ADAT
	MOVWF	COUNT1
D03	BSF		SCK
	CLC				;CARRY=0
	BTFSS	SDO
	GOTO	D02
	SEC				;CARRY =1
D02	RLF		W_,F
	BCF		SCK
	DECFSZ	COUNT1
	GOTO	D03
	BSF		NSEL	;
	MOVF	W_,0	;VISSZATÉRÉS AZ ADATTAL
	RETURN
;****************************

;****************************
PRG	CALL	GETFILE
	CALL	D20mS
	BCF		LED		;LED TÖRLÉSE
	GOTO	PRG
END