?? only receive.txt
字號:
#include "reg52.h"
#include "intrins.h"
#include "CC1100.h"
#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
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, 0xC8, 0x85, 0x51, 0x3A, 0x06, 0x1C, 0x6C};
//*****************************************************************************************
//函數名:delay(unsigned int s)
//輸入:時間
//輸出:無
//功能描述:普通廷時
//*****************************************************************************************
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_();
_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)
{
CSN=0;
SCLK=0;
CSN=1;
}
/*****************************************************************************************
//函數名:CpuInit()
//輸入:無
//輸出:無
//功能描述:SPI初始化程序
/*****************************************************************************************/
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); //寫地址
SpiTxRxByte(value); //寫入配置
CSN = 1;
}
//*****************************************************************************************
//函數名:void halSpiWriteBurstReg(INT8U addr, INT8U *buffer, INT8U count)
//輸入:地址,寫入緩沖區,寫入個數
//輸出:無
//功能描述:SPI連續寫配置寄存器
//*****************************************************************************************
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -