📄 main.c
字号:
/**************************************************************************************************
** 版权: 杭州利尔达科技有限公司
** 文件名: main.c
** 版本: v1.0
** 工作环境: IAR Embedded Workbench v3.41
** 作者: wxy
** 生成日期: 2007-05-10
** 功能: cc2500无线卡片
** 相关文件:
** 修改日志:
**************************************************************************************************/
#include "include.h"
/**************************************************************************************************
**变量定义
**************************************************************************************************/
extern char paTable[];
extern char paTableLen;
char txBuffer[8];
unsigned char BaseTimer;
unsigned char System_State;
/**************************************************************************************************
**常量定义
**************************************************************************************************/
__no_init unsigned char Idnumber[4] @ 0x1000;
/**************************************************************************************************
**宏定义
**************************************************************************************************/
#define Flag_RF_TX_State 0x01
#define Flag_KEY_SCAN 0x02
#define Flag_KEY_DOWN 0x04
#define LED_BIT BIT5
#define LED_DIR P2DIR
#define LED_OUT P2OUT
#define LED_ON LED_OUT |= LED_BIT
#define LED_OFF LED_OUT &= ~LED_BIT
/**************************************************************************************************
**函数名称:void main (void)
**入口参数:无
**出口参数:无
**功能描述:主循环函数
**************************************************************************************************/
void main (void)
{
WDTCTL = WDTPW + WDTHOLD;
BCSCTL1 = CALBC1_8MHZ; // 设置 DCO 为8MHz
DCOCTL = CALDCO_8MHZ;
IFG1 &= ~OFIFG; // 清除晶振失效标志
P1OUT = 0x00;
P1DIR |= 0xf7;
P2OUT = BIT2;
P2DIR |= 0xf9;
LED_OUT &= ~LED_BIT;
LED_DIR |= LED_BIT;
TI_CC_GDO0_PxDIR &= ~TI_CC_GDO0_PIN;
TI_CC_SPISetup(); // 初始化 SPI 接口
TI_CC_PowerupResetCCxxxx(); // 复位 CC2500
writeRFSettings(); // 写配置寄存器
TI_CC_SPIWriteBurstReg(TI_CCxxx0_PATABLE, paTable, paTableLen);
TI_CC_SPIStrobe(TI_CCxxx0_SIDLE);
TI_CC_SPIStrobe(TI_CCxxx0_SPWD);
TACTL = TASSEL_1 + TACLR; //启动计数器开始定时
TACCR0 = (32768/8);
TACCTL0 = CCIE;
TACTL |= MC_1;
System_State |= Flag_KEY_SCAN;
_EINT();
while(1)
{
WDTCTL = WDT_ARST_1000;
if(System_State &Flag_RF_TX_State)
{
System_State &=~ Flag_RF_TX_State; //清标志位
LED_ON;
txBuffer[0] = 0x05; // length
txBuffer[1] = Idnumber[0]; // ID0
txBuffer[2] = Idnumber[1]; // ID1
txBuffer[3] = Idnumber[2]; // ID2
txBuffer[4] = Idnumber[3]; // ID3
txBuffer[5] = txBuffer[1] + txBuffer[2] + txBuffer[3] + txBuffer[4];
RFSendPacket(txBuffer,6);
TI_CC_SPIStrobe(TI_CCxxx0_SPWD);
LED_OFF;
}
LPM3;
}
}
/**************************************************************************************************
**函数名称:__interrupt void Timer_A0 (void)
**入口参数:无
**出口参数:无
**功能描述:timerA0 中断服务程序
**************************************************************************************************/
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A0 (void)
{
if(System_State & Flag_KEY_SCAN)
{
if(System_State & Flag_KEY_DOWN) // 释放按键?
{
if (P2IN & 0x04)
{
System_State &= ~Flag_KEY_DOWN;
}
}
else
{
if (!(P2IN & 0x04)) // 按键按下?
{
System_State |= Flag_KEY_DOWN;
System_State |= Flag_RF_TX_State;
LPM3_EXIT;
}
}
}
BaseTimer++;
if (BaseTimer >= 7)
{
BaseTimer = 0;
LPM3_EXIT;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -