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

📄 com.c

📁 rfproV02发送程序和80C51演示程序
💻 C
📖 第 1 页 / 共 2 页
字号:
	}	
}
/*----------------------------- Subroutine -------------------------------------
        Name: spi read
    Function: 
       Entry: 
        Exit: 
     Caution: 
-------------------------------------------------------------------------------*/
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;					// Set clock line high
		if (MISO)
			flag1=1;			// Read data
		else
			flag1=0;
		SCK=0;					// Set clock line low
	}
	return DATA_BUF;			// Return function parameter
}
/*----------------------------- Subroutine -------------------------------------
        Name: config 905
    Function: 
       Entry: 
        Exit: 
     Caution: 
-------------------------------------------------------------------------------*/
void Config905(void){
	uchar i;
	CSN=0;				// Spi enable for write a spi command
	SpiWrite(WC);			// Write config command写放配置命令
	for (i=0;i<RxTxConf.n;i++)	// Write configration words  写放配置字
	{
		SpiWrite(RxTxConf.buf[i]);
	}
	CSN=1;						// Disable Spi
}
/*----------------------------- Subroutine -------------------------------------
        Name: Tx Packet
    Function: 
       Entry: 
        Exit: 
     Caution: 
-------------------------------------------------------------------------------*/
void TxPacket(void){
	uchar i;
	//Config905();				
	CSN=0;						// Spi enable for write a spi command	
	SpiWrite(WTP);				// Write payload command
	for (i=0;i<32;i++)
	{
		SpiWrite(TxBuf[i]);		// Write 32 bytes Tx data
	}
	CSN=1;						// Spi disable						
	Delay(1);
	CSN=0;						// Spi enable for write a spi command	
	SpiWrite(WTA);				// Write address command
	for (i=0;i<4;i++)			// Write 4 bytes address
	{
		SpiWrite(RxTxConf.buf[i+5]);
	}	
	CSN=1;						// Spi disable
	TRX_CE=1;					// Set TRX_CE high,start Tx data transmission
	Delay(1);					// while (DR!=1);
	TRX_CE=0;					// Set TRX_CE low
}
/*----------------------------- Subroutine -------------------------------------
        Name: Rx Packet
    Function: 
       Entry: 
        Exit: 
     Caution: 
-------------------------------------------------------------------------------*/
void RxPacket(void)
{
	uchar i;	
	TRX_CE=0;			// Set nRF905 in standby mode	
	CSN=0;				// Spi enable for write a spi command
	SpiWrite(RRP);			// Read payload command	
	for (i=0;i<32;i++)
	{
		RxBuf[i]=SpiRead();	// Read data and save to buffer		
	}
	CSN=1;				// Disable spi
	while(DR||AM);	
//	P0=RxBuf[0];		// Buffer[0] output from P0 port...
	TRX_CE=1;
//	TRX_CE=1;			// Set TRX_CE high,start Tx data transmission
//	Delay(1);			// while (DR!=1);
//	TRX_CE=0;			// Set TRX_CE low
								
}

/*----------------------------- Subroutine -------------------------------------
        Name: datbuf_clr
    Function: 
       Entry: 
        Exit: 
     Caution: 
-------------------------------------------------------------------------------*/	
void datbuf_clr(void){
	unsigned char i;
	for(i=0;i<7;i++){
		TxBuf[i]=0xff;
	}
}
/*----------------------------- Subroutine -------------------------------------
        Name: com_initial
    Function: 
       Entry: 
        Exit: 
     Caution: 
-------------------------------------------------------------------------------*/	
void com_initial(void){

    //================NRF905初始化
	CSN=1;						// Spi 	disable						
	SCK=0;						// Spi clock line init high
	DR=1;						// Init DR for input
	AM=1;						// Init AM for input
	PWR_UP=1;					// nRF905 power on
	TRX_CE=0;					// Set nRF905 in standby mode
	TX_EN=0;			
	
	nRF905Init();
	Delay(13);		//80*13
	Config905();				// Config nRF905 module
	SetTxMode();				// Set Tx Mode
	TxPacket();				// Transmit Tx buffer data

	Delay(500);				// delay for led light	

	SetRxMode();				// Set nRF905 in Rx mode
	
	// 发
	Delay(500);	
	
	//	load data to send
	TxBuf[0]=0xaa;
	TxBuf[1]=0x55;
	TxBuf[2]=Read_COM_DATA;
	TxBuf[3]=0x00;
	TxBuf[4]=0xaa;
	TxBuf[5]=0x55;
	
	SetTxMode();		// Set Tx Mode
	TxPacket();		// Transmit Tx buffer data	
	datbuf_clr();
	SetRxMode();		// Set nRF905 in Rx mode
	
	b_send_fg=0;
	
}
/*----------------------------- Subroutine -------------------------------------
        Name: com
    Function: 
       Entry: 
        Exit: 
     Caution: 
-------------------------------------------------------------------------------*/
void com_do_ne(void){
		if(RxBuf[3]==comdata){	//数据相等
			b_disp=1; 
			lcm_md=0x02;
			dataresult=0x00;	
		}
		else	{		//不等,重发  
			comcmd=Write_COM_DATA;
			b_send_fg=1;
		}
}
void com_do(void){
	if(RxBuf[2]==Feedback_CW_DATA){		//0xa3 下位机反馈写入数据      
		com_do_ne();
		fbuzz_en();
	}
	
	else if(RxBuf[2]==Feedback_CR_DATA){	//0xa4 下位机反馈要读的数据数据  
		comdata=RxBuf[3]; 
		b_disp=1; 
		lcm_md=0x01;
		fbuzz_en();
	}
	
	else if(RxBuf[2]==RST_COM_DATA){	//0xa5 下位机复位      
		b_disp=1;
		lcm_md=0x04;
		fbuzz_en();
	}
	
}			
	
void com(void){
	if (DR){			// If recive data ready... 
		TR0 = 0;	//start t0
		
		RxPacket();			// ... recive data
		TR0 = 1;
		
//		if((RxBuf[0]==RxBuf[4])&&(RxBuf[1]==RxBuf[5])){	
			_nop_();
			_nop_();
			_nop_();
			_nop_();
			
//b_disp=1;			
dsip_r0=RxBuf[0];
dsip_r1=RxBuf[1];
dsip_ra=RxBuf[2];
dsip_rb=RxBuf[3];
dsip_r4=RxBuf[4];
dsip_r5=RxBuf[5];
			
			
			com_do();
		
//			if(RxBuf[2]==Feedback_CW_DATA){		//0xa3 下位机反馈写入数据      
//				if(RxBuf[3]==comdata){	//数据相等
//					b_disp=1; 
//					lcm_md=0x02;
//					dataresult=0x00;	
//				}
//				else	{		//不等,重发  
//					comcmd=Write_COM_DATA;
//					b_send_fg=1;
//				}
//			}
//			
//			else if(RxBuf[2]==Feedback_CR_DATA){	//0xa4 下位机反馈要读的数据数据  
//				comdata=RxBuf[3]; 
//				b_disp=1; 
//				lcm_md=0x01;
//			}
              
                }
	//	TR0 = 1;	//start t0
//	}
	
	
	if(b_send_fg==1){
		b_send_fg=0;
		Delay(500);
		
		TR0 = 0;
		
		TxBuf[0]=0xaa;
		TxBuf[1]=0x55;
		TxBuf[2]=comcmd;
		TxBuf[3]=comdata;
		TxBuf[4]=0xaa;
		TxBuf[5]=0x55;
	
		SetTxMode();		// Set Tx Mode
		TxPacket();		// Transmit Tx buffer data
		datbuf_clr();
		SetRxMode();		// Set nRF905 in Rx mode
			
		TR0 = 1;	//start t0	
	}
		
}


⌨️ 快捷键说明

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