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

📄 main.cpp

📁 msp430 NRF2402 2.4G超低功耗识别卡程序for IAR430绝对可用
💻 CPP
字号:

//******************************************************************************
#include "msp430x21x1.h"
#include "rfcard.h"
//******************************************************************************
//******************************************************************************
//*****************************全局变量*****************************************
unsigned int scnt=0;
unsigned int cnt=0;
//__no_init unsigned char CardNo[4] @ 0xFFD0; 
unsigned char *CardNo=(unsigned char *)0xFFD0;
//******************************************************************************
// 主程序
//******************************************************************************
int main(void)
{
  WDTCTL = WDTPW + WDTHOLD;             // Stop watchdog timer
  WDTCTL =  WDT_ADLY_1000;              //;
  P1DIR |= 0x0d;                        // Set P1.0 to output direction
  P2DIR |= 0x1f;
  P1OUT = 0x00;                         // Toggle P1.0 using exclusive-OR
  DELAY100US(65);
  TXData[2]=CardNo[2];
  TXData[3]=CardNo[3];
  InitnRF2402();
//////////////////////
  DELAY100US(10);
  CEon();
  Dltime(10);
  TXDataPacket();
//////////////////////
  CEof(); 			        //Disable CE (TX Starts!)--standby mode
  CSof();  
  PWof(); 
  do                                    //等待晶振稳定
  {
    scnt++;
    if (scnt>100)
    {
      LPM4;
    }
    DELAY100US(500);
    IFG1 &=~OFIFG;
  } 
  while(OFIFG&IFG1);
  scnt=0;
  IE1 |= WDTIE;
  _EINT();                              // Enable interrupts
  LPM3;                                 // Enter LPM3
  while(1)
  {
      switch (scnt)
  {
  case 0 :
     PWon();
     scnt = 1;
     WDTCTL = WDTPW + WDTHOLD;          // Stop watchdog timer
     WDTCTL = WDT_ADLY_1_9;
     IE1 |= WDTIE;
     _EINT();                           // Enable interrupts
     LPM3;                              // Enter LPM3     
     break;
  case 1 :
     scnt = 2;
     IE1 |= WDTIE;
     _EINT();                           // Enable interrupts
     LPM3;                              // Enter LPM3         
     break;
  case 2 :
     CEon();                            //ChipCE=1; ShockBurst mode
     cnt%=16;
     cnt+=10;
     Dltime(cnt);
     TXDataPacket();                 
     PWof();
     scnt = 0;
     WDTCTL = WDTPW + WDTHOLD;          // Stop watchdog timer
     WDTCTL = WDT_ADLY_1000;  
     IE1 |= WDTIE;
     _EINT();                           // Enable interrupts
     LPM3;                              // Enter LPM3     
     break;
  default:
     PWof();
     scnt = 0;
     WDTCTL = WDTPW + WDTHOLD;          // Stop watchdog timer
     WDTCTL = WDT_ADLY_1_9;  
     IE1 |= WDTIE;
     _EINT();                           // Enable interrupts
     LPM3;                              // Enter LPM3         
  }
    _NOP();                             // Toggle P1.0 using exclusive-OR
  }
}

/******************************************************
// Watchdog Timer interrupt service routine
******************************************************/
#pragma vector=WDT_VECTOR
__interrupt void watchdog_timer(void)
{
    _DINT();
    cnt++;
    LPM3_EXIT;
}
/*****************************************************************************/ 


/*****************************************************************************/ 




⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -