?? receive.c
字號:
#include "reg52.h"
#include "intrins.h"
#include "CC1100.h"
//6264的讀寫2008-9-21 16:11:00
//-----------------------定義尋址的基址--------------------------------------------------------
//#define base_Adr 0x060000
//-----------------------定義地址指針,指向基址--------------------------------------------------------
//unsigned char xdata *ORAM_base_Adr = base_Adr;
//------------------------------------------------------------------------------------------------------
// 函數名稱 ORAM_write
// 入口函數 SJAREG_ADR,setting
// 出口函數 無
// 函數功能 寫外部數據存儲區
//------------------------------------------------------------------------------------------------------
//void ORAM_write(unsigned char ORAM_ADR, unsigned char setting)
// {
// *( ORAM_base_Adr+ ORAM_ADR)=setting;
// }
//------------------------------------------------------------------------------------------------------
// 函數名稱 ORAM _read
// 入口函數 ORAM _ADR
// 出口函數 ORAM _data
// 函數功能 讀外部數據存儲區
//------------------------------------------------------------------------------------------------------
//unsigned char ORAM_read(unsigned char ORAM_ADR)
//{
//unsigned char ORAM_data;
//ORAM_data=*( ORAM_base_Adr+ ORAM_ADR);
//return(ORAM_data);
//}
#define INT8U unsigned char
#define INT16U unsigned int
#define WRITE_BURST 0x40 //連續寫入
#define READ_SINGLE 0x80 //讀
#define READ_BURST 0xC0 //連續讀
#define BYTES_IN_RXFIFO 0x7F //接收緩沖區的有效字節數
#define CRC_OK 0x80 //CRC校驗通過位標志
#define INT8U unsigned char
#define INT16U unsigned int
INT8U arrRx[67]=0;
INT8U i;
INT8U leng;
sbit GDO0 =P3^2;
sbit GDO2 =P3^3;
sbit CSN =P1^4;
sbit MOSI =P1^5;
sbit MISO =P1^6;
sbit SCLK =P1^7;
//sbit spz =P2^4;
sbit LED1 =P2^1;
sbit LED2 =P2^1;
sbit key =P2^0;
/****************************************************************************************
//全局變量定義
/****************************************************************************************/
//INT16U TimeOutCount[2]={0,0}; //超時計數器
INT8U code PaTabel[8] = {0xC0 ,0xC0 ,0xC0 ,0xC0 ,0xC0 ,0xC0 ,0xC0 ,0xC0};//輸出為+10dm時的功率
//*****************************************************************************************
//函數名:delay(unsigned int s)
//輸入:時間
//輸出:無
//功能描述:普通廷時
//*****************************************************************************************
void delay(unsigned int s)
{
unsigned int i;
for(i=0; i<s; i++);
for(i=0; i<s; i++);
}
void halWait(INT16U timeout) {
do {
_nop_();//15us延時
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
} while (--timeout);
}
/*****************************************************************************************
//函數名:UartInit()
//輸入:無
//輸出:無
//功能描述:串口初始化程序
/*****************************************************************************************/
void UartInit(void)
{
SCON = 0x50; // uart in mode 1 (8 bit), REN=1
TMOD = TMOD | 0x20 ; // Timer 1 in mode 2
TH1 = 0xFD; // 9600 Bds at 11.059MHz
TL1 = 0xFD; // 9600 Bds at 11.059MHz
TR1 = 1; // Timer 1 run
}
/*****************************************************************************************
//函數名:void TimerInit(void)
//輸入:無
//輸出:無
//功能描述:定時器0初始化程序
/*****************************************************************************************/
void SpiInit(void)//spi口的初始化
{
CSN=0;
SCLK=0;
CSN=1;
}
/*****************************************************************************************
//函數名:CpuInit()
//輸入:無
//輸出:無
//功能描述:SPI初始化程序
/*****************************************************************************************/
void CpuInit(void)
{
UartInit();
// TimerInit();
SpiInit();
delay(5000);
}
//*****************************************************************************************
//函數名:ResetTimer(INT8U n)
//輸入:要復位的計時器
//輸出:無
//功能描述:復位計時器
//*****************************************************************************************
//void ResetTimer(INT8U n)
//{
// ET0 = 0; // Disable Timer0 interrupt
// timer[n & 0x01] = 0; // Clear timer[n]
// ET0 = 1; // Enable Timer0 interrupt
//}
//*****************************************************************************************
//函數名:INT16U ReadTimer(INT8U n)
//輸入:要讀的計時器
//輸出:讀出值
//功能描述:讀計時器
//*****************************************************************************************
//INT16U ReadTimer(INT8U n)
//{
// INT16U tmp;
// ET0 = 0; // Disable Timer0 interrupt
// tmp = timer[n]; // Clear timer[n]
// ET0 = 1; // Enable Timer0 interrupt
// return tmp;
//}
//*/
/*****************************************************************************************
//函數名:SendCh(ch)
//輸入:無
//輸出:無
//功能描述:串口發送一個字符
/*****************************************************************************************/
void SendCh(INT8U ch)
{
SBUF = ch;
while(!TI);//等待發送
TI = 0;
}
/*****************************************************************************************
//函數名:void SendStr(INT8U *arr)
//輸入:發送的字符串
//輸出:無
//功能描述:發送一個字符串
/*****************************************************************************************/
//void SendStr(INT8U *arr)
//{
// INT8U i;
// i = 0;
// while(arr[i] != '\0')
// {
// SendCh(arr[i]);
// i++;
// }
//}
//*****************************************************************************************
//函數名:SpisendByte(INT8U dat)
//輸入:發送的數據
//輸出:無
//功能描述:SPI發送接收一個字節
//*****************************************************************************************
INT8U SpiTxRxByte(INT8U dat)
{
INT8U i,temp;
temp = 0;
SCLK = 0;
for(i=0; i<8; i++)
{
if(dat & 0x80)//從最高位開始發送
{
MOSI = 1;
}
else MOSI = 0;
dat <<= 1;
SCLK = 1;
_nop_();
_nop_();
temp <<= 1;
if(MISO)temp++;
SCLK = 0;
_nop_();
_nop_();
}
return temp;
}
//*****************************************************************************************
//函數名:void RESET_CC1100(void)
//輸入:無
//輸出:無
//功能描述:復位CC1100
//*****************************************************************************************
void RESET_CC1100(void)
{
CSN = 0;
while (MISO);
SpiTxRxByte(CCxxx0_SRES); //寫入復位命令
while (MISO);
CSN = 1;
}
//*****************************************************************************************
//函數名:void POWER_UP_RESET_CC1100(void)
//輸入:無
//輸出:無
//功能描述:上電復位CC1100
//*****************************************************************************************
void POWER_UP_RESET_CC1100(void)
{
CSN = 1;
halWait(1);
CSN = 0;
halWait(1);
CSN = 1;
halWait(41);
RESET_CC1100(); //復位CC1100
}
//*****************************************************************************************
//函數名:void halSpiWriteReg(INT8U addr, INT8U value)
//輸入:地址和配置字
//輸出:無
//功能描述:SPI寫寄存器
//*****************************************************************************************
void halSpiWriteReg(INT8U addr, INT8U value)
{
CSN = 0;
while (MISO);
SpiTxRxByte(addr); //通過spi寫地址
SpiTxRxByte(value); //寫入配置
CSN = 1;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -