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

📄 cc1000.c

📁 GPS 与 GSM协议C语言实现源码,为了大家能够更好的理解神秘的导航和手机通讯。
💻 C
字号:
#include <iom128v.h>
#include "board.h"
#include "datatype.h"
#include "cc1000.h"
//---------------------------------___CC1000___---------------------------------
//-----------------------------------第一部分-----------------------------------
//---------------------------------工作方式的配置-------------------------------                   
                                                                                 //NOTE
VOLT_DISTANCE table_volt_distance[ ]  = {{0x00,0x01},{0x02,0x03}};               //CC1000的RSSI信号强度对应的距离表,待做完实验将此表完成  

BYTE    _cc1000_cfg_addr[29]     = {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0X0B,0x0C,0x0D,0x0E,0x0F,
                                    0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C                };
BYTE    _cc1000_txmode_data[29]  = {0xE1,0x75,0xA0,0x00,0x58,0x33,0x13,0x01,0xAB,0xF3,0x33,0xFF,0x30,0x10,0x26,0x90,
                                    0x6F,0x23,0x10,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00                };
BYTE    _cc1000_rxmode_data[29]  = {0x11,0x75,0xA0,0x00,0x58,0x33,0x13,0x01,0xAB,0x8C,0x32,0xFF,0x40,0x10,0x26,0x90,
                                    0x6F,0x23,0x10,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00                };
BYTE    _cc1000_fromtxtorx_addr_data[6] = {0x00,0x11,0x90,0x8C,0xC0,0x40 } ; 
BYTE    _cc1000_fromrxtotx_addr_data[6] = {0x00,0xE1,0x90,0xF3,0xC0,0x30 } ;                           				                                                                                                

void delay(int t)
{
 int i, j;
 for(i = 0; i < t; i++)
 	   for(j = 0; j < t; j++) ;
}

/*void gra_pclks(void)
{ 
  BYTE   tag=0x00; 
      while(1)
	  {
	   if (tag==0x01) { PCLK=1;tag=0X00;}delay(20);
	   if (tag==0x00) { PCLK=0;tag=0x01;}delay(20);
	  }
}

void gra_pales(void)
{ 
  BYTE   tag=0x00; 
  delay(10);  
      while(1)
	  {
	   if (tag==0x01) { PCLK=1 ; tag=0X00 ; delay(140) ;}
	   if (tag==0x00) { PCLK=0 ; tag=0x01 ; delay(140) ;}
	  }
  delay(10);
}*/
void gra_pclks( BYTE tag )
{ 
 	   if (tag==0x01) PCLK=1 ; 
	   if (tag==0x00) PCLK=0 ;
}

void gra_pdata( BYTE tag )
{ 
 	   if (tag==0x01) PDATA=1 ; 
	   if (tag==0x00) PDATA=0 ;
}


void gra_pales( BYTE tag )
{ 
 	   if (tag==0x01)   PALE=1 ; 
	   if (tag==0x00)   PALE=0 ;
}

void gra_pdatas (BYTE cofig_data[],int n)
{
 int i=0;
 BYTE temp,te;
 for(i=0;i<=n;i++)
  {
   temp=cofig_data[i];PORTC=temp;
   bytetobit(temp);
  } 
}
/*BYTE bytetobit(BYTE temp) 
 {
  int i;
  BYTE tag;
  for(i=1;i<=8;i++)
   {PORTE=temp;
    if(((temp=temp<<1) & 0x80) == 0x80) {PDATA = 1;tag=1; }
    else {PDATA = 0;tag=0 ;}
	
   }
  return tag;
} */

void bytetobit(BYTE temp) 
 {
   int i;
   for(i=0;i<=7;)
   {
    if(((temp=temp<<i++) & 0x80) == 0x80) {PDATA = 1;delay(2000);}
    else {PDATA = 0;delay(2000);}
   }
 
}  

BYTE byteoutbit(BYTE tem,int i) 
{
   BYTE tag;
    if(((tem<<i) & 0x80) == 0x80) tag=1;                                         
    else tag=0;                                                                 
	return tag;                   
} 
void cc1000_config_wr(BYTE mode)
{ 
  int i,j ;
  BYTE bit_tag ,byte ;
  if(mode==TX_MODE)
 {
  for(i=0;i<29;i++)
   {
    gra_pales(0); delay(TIME) ;
    byte = _cc1000_cfg_addr[i];
    for(j=0;j<8;j++)
		   {
		    bit_tag = byteoutbit(byte,j);
			if(bit_tag==0x01){
			                 gra_pclks(1);gra_pdata(1);delay(TIME);               //前半周期
			                 gra_pclks(0);gra_pdata(1);delay(TIME);               //后半周期
							}
			if(bit_tag==0x00){
			                 gra_pclks(1);gra_pdata(0);delay(TIME);               //前半周期
			                 gra_pclks(0);gra_pdata(0);delay(TIME);               //后半周期
							}				
           
		   }
    gra_pdata(1);delay(TIME);
	byte = _cc1000_txmode_data[i] ;
    gra_pales(1); delay(TIME) ;
    for(j=0;j<=7;j++)
		   {
		    bit_tag = byteoutbit(byte,j);
			if(bit_tag==0x01){
			                   gra_pclks(1);gra_pdata(1);delay(TIME);               //前半周期
			                   gra_pclks(0);gra_pdata(1);delay(TIME);               //后半周期
							 }
			
			if(bit_tag==0x00) {
			                    gra_pclks(1);gra_pdata(0);delay(TIME);               //前半周期
			                    gra_pclks(0);gra_pdata(0);delay(TIME);               //后半周期
							  }				
           
		   }
		   delay(TIME);		   
   }
  }
 if(mode==RX_MODE)
 {
  for(i=0;i<29;i++)
   {
    gra_pales(0); delay(TIME) ;
    byte = _cc1000_cfg_addr[i];
    for(j=0;j<8;j++)
		   {
		    bit_tag = byteoutbit(byte,j);
			if(bit_tag==0x01){
			                 gra_pclks(1);gra_pdata(1);delay(TIME);               //前半周期
			                 gra_pclks(0);gra_pdata(1);delay(TIME);               //后半周期
							}
			if(bit_tag==0x00){
			                 gra_pclks(1);gra_pdata(0);delay(TIME);               //前半周期
			                 gra_pclks(0);gra_pdata(0);delay(TIME);               //后半周期
							}				
           delay(TIME);
		   }
    byte = _cc1000_rxmode_data[i] ;
    gra_pales(1); delay(TIME) ;
    for(j=0;j<=7;j++)
		   {
		    bit_tag = byteoutbit(byte,j);
			if(bit_tag==0x01){
			                   gra_pclks(1);gra_pdata(1);delay(TIME);               //前半周期
			                   gra_pclks(0);gra_pdata(1);delay(TIME);               //后半周期
							 }
			
			if(bit_tag==0x00) {
			                    gra_pclks(1);gra_pdata(0);delay(TIME);               //前半周期
			                    gra_pclks(0);gra_pdata(0);delay(TIME);               //后半周期
							  }				
           delay(TIME);
		   }		   
   }
 }
}   
//-----------------------------------第二部分--------------------------------------------------
//---------------------------------发送接收数据--------------------------------------------------
void cc1000_transmitter(BYTE cc1000_data[],int data_length)                     // cc1000发送数据
{
 int i;
 CC1000_DATA tran_data ;
 tran_data.cc1000_signal_head = CC1000_DATA_HEAD ;
 tran_data.cc1000_data_length = data_length ;
 tran_data.cc1000_signal_tail = CC1000_DATA_TAIL ;
 gra_dclk(1);delay(DTIME);gra_dclk(0);delay(DTIME);
 gra_dclk(1);delay(DTIME);gra_dclk(0);delay(DTIME);
 cc1000_digtal_mode(tran_data.cc1000_signal_head);
 cc1000_digtal_mode(tran_data.cc1000_data_length);
 for(i=0;i<=tran_data.cc1000_data_length-1;i++)
 {
  cc1000_digtal_mode(cc1000_data[i]);
 }  
  cc1000_digtal_mode(tran_data.cc1000_signal_tail); 
}
void gra_dclk( BYTE tag )
{ 
 	   if (tag==0x01) DCLK=1 ; 
	   if (tag==0x00) DCLK=0 ;
}
void gra_dio( BYTE tag )
{ 
 	   if (tag==0x01) DIO=1 ; 
	   if (tag==0x00) DIO=0 ;
}
void cc1000_digtal_mode(BYTE byte)
{
    int j=0;
	BYTE bit_tag;
	for(j=0;j<=7;j++)
		   {
		    bit_tag = byteoutbit(byte,j);
			if(bit_tag==0x01){
			                   gra_dclk(1);gra_dio(1);delay(DTIME);              //前半周期
			                   gra_dclk(0);gra_dio(1);delay(DTIME);              //后半周期
							 }
			
			if(bit_tag==0x00) {
			                    gra_dclk(1);gra_dio(0);delay(DTIME);             //前半周期
			                    gra_dclk(0);gra_dio(0);delay(DTIME);             //后半周期
							  }				
           
		   }	
}		   

void cc1000_receiver (BYTE cc1000_data[],int data_length)                        //接收CC1000的数据
     {
	  ;
	 }

⌨️ 快捷键说明

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