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

📄 main.c

📁 利用MSP430F2121单片机控制无线模块CC2500的一个演示程序。
💻 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 + -