📄 cc1000.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 + -