;*******************************
; 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

endc
;


;**************************************
#define SDO 	PORTB,7	;IN
#define NSEL	PORTB,5	;OUT
#define SCK 	PORTB,4	;OUT
#define SDI 	PORTB,3	;OUT
;**************************************
#DEFINE	LED		PORTB,0	;OUT
#DEFINE NUM		6		;6DB SZÁM MEGY KI
#DEFINE TABL	0X70    ;IDE KELL TENNI AZ 5 DB SZÁMOT
#DEFINE	SUM		TABL+5	;A 6. A KISZÁMOLT ÖSSZEG LESZ
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	
	CLRF	COUNT1
	CLRF	COUNT2
	CALL	RXINIT		;MODULINIT
	RETURN
;**********************************
D20mS
	MOVLW	0XED;
	MOVWF	SZ1
	MOVLW	0X41
	MOVWF	SZ2
D00	DECFSZ	SZ1
	GOTO	D00
	DECFSZ	SZ2
	GOTO	D00
	RETURN
;****************************
D250u
	MOVLW	0XCD	;250uSEC KÉSLELTETÉS
DX	MOVWF		SZ1		
	MOVLW	0X01
	MOVWF		SZ2
D20	DECFSZ	SZ1
	GOTO	D20
	DECFSZ	SZ2
	GOTO	D20
	NOP
	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	0XA8
	MOVWF	ADATL
	CALL	WRITECMD	;enable TX REGISTER,868MHz,12.5pF
	MOVLW	0X82
	MOVWF	ADATH
	MOVLW	0X08
	MOVWF	ADATL
	CALL	WRITECMD	; !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
;****************************
ADATKI
	
	MOVWF	ADATL	;ADAT
	MOVLW	0XB8	;ADÁSPARANCSKÓD
	MOVWF	ADATH
	BCF		SDI
AD1	BCF		NSEL	
	BSF		SCK
	BTFSC	SDO		;VÁRUNK A FOGADÓ JELRE( A SZIMULÁCIÓHOZ KIMENENEK
					;KELL DEFINIÁLNI AZ SDO LÁBAT,EZUTÁN ÍRHATÓ AZ SDO
					;SZINTJE TEHÁT A 80. SOR IGY MÓDOSUL:
					;MOVLW	0X00
					; A BPORT 7.BITJÉNEK MAGASRA ÁLLÍTÁSÁVAL LEHET TESZTELNI
					;ÉGETÉS ELŐTT VISSZAÁLLÍTANI A HELYES ÉRTÉKET!)
	GOTO	AD0
	BCF		SCK
	BSF		NSEL
	GOTO	AD1
AD0	BCF		SCK
	BSF		NSEL	;MEHET A BYTE
WRITECMD
	BSF		COUNT2,4	;16 lépés
	BCF		NSEL
W01	BCF		SCK
	RLF		ADATL,F
	RLF		ADATH,F
	BSF		SDI
	JC		W00
	BCF		SDI
W00	BSF		SCK
	DECFSZ	COUNT2
	GOTO	W01
	BCF		SCK
	BSF		NSEL
	RETURN
;****************************
DATAOUT
	MOVLW	0X82
	MOVWF	ADATH
	MOVLW	0X38	;0X28
	MOVWF	ADATL
	CALL	WRITECMD	;p.a. ÉS SZINTÉZER  bekapcs
	CALL	D250u		;250uSEC VÁRAKOZÁS KELL IDE!
	BSF		LED
	MOVLW	NUM			;KÜLDENDŐ ADATOK SZÁMA
	MOVWF	COUNT1	 
	CLRF	SUM		;ELLENÖRZŐ ÖSSZEG = 0
	MOVLW	TABL	;INDIREKT MUTATÓ ADATOK ELEJÉRE
	MOVWF	FSR
	MOVLW	0XAA		;ELSŐ BYTE
	CALL	ADATKI
	MOVLW	0XAA	;78 uSec + VÁRAKOZÁS READY
	CALL	ADATKI
	MOVLW	0XAA
	CALL	ADATKI
	MOVLW	0X2D	;ID0
	CALL	ADATKI
	MOVLW	0XD4	;ID1
	CALL	ADATKI
P00	MOVF	INDF,0	;110.8uSEC
	ADDWF	SUM,F	;ELLENÖRZŐÖSSZEGHEZ HOZZÁADÁS
	CALL	ADATKI
	INCF	FSR
	DECFSZ	COUNT1
	GOTO	P00
	MOVLW	0XAA
	CALL	ADATKI
	MOVLW	0XAA
	CALL	ADATKI
	MOVLW	0X82
	MOVWF	ADATH
	MOVLW	0X08
	MOVWF	ADATL
	CALL	WRITECMD	;ADÓFOKOZAT LEÁLLÍTÁSA
	BCF		LED			;
	RETURN
;****************************
PRG	
	CALL	DATAOUT	;1,43 mSEC ADATÁTVITEL
	CALL	D20mS
	GOTO	PRG
END
;FONTOS, HOGY AZ ADÓT KI ÉS BEKAPCSOLJUK, MERT JELEN BEÁLLÍTÁSBAN 
;1,4mSec IDEIG MEGY ÉS 20 mSEC IDEIG NEM AZ ADÓ IGY NEM ZAVARJA 
;ÁLLANDÓAN A KÖRNYEZETET ÉS A FOGYASZTÁS IS CSAK 250mA HELYETT
;17.5 mA. (RFM12BP)