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

📄 tx_data.c

📁 cc2210无线传输
💻 C
字号:
#include <C8051f330.h>
#include <Intrins.h>

#define uchar unsigned char
#define uint  unsigned int
//发射模块接在P1口上,分别是:CE:P1.4 CS:P1.3 CLK:P1.5 DATA:P1.6  DR:P1.4
sbit CE2 = P1^3;
sbit CS2 = P1^4;
sbit CLK2 = P1^5;
sbit DATA2 = P1^6;

sbit LedR=P1^2;
sbit LedG=P1^7;
char idata Config_Data[18];			//初始化配置字
char idata Tx_Data[6];
bdata unsigned char temp;
sbit bflag = temp^7;

void SYSCLK_Init (void)
{	
     OSCICN = 0x83;         // start external oscillator with
}

void Init_IO(void)
{
      XBR0      = 0x01;
      XBR1      = 0x40;
      P1MDOUT   = 0xFF;
    
}
void delay600ns()		//延时580ns,14个时钟周期
{
	_nop_();
	_nop_();
	_nop_();

}
void delay1(unsigned int x)   //x=1,41个时钟周期,1.7us;x=2,56个周期,2.3us(15个周期0.6us)
{									//该函数延时最长即x=65535为40ms
	unsigned int i;
	for(i=0;i<x;i++)
		;
}
void Config_Tx()
{
  char xdata Bytesend,Bitsend;

  Config_Data[0]=0x8e;  //test
  Config_Data[1]=0x08;
  Config_Data[2]=0x1c;   

  Config_Data[3]=0x18;  //Data_width(channel 2)
  Config_Data[4]=0x18;  //Data_width(channel 1)



Config_Data[5]=0x00;   //103:64,channel 2 address          
Config_Data[6]=0x00;
Config_Data[7]=0xcc;
Config_Data[8]=0xcc;
Config_Data[9]=0xcc;

Config_Data[10]=0x00;  //63:24,channel 1 address
Config_Data[11]=0x00;
Config_Data[12]=0xcc;
Config_Data[13]=0xcc;
Config_Data[14]=0xcc;

Config_Data[15]=0x63;  //address width,CRC 16bits
Config_Data[16]=0x6f;
Config_Data[17]=0x04;  //RF_Frequency_channel & RX/TX(1/0)
        
        CE2 = 0;
        CS2 = 0;
        CLK2 = 0;
        DATA2=0;                
	delay600ns();		//延时580ns,Td min 50ns
	CS2 = 1;		//配置模式,CS=1,CE=0
	delay1(7);		//延时5458ns,Tcs2data min 5us
	for(Bytesend=3;Bytesend<18;Bytesend++)//前三个测试字节可以不发!!!
	{
		temp = Config_Data[Bytesend];
		for(Bitsend=0;Bitsend<8;Bitsend++)
		{
			//CLK2 = 0;               //可省,前面已拉低
                        DATA2 = bflag;
			delay600ns();			//延时580ns
			CLK2 = 1;
	                delay600ns();	//延时580ns,Th min 500ns
	                CLK2 = 0;
			temp = temp<<1;
		}
	}
        
	CS2 = 0;        //CS置低使配置有效
}

void Tx_Send(unsigned char num)
{
    int i,j;
    Tx_Data[0]=0xcc;
    Tx_Data[1]=0xcc;
    Tx_Data[2]=0xcc;
    Tx_Data[3]=0xcc;   //接收方通道硬件地址
    Tx_Data[4]=num;
    Tx_Data[5]=num;
    CE2 = 0;
    CS2 = 0;
    CLK2 = 0;
    DATA2=0;
    delay600ns();	//延时580ns,Td min 50ns
    CE2 = 1;            //工作模式
    delay1(7);		//延时5458ns,Tcs2data min 5us
    for(i=0;i<6;i++)
    {
        temp=Tx_Data[i];
        for(j=0;j<8;j++)
        {
            //CLK1=0;    //可省,前面已拉低
            DATA2 = bflag;
	    delay600ns();			//延时580ns
	    CLK2 = 1;
	    delay600ns();	//延时580ns,Th min 500ns
	    CLK2 = 0;
	    temp = temp<<1;
        }
    }
    CE2 = 0;           //CE置低使发送有效

}
void Init()
{
  SYSCLK_Init ();
  Init_IO();
}
void main()
{
    int k;
    PCA0MD &= ~0x40;    // 禁止看门狗 
    Init();//初始化
    LedR=1;
    LedG=1;
    Config_Tx();
    while(1)
    {    
      Tx_Send(0x55);

	  LedR=~LedR;
         for(k=0;k<20;k++)
	    delay1(65535);
    }
}

⌨️ 快捷键说明

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