crt905anc.c

来自「nrf905通信 基于rs232」· C语言 代码 · 共 503 行 · 第 1/2 页

C
503
字号
	write_spi_one_byte(0x20);//0b00100000
	while(tx_payload_bytes_num--)
	{
		write_spi_one_byte(tx_data_buf[0]);
	}
	write_spi_one_byte(tx_data_buf[1]);
	write_spi_one_byte(tx_data_buf[2]);
	CSN=1;
}
/*********************************************************************************************************/	
/*********************************************************************************************************
*function:		read_tx_payload()

*use:
*input parameter:
*output parameter:
*********************************************************************************************************/
/*
void read_tx_payload(unsigned char tx_payload_bytes_num)
{
	unsigned char i;
	CSN=0;
	write_spi_one_byte(0x21);//0b00100001
	i=0;
	while(tx_payload_bytes_num--)
	{
		tx_data_buf[i]=read_spi_one_byte();
		i++;
	}
	CSN=1;
}
/*********************************************************************************************************/
/*********************************************************************************************************
*function:	write_tx_address()

*use:
*input parameter:
*output parameter:
*********************************************************************************************************/
void write_tx_address(unsigned char tx_address_bytes_num)
{
	unsigned char i;
	CSN=0;
	write_spi_one_byte(0x22);//0b00100010
	i=0;
	while(tx_address_bytes_num--)
	{
		write_spi_one_byte(tx_address_reg_buf[i]);
		i++;
	}
	CSN=1;
}
/*********************************************************************************************************/
/*********************************************************************************************************
*function:		read_tx_address();

*use:
*input parameter:
*output parameter:
*********************************************************************************************************/

void read_tx_address(unsigned char tx_address_bytes_num)
{
	unsigned char i;
	CSN=0;
	write_spi_one_byte(0x23);//0b00100011
	i=0;
	while(tx_address_bytes_num--)
	{
		tx_address_buf[i]=read_spi_one_byte();
		i++;
	}
	CSN=1;
}
/*********************************************************************************************************/
/*********************************************************************************************************
*function:		read_rx_payload()

*use:
*input parameter:
*output parameter:
*********************************************************************************************************/

void read_rx_payload(unsigned char rx_payload_bytes_num)
{
	unsigned char i;
	CSN=0;
	write_spi_one_byte(0x24);//0b00100100
	i=0;
	while(rx_payload_bytes_num--)
	{
		rx_data_buf[i]=read_spi_one_byte();
		i++;
	}
	CSN=1;
}
/*********************************************************************************************************/
/*********************************************************************************************************
*function:		fast_channel_config()

*use:
*input parameter:

*output parameter:
*********************************************************************************************************/
/*
void fast_channel_config(unsigned char freq_value,unsigned char ch_no_value)
{
	CSN=0;
	freq_value|=0x80;
	write_spi_one_byte(freq_value);
	write_spi_one_byte(ch_no_value);
	CSN=1;
}
/*********************************************************************************************************/

/*********************************************************************************************************
*function:	send_rx_data_to_pc()

*use:		send the received data to pc used UART
*input parameter:	none
*output parameter:	none
*********************************************************************************************************/
void send_rx_data_to_pc(void)
{
	unsigned char i;
	i=0;
	for(i=0;i<32;i++)	//send ASCII char'Comait CRM401XNC'use UART
	{
		TI=0;
		SBUF=rx_data_buf[i];
		while(TI==0);
	}
}
/*********************************************************************************************************/
/*********************************************************************************************************
*function:	delay_ms()
*use:		delay x ms(Max 65535ms,only for at89c2051 MCU)
*input parameter:	unsigned int delay_counter

*output parameter:	none
*********************************************************************************************************/
void delay_ms(unsigned int delay_counter)
{
	unsigned int i;
	while(delay_counter--)
	{
		i=81;
		while(i--);
	}
}
/*********************************************************************************************************/
/*********************************************************************************************************
*function:	send_rf_data()

*use:		doing the arrange work for transimit mode
*input parameter:	none
*output parameter:	none
*********************************************************************************************************/

void send_rf_data(void)
{
	unsigned char i;
	write_tx_address(4);
	write_tx_payload(30);
	TRX_CE=1;
	i=2;
	while(i--);
	TRX_CE=0;
	delay_ms(1);
}
/*********************************************************************************************************/
/*********************************************************************************************************
*function:		transmit_mode()

*use:		doing the arrange work for transimit mode
*input parameter:	none
*output parameter:	none
*********************************************************************************************************/

void transmit_mode(void)
{
	TXEN=1;				//Change the RF to the transmit mode
	while(STOP_SW==1)
	{
		LED1=0;//
		send_rf_data();		//Do if start_send_data button was pressed
		tx_data_buf[0]++;
		if(tx_data_buf[0]==0x5b)
		{
			tx_data_buf[0]=0x41;
		}
		delay_ms(70);
		LED1=1;//
		delay_ms(80);
	}
	task_switch=2;			//Change the status toggle to the receive mode
}
/*********************************************************************************************************/	
/*********************************************************************************************************
*function:		receive_mode()
*use:		doing the arrange work for receive mode
*input parameter:	none
*output parameter:	none
*********************************************************************************************************/	
void receive_mode(void)
{
	TXEN=0;				//Change the RF to the receive mode
	TRX_CE=1;
	LED1=0;
	delay_ms(1);
	while(START_SW==1)
	{
		if(DR==1)
		{
			LED1=1;
			read_rx_payload(32);
			send_rx_data_to_pc();
			delay_ms(55);
			LED=0;
		}
	}
	TRX_CE=0;
	task_switch=1;			//Change the status toggle to transmit mode
}
/*********************************************************************************************************/	
/*********************************************************************************************************
*function:		main()

*use:			blend all subroutines to do all work

*input parameter:	none
*output parameter:	none
*********************************************************************************************************/
void main(void)
{
	system_init();
	while(1)
	{
		switch (task_switch)
		{
			case 0:	break;
			case 1:	transmit_mode();//The test board working in the transmit mode
				break;	
			case 2:	receive_mode();	//The test board working in the receive mode
				break;
			default:break;
		}
	}
}
/*************************************THEEND**************************************************************/		

⌨️ 快捷键说明

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