⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 set.h

📁 nRF905无线FSK芯片在51单片机上工作的代码
💻 H
字号:

#ifndef __SET_H__
#define __SET_H__
#define uchar unsigned char
#define uint  unsigned int

#define WC  0x00   // Write configuration register command
#define RC  0x10    // Read  configuration register command
#define WTP  0x20    // Write TX Payload  command
#define RTP  0x21   // Read  TX Payload  command
#define WTA  0x22   // Write TX Address  command
#define RTA  0x23   // Read  TX Address  command
#define RRP  0x24   // Read  RX Payload  command

//////////////////////下面是t_mini.c里的copy过来的////////////////////////////////////////////////
#define V_TH0   0xee  /*   ~ 5ms ,  ! notice: crystal 11.0592MHz */
#define V_TL0   0x00

/* 数码管段驱动寄存器地址 */
#define ADDR_8SEG	XBYTE[0x2000]

/* 数码管位驱动和指示灯驱动寄存器地址 */
#define ADDR_SEL	XBYTE[0x4000]

#define PB8255 XBYTE[0xE001]			//B口地址

unsigned char bdata output_sel;

// 数码管扫描驱动指针 
unsigned char digi_scaner;

//用于按键消抖
unsigned char p_counter=0;

// 测试用计数值十进制表示 
unsigned char fir_dis=1;
unsigned char sec_dis=2;
unsigned char thi_dis=3;
unsigned char for_dis=4;
/* 按键 */
sbit KEY1=	P1^0;
sbit KEY2=	P1^1;
sbit KEY3=	P1^2;
sbit KEY4=	P1^3;
/*******************************************************************************************/
typedef struct RFConfig
{
 uchar n;
 uchar buf[10];
}RFConfig;

RFConfig temp={0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};

/*******************************************************************************************/
uchar xdata TxBuf[32];
uchar xdata RxBuf[32];
uchar xdata TmpBuf[32];
/*******************************************************************************************/
uchar key,rsbrf,delayf,tf;


int jsq=3;	  //计数器
/*******************************************************************************************/
uchar bdata DATA_BUF;
sbit flag =DATA_BUF^7;
sbit flag1 =DATA_BUF^0;
/*******************************************************************************************/
/****  receive_module nrf905 控制引脚  ****/
#define COM8255 XBYTE[0xE003] 		 //命令口地址
/* 8255 reset */
sbit RST8255 = P1^4;
/* 输出缓存,8255端口B ,定义了一个可位寻址的变量 */
unsigned char bdata PB;
    sbit SCK    = PB^7;	
	sbit TX_EN  = PB^6;
    sbit TRX_CE = PB^5;
    sbit PWR_UP = PB^4;
    sbit MOSI   = PB^2;
    sbit CSN    = PB^0;
//	sbit MISO   = PB^3;

sbit AM =P3^2;
sbit DR =P3^3;
sbit MISO= P3^4;
sbit CD =P3^5;
/*******************************************************************************************/
void InitIO(void);   // Initialize IO port
void Inituart(void);   // initialize 232 uart
void Config905(void);   // Config nRF905 module配置NRF905模式
void SetTxMode(void);   // Set nRF905 in Tx mode
void SetRxMode(void);   // Set nRF905 in Rx mode
void TxPacket(void);   // Send data by nRF905
void RxPacket(void);   // Recive data by nRF905
void SpiWrite(uchar);   // Write data to nRF905
uchar SpiRead(void);   // Read data to nRF905
void Delay(uchar n);   // Delay 100us
//void Scankey(void);    // Scan key
void TxData (uchar x);   // Send key_value to CRT display
//void comdebug(void);


//////////////////////////////////////////////////////
/**** 7段数码显示译码 
    参数:
		DATA: 需要显示的数字或符号;
	返回值: 7段译码结果 ( D7~0 = PGFEDCBA )
*****/
unsigned char NUMTOSEG7(unsigned char DATA)
{ unsigned char AA;
  switch (DATA)
  { case 0: AA=0xc0;break; /* '0'*/
    case 1: AA=0xf9;break; /* '1'*/
    case 2: AA=0xa4;break; /* '2'*/
    case 3: AA=0xb0;break; /* '3'*/
    case 4: AA=0x99;break; /* '4'*/
    case 5: AA=0x92;break; /* '5'*/
    case 6: AA=0x82;break; /* '6'*/
    case 7: AA=0xf8;break; /* '7'*/
    case 8: AA=0x80;break; /* '8'*/
    case 9: AA=0x90;break; /* '9'*/
    case 10: AA=0x88;break; /* 'A'*/
    case 11: AA=0x83;break; /* 'B'*/
    case 12: AA=0xc6;break; /* 'C'*/
    case 13: AA=0xa1;break; /* 'D'*/
    case 14: AA=0x86;break; /* 'E'*/
    case 15: AA=0x8e;break; /* 'F'*/
	case 16: AA=0x48;break;//'n'
    case '-':AA=0xdf;break; /* 破折号*/
    case '_':AA=0xf7;break; /* 下划线*/
    case ' ':AA=0xff;break; /* 消隐*/
    default: AA=0xff;
  }
  return(AA);
}

//////////////////////////////////////////////////////

void Display()
{	 output_sel = 0xf0; /*初值,令数码管驱动位无效,指示灯全灭*/
	 if (++digi_scaner>=5) digi_scaner = 1;
	switch (digi_scaner)
	{
		case 1: /* 驱动第一个数码管 */
				output_sel |= 0x01;
				ADDR_8SEG = NUMTOSEG7(fir_dis); /*输出到锁存器U5(在电路图中找)*/
				break;

		case 2: /* 驱动第二个数码管 */
				output_sel |= 0x02;
				ADDR_8SEG = NUMTOSEG7(sec_dis); /*输出到锁存器U5*/
				break;

		case 3: /* 驱动第三个数码管 */
				output_sel |= 0x04;
				/*输出到锁存器U5*/
				ADDR_8SEG = NUMTOSEG7(thi_dis);
                break;

		case 4: /* 驱动第四个数码管 */
				output_sel |= 0x08;
				ADDR_8SEG = NUMTOSEG7(for_dis); /*输出到锁存器U5*/
				break;
	}

	ADDR_SEL = output_sel;     	/*输出到锁存器U6(在电路图中找)*/
}


void TxData (unsigned char x)
{									                                                                                                                                                
 SBUF=x; 
 while(TI==0);
  TI=0;
}
/*******************************************************************************************/
//function Delay100us();Delay 100us
/*******************************************************************************************/
void Delay(uchar n)
{
 uchar i;
 													        

 for(i=0;i<n;i++) _nop_(); 
}
/*******************************************************************************************/
void serial () interrupt 4
{ 
    unsigned char temp;
     if(RI)
       {
     
  temp=SBUF;
                rsbrf=temp;
         RI=0;
 }    
}

/*******************************************************************************************/
void SpiWrite(uchar  byte)
{
 uchar i; 
 DATA_BUF=byte;    // Put function's parameter into a bdata variable  
 for (i=0;i<8;i++)   // Setup byte circulation bits
 { 
  
  if (flag)    // Put DATA_BUF.7 on data line
   {MOSI=1; PB8255=PB; }
  else
   {MOSI=0; PB8255=PB; }
  Delay(10); 
  SCK=1;PB8255=PB;
 // Delay(1);
  Delay(10);
       // Set clock line high
 // Shift DATA_BUF
  DATA_BUF=DATA_BUF<<1; 
  SCK=0;   PB8255=PB;  // Set clock line low
 // Delay(10);
  
 // _nop_();_nop_();_nop_();_nop_(); Delay(10);
 } 
}
/*******************************************************************************************/
//function SpiRead();
/*******************************************************************************************/
uchar SpiRead(void)
{
 uchar i; 
 for (i=0;i<8;i++)   // Setup byte circulation bits
 { 
  DATA_BUF=DATA_BUF<<1; // Right shift DATA_BUF
  SCK=1; PB8255=PB;    // Set clock line high
 //  _nop_();_nop_();_nop_();_nop_(); Delay(10);
  if (MISO)
   flag1=1;   // Read data
  else
   flag1=0;
       
  Delay(10);
  SCK=0; PB8255=PB;    // Set clock line low
  Delay(10);
 // _nop_();_nop_();_nop_();_nop_();  Delay(10);
 }
 return DATA_BUF;   // Return function parameter
}


#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -