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

📄 main.c

📁 MS430+FM1702y读卡器程序,读写寄存器和卡.
💻 C
📖 第 1 页 / 共 2 页
字号:
  P1OUT &= ~BIT2;
  
  Delayms(50);                                // 延时,等待DCO稳定
  Delayms(50);
  WDTCTL = WDTPW+WDTCNTCL+WDTSSEL;            // wdt 定时1S
  P1OUT |= BIT2;
  ccc = ReadRawIO(0x01);
  Delayms(50);
  Delayms(50);
  Delayms(50);
  
  Delayms(50);
   Delayms(50);
  Delayms(50);
  P1OUT &= ~BIT2;
  
}
// inline structure in order to reset the communication channel between 
// function and ISR
#define ResetInfo(info)    \
            info.cmd            = 0; \
            info.status         = MI_OK;\
            info.irqSource      = 0;   \
            info.nBytesSent     = 0;   \
            info.nBytesToSend   = 0;  \
            info.nBytesReceived = 0;  \
            info.nBitsReceived  = 0;   \
            info.collPos        = 0;

// struct definition for a communication channel between function and ISR
typedef struct 
         {
            unsigned char  cmd;           //!< command code 
            char           status;        // communication status
            unsigned char  nBytesSent;    // how many bytes already sent
            unsigned char  nBytesToSend;  // how many bytes to send
            unsigned char  nBytesReceived;// how many bytes received
            unsigned short nBitsReceived; // how many bits received
            unsigned char  irqSource;     // which interrupts have occured
            unsigned char  collPos;       // at which position occured a
                                          // collision
         } MfCmdInfo;




void main()
{//wdt 要求在初始设置值满足前,对wdt进行设置或操作。
  unsigned char i,j;
 
  WDTCTL = WDTPW+WDTCNTCL+WDTSSEL;            // wdt 定时1S
  WDTCTL = WDTPW+WDTCNTCL+WDTSSEL;            // wdt 定时1S 
  WDTCTL = WDTPW+WDTCNTCL+WDTSSEL;            // wdt 定时1S 

  Delayms(50);                                // 延时,等待DCO稳定
  Delayms(50);
  WDTCTL = WDTPW+WDTCNTCL+WDTSSEL;            // wdt 定时1S
  Delayms(50);
  Delayms(50);
  WDTCTL = WDTPW+WDTCNTCL+WDTSSEL;
  Delayms(50);
  Delayms(50);
  WDTCTL = WDTPW+WDTCNTCL+WDTSSEL;
  Delayms(50);
  WDTCTL = WDTPW+WDTCNTCL+WDTSSEL;
  Delayms(50);
  Delayms(50);
// 设置工作SMCLK,以DCO作为SMCLK,设为16M,如果MCU校验值在,使用校验值,否则采用软件校准
  if ((CALBC1_16MHZ != 0xff)&&(CALDCO_16MHZ != 0xff))
  {
    BCSCTL1 = CALBC1_16MHZ ;                  // 用校验值进行DCO设置
    DCOCTL = CALDCO_16MHZ;
  }
  else
  {
    WDTCTL = WDTPW+WDTCNTCL+WDTSSEL;
    Set_DCO(DELTA_16MHZ);                     // 软件校准DCO的值
    WDTCTL = WDTPW+WDTCNTCL+WDTSSEL;     
   }
  SetUCB0_SPIMode();
  P1OUT &= ~BIT2;
 // ccc = ReadRawIO(0x01);
// FM1702SL_Init();
  // ResetFM();
     temp[0] = 0x00;
    SPIWrite(Page_Reg,temp,1); 
  
  while(1)
  {
    

      for(i=0; i<64; i++)
      {
        SPIRead(i,temp+i,1);
        Delayms(50);  
        WDTCTL = WDTPW+WDTCNTCL+WDTSSEL; 
      }
   
    /*
//写寄存器
    temp[0] = 0x80;
    SPIWrite(Page_Reg,temp,1);
    Delayms(50);  
    WDTCTL = WDTPW+WDTCNTCL+WDTSSEL; 
    temp[0] = 0x80;
    SPIRead(Command_Reg,temp,1);
    Delayms(50);  
    WDTCTL = WDTPW+WDTCNTCL+WDTSSEL; 
//    SPIRead(FIFO_Reg,temp,1);
    Delayms(50);  
    WDTCTL = WDTPW+WDTCNTCL+WDTSSEL;   
    SPIRead(FIFOLength_Reg,temp,1);
    Delayms(50);  
    WDTCTL = WDTPW+WDTCNTCL+WDTSSEL; 
    SPIRead(SecondaryStatus_Reg,temp,1);
    Delayms(50);  
    WDTCTL = WDTPW+WDTCNTCL+WDTSSEL;    
    SPIRead(InterruptEn_Reg,temp,1);
    Delayms(50);  
    WDTCTL = WDTPW+WDTCNTCL+WDTSSEL; 
    SPIRead(InterruptRq_Reg,temp,1);
    Delayms(50);  
    WDTCTL = WDTPW+WDTCNTCL+WDTSSEL; 
    SPIRead(Control_Reg,temp,1);
    Delayms(50);  
    WDTCTL = WDTPW+WDTCNTCL+WDTSSEL; 
    SPIRead(ErrorFlag_Reg,temp,1);
    Delayms(50);  
    WDTCTL = WDTPW+WDTCNTCL+WDTSSEL; 
    SPIRead(BitFraming_Reg,temp,1);
    Delayms(50);  
    WDTCTL = WDTPW+WDTCNTCL+WDTSSEL; 
    SPIRead(TxControl_Reg,temp,1);
    Delayms(50);  
    WDTCTL = WDTPW+WDTCNTCL+WDTSSEL;   
    SPIRead(CwConductance_Reg,temp,1);
    Delayms(50);  
    WDTCTL = WDTPW+WDTCNTCL+WDTSSEL;     
    SPIRead(RxControl2_Reg,temp,1);
    Delayms(50);  
    WDTCTL = WDTPW+WDTCNTCL+WDTSSEL;  
    SPIRead(ChannelRedundancy_Reg,temp,1);
    Delayms(50);  
    WDTCTL = WDTPW+WDTCNTCL+WDTSSEL;  
    SPIRead(RxWait_Reg,temp,1);
    Delayms(50);  
    WDTCTL = WDTPW+WDTCNTCL+WDTSSEL;      
    
//写寄存器    
    */
    /*
    temp[0] = 0x81;
    SPIWrite(Page_Reg,temp,1);
    Delayms(50);  
    WDTCTL = WDTPW+WDTCNTCL+WDTSSEL;     
// 读出寄存器的值    
    SPIRead(Page_Reg,temp,1);
    Delayms(50);  
    WDTCTL = WDTPW+WDTCNTCL+WDTSSEL; 
    SPIRead(Command_Reg,temp+1,1);
    Delayms(50);  
    WDTCTL = WDTPW+WDTCNTCL+WDTSSEL; 
//    SPIRead(FIFO_Reg,temp+2,1);
    Delayms(50);  
    WDTCTL = WDTPW+WDTCNTCL+WDTSSEL;   
    SPIRead(FIFOLength_Reg,temp+3,1);
    Delayms(50);  
    WDTCTL = WDTPW+WDTCNTCL+WDTSSEL; 
    SPIRead(SecondaryStatus_Reg,temp+4,1);
    Delayms(50);  
    WDTCTL = WDTPW+WDTCNTCL+WDTSSEL;    
    SPIRead(InterruptEn_Reg,temp+5,1);
    Delayms(50);  
    WDTCTL = WDTPW+WDTCNTCL+WDTSSEL; 
    SPIRead(InterruptRq_Reg,temp+6,1);
    Delayms(50);  
    WDTCTL = WDTPW+WDTCNTCL+WDTSSEL; 
    SPIRead(Control_Reg,temp+7,1);
    Delayms(50);  
    WDTCTL = WDTPW+WDTCNTCL+WDTSSEL; 
    SPIRead(ErrorFlag_Reg,temp+8,1);
    Delayms(50);  
    WDTCTL = WDTPW+WDTCNTCL+WDTSSEL; 
    SPIRead(BitFraming_Reg,temp+9,1);
    Delayms(50);  
    WDTCTL = WDTPW+WDTCNTCL+WDTSSEL; 
    SPIRead(TxControl_Reg,temp+10,1);
    Delayms(50);  
    WDTCTL = WDTPW+WDTCNTCL+WDTSSEL;   
    SPIRead(CwConductance_Reg,temp+11,1);
    Delayms(50);  
    WDTCTL = WDTPW+WDTCNTCL+WDTSSEL;     
    SPIRead(RxControl2_Reg,temp+12,1);
    Delayms(50);  
    WDTCTL = WDTPW+WDTCNTCL+WDTSSEL;  
    SPIRead(ChannelRedundancy_Reg,temp+13,1);
    Delayms(50);  
    WDTCTL = WDTPW+WDTCNTCL+WDTSSEL;  
    SPIRead(RxWait_Reg,temp+14,1);
    Delayms(50);  
    WDTCTL = WDTPW+WDTCNTCL+WDTSSEL;  
// 读出寄存器的值        
    */
    _NOP();
    
    /*
    WDTCTL = WDTPW+WDTCNTCL+WDTSSEL;   
    Delayms(50);                                // 延时,等待DCO稳定
    Delayms(50);
    WriteRawIO(0x02,0x55);
    WDTCTL = WDTPW+WDTCNTCL+WDTSSEL;            // wdt 定时1S
    Delayms(50);
    Delayms(50);  
    WDTCTL = WDTPW+WDTCNTCL+WDTSSEL;   
    Delayms(50);                                // 延时,等待DCO稳定
    Delayms(50);
    WriteRawIO(0x02,0x66);
    WDTCTL = WDTPW+WDTCNTCL+WDTSSEL;            // wdt 定时1S
    Delayms(50);
    Delayms(50);      
    WDTCTL = WDTPW+WDTCNTCL+WDTSSEL;   
    Delayms(50);                                // 延时,等待DCO稳定
    Delayms(50);
    ccc = ReadIO(0x00);
    WDTCTL = WDTPW+WDTCNTCL+WDTSSEL;            // wdt 定时1S
    Delayms(50);
    Delayms(50);   
    ccc = 0;
    WDTCTL = WDTPW+WDTCNTCL+WDTSSEL;            // wdt 定时1S
    Delayms(50);
    Delayms(50);      
    WDTCTL = WDTPW+WDTCNTCL+WDTSSEL;   
    Delayms(50);                                // 延时,等待DCO稳定
    Delayms(50);
    ccc = ReadIO(0x02);
    WDTCTL = WDTPW+WDTCNTCL+WDTSSEL;            // wdt 定时1S
    Delayms(50);
    Delayms(50);   
    WDTCTL = WDTPW+WDTCNTCL+WDTSSEL;            // wdt 定时1S
    Delayms(50);
    Delayms(50);   
    ccc = 0;
    WDTCTL = WDTPW+WDTCNTCL+WDTSSEL;            // wdt 定时1S
    Delayms(50);
    Delayms(50);      
    WDTCTL = WDTPW+WDTCNTCL+WDTSSEL;   
    Delayms(50);                                // 延时,等待DCO稳定
    Delayms(50);
    ccc = ReadIO(0x04);   
     WDTCTL = WDTPW+WDTCNTCL+WDTSSEL;   
    Delayms(50);                                // 延时,等待DCO稳定
    Delayms(50);   
    */
  }
  //ResetFM();
  /*
  for(i=0; i<64;i++ )
  {
           WDTCTL = WDTPW+WDTCNTCL+WDTSSEL;   
    Delayms(50);                                // 延时,等待DCO稳定
    Delayms(50);
    WDTCTL = WDTPW+WDTCNTCL+WDTSSEL;            // wdt 定时1S
    Delayms(50);
    Delayms(50);    
       temp[i] = ReadIO(i);
    WDTCTL = WDTPW+WDTCNTCL+WDTSSEL;   
    Delayms(50);                                // 延时,等待DCO稳定
    Delayms(50);
    WDTCTL = WDTPW+WDTCNTCL+WDTSSEL;            // wdt 定时1S
    Delayms(50);
    Delayms(50);
    
  }*/
  /*
  for(i=0; i<64;i++)
  {
   // ResetFM();
        WDTCTL = WDTPW+WDTCNTCL+WDTSSEL;   
    Delayms(50);                                // 延时,等待DCO稳定
    Delayms(50);
    WDTCTL = WDTPW+WDTCNTCL+WDTSSEL;            // wdt 定时1S
    Delayms(50);
    Delayms(50);
        WDTCTL = WDTPW+WDTCNTCL+WDTSSEL;   
    Delayms(50);                                // 延时,等待DCO稳定
    Delayms(50);
    WDTCTL = WDTPW+WDTCNTCL+WDTSSEL;            // wdt 定时1S
    Delayms(50);
    Delayms(50);
    temp[i] = ReadRawIO(i);
    Delayms(50);
    WDTCTL = WDTPW+WDTCNTCL+WDTSSEL;
    Delayms(50);    

    ccc = 0;
  }
*/
}


⌨️ 快捷键说明

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