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

📄 rf_txover.c

📁 c8051f单片机控制ptr4000的收发程序
💻 C
字号:
#include "C8051F120.h"
#include "INTRINS.H"
  sbit  dat=P0^7;   //data
  sbit  pwr=P0^3;   //pwr
  sbit  led=P0^4; //clk2
  sbit  dout0=P0^5; //dout2
  sbit  clk=P0^6;   //clk1
  sbit  cs=P4^7;   //cs
  sbit ce=P4^6;   //ce
  sbit dr2=P4^5;   //dr2
  sbit dr1=P4^4; //dr1
  bit t;


  unsigned char variable1;
  unsigned char variable2;
  unsigned char config_data[15];
  unsigned char conf_data[8]={0xcc,0xcc,0xcc,0xcc,0x41,0x42,0x43,0x44};

  unsigned char m;
  unsigned char n;
  unsigned char temp;


void delayus(unsigned char us)
{unsigned char i;
  for (i=0;i<us;i++)
  {_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
  }
 }

void delayms(unsigned char ms)
{unsigned char rrr,cnt;
for (rrr=0;rrr<ms;rrr++)
  {
   for(cnt=0;cnt<4;cnt++)
      delayus(250);
  }

}



void Oscillator_Init()
{
    int i = 0;
    SFRPAGE   = CONFIG_PAGE;
    OSCXCN    = 0x77;
    for (i = 0; i < 3000; i++);  // Wait 1ms for initialization
    while ((OSCXCN & 0x80) == 0);
    CLKSEL    = 0x01;
}


void Port_IO_Init()
{
    SFRPAGE   = CONFIG_PAGE;
    P0MDOUT   = 0xFF;
    P4MDOUT   = 0xFF;
    XBR2      = 0x40;
}





 void pwrconfig(void)
  {
   int i,j;
 
  
  config_data[0]=0x20;     //119:112
  config_data[1]=0x20;     //112:104,通道1数据长度
  config_data[2]=0x00;     //103:64,channel 2 address
  config_data[3]=0xcc;
  config_data[4]=0xcc;
  config_data[5]=0xcc;
  config_data[6]=0xcc;
  config_data[7]=0x00;     //63:24,channel 1 address
  config_data[8]=0xcc;
  config_data[9]=0xcc;
  config_data[10]=0xcc;
  config_data[11]=0xcc;
  config_data[12]=0x83;   //address width,CRC 16bits
  config_data[13]=0x4e;   
  config_data[14]=0x04;   //定义工作模式为发送模式
  pwr=0;             //掉电模式
  cs=0;
  ce=0;
  clk=0;
  dat=0;
  pwr=1;             //数据发送结束,进入stand by mode
  delayms(5);
  cs = 1;           //进入配置方式
  delayus(6);         //CS到dat至少延迟5us Tcs2data 
  dat=0;
 for(i=0;i<15;i++)
  {
  variable1=config_data[i];
	 for(j=7;j>=0;j--)
	  {
	   
		SFRPAGE   = CONFIG_PAGE;
	
	    dat=(variable1>>j)&0x01; //配置先写入高位MSB
	    delayus(5);           //Ts
	    clk=1;
	    delayus(5);        //时钟信号高电平保持最多3ms
	    clk=0;            //数据在CLK1上升沿写入
	   
	  }
	  m++;
  }
  cs=0;               //CS置低使配置有效
}



void Send_data(void)
  {
  int i,j;
  n=0;
  pwr = 1;       //待机模式
  ce = 0 ;
  cs = 0; 
  clk=0;
  delayus(1);
  ce=1;           //进入工作(发送)模式
  delayus(6);
    

    for(i=0;i<8;i++)
    { 
          variable2=conf_data[i];
          for(j=7;j>=0;j--)
          {
              
           clk=0;
		   SFRPAGE   = CONFIG_PAGE;
	
	      dat=(variable2>>j)&0x01; //配置先写入高位MSB
	      delayus(5);            //Ts
	      clk=1;
	      delayus(5); 
		  clk=0; 
          n++; 
          }
      
    } 
  ce=0;  
  delayus(180);
   
  
}


void main()
{
  Oscillator_Init();
  Port_IO_Init();
  WDTCN = 0Xde;
  WDTCN = 0Xad;
  pwrconfig();
  Send_data();
 
}

⌨️ 快捷键说明

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