by chaofu.zhang //2010-06-01
#ifndef LT8900_H
#define LT8900_H
//===================================================
// LT8900 Parameter Definition
//===================================================
#define SYNCWORD_0 0x34
#define SYNCWORD_1 0x56
#define SYNCWORD_2 0x78
#define SYNCWORD_3 0x9A
#define SYNCWORD_4 0xBC
#define SYNCWORD_5 0xDE
#define SYNCWORD_6 0xF0
#define SYNCWORD_7 0x12
#define LT_XTAL_OSC_EN 1 //Enable crystal
#define LT_RSSI_PDN 0 //RSSI operation
#define LT_VCO_CAL_EN 1 //calibrate VCO for each RF operation
//Reg32 (0x20)
#define LT_PREAMBLE_LEN 7 //preamble = 4byte
#define LT_SYNCWORD_LEN 3 //syncword = 64bit
#define LT_TRAILER_LEN 0 //trailer = 4bit
#define LT_DATA_PACKET_TYPE 0 //data packet type = NRZ law
#define LT_FEC_TYPE 0 // No FEC
#define LT_BRCLK_SEL 0 // NO BRCLK clock output
#define LT_R32H ((LT_PREAMBLE_LEN << 5) + (LT_SYNCWORD_LEN << 3) + LT_TRAILER_LEN)
#define LT_R32L ((LT_DATA_PACKET_TYPE << 6) + (LT_FEC_TYPE << 4) + (LT_BRCLK_SEL << 1))
//Reg40 (0x28)
#define LT_FIFO_EMPTY_THRESHOLD 4
#define LT_FIFO_FULL_THRESHOLD 4
#define LT_SYNCWORD_THRESHOLD 7
#define LT_R40H ((LT_FIFO_EMPTY_THRESHOLD <> 2))
#define LT_R40L ((LT_FIFO_FULL_THRESHOLD<<6) + LT_SYNCWORD_THRESHOLD)
//Reg41 (0x29)
#define LT_CRC_ON 1 //CRC on
#define LT_SCRAMBLE_ON 1 //scrable off
#define LT_PACK_LENGTH_EN 1 //first data byte is packet length
#define LT_FW_TERM_TX 1
#define LT_AUTO_ACK 0 //auto ACK
#define LT_PKT_FIFO_POL 0 //PKT_FLAG is active high
#define LT_CRC_INIT_DATA 0x00 //CRC initial data
const char code LT_CH_Table[10][8] =
{
(0,10,20,30,40,50,60,70),
(1,11,21,31,41,51,61,71),
(2,12,22,32,42,52,62,72),
(3,13,23,33,43,53,63,73),
(4,14,24,34,44,54,64,74),
(5,15,25,35,45,55,65,75),
(6,16,26,36,46,56,66,76),
(7,17,27,37,47,57,67,77),
(8,18,28,38,48,58,68,78),
(9,19,29,39,49,59,69,79)
};
sbit MISO = P1^0; //input
sbit RESET_N = P1^1; //output
sbit CLK = P1^2; //output
sb