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

📄 starnet.c

📁 都是主从板程序
💻 C
📖 第 1 页 / 共 2 页
字号:
        MCPSDataRequest(&gsTxPacket); 
        u16NewTime = MCUReadTmr1 ();
        u16RTXOldTime = u16NewTime;
        LedDrive(u8Channel); 
        while ((u16NewTime-u16RTXOldTime) < DWELLTIME1)
        {
            u16NewTime = MCUReadTmr1 ();
        }      
        MLMERXEnableRequest(&gsRxPacket, RXTIMEOUT); // Wait for target device response or timeout */
        
            while (gu8RTxMode != IDLE_MODE) // Wait until RX is done */
            {
               LOW_POWER_WHILE(); // Conserve MCU power */
            }
            if ((gsRxPacket.u8Status == SUCCESS)) // Good packet received */
            {
               if ((gauRxDataBuffer[0] == 0xE1)  && (gauRxDataBuffer[2] == SECURITY) && (gauRxDataBuffer[3] == u8ED)&&(gauRxDataBuffer[4] == u8Channel)&& (gauRxDataBuffer[7] == numREQ))
               {
                    u8AppStatus=2;
                    LedDrive(0x09);
               }
            }
  }
  while(u8AppStatus==2) 
  {        u8Dsn++; 
            if (u8Dsn == 0xFF) 
           {
           u8Dsn = 0x00;
           }
             
           for (i=0;i<gsTxPacket.u8DataLength+1;i++) 
           {
           gauTxDataBuffer[i]=gauRxDataBuffer[i];
           }
           txed= gauRxDataBuffer[1];
           gsTxPacket.u8DataLength = 8;
           gauTxDataBuffer[4]=delivernum;
           gauTxDataBuffer[5]=u8Dsn ;
           gauTxDataBuffer[7]=deliverCMD;
           gsTxPacket.u8DataLength = 8;
           
           u16NewTime = MCUReadTmr1 ();
           u16RTXOldTime = u16NewTime;
        while ((u16NewTime-u16RTXOldTime) < DWELLTIME) /* 46mS */
        {
            u16NewTime = MCUReadTmr1 ();
        }
           MCPSDataRequest(&gsTxPacket); /* Transmit the packet */
        u16NewTime = MCUReadTmr1 ();
        u16RTXOldTime = u16NewTime;
        while ((u16NewTime-u16RTXOldTime) < DWELLTIME1)
        {
            u16NewTime = MCUReadTmr1 ();
        }
        MLMERXEnableRequest(&gsRxPacket,RXTIMEOUT); /* Wait for target device response or timeout */
             while (gu8RTxMode != IDLE_MODE) /* Wait until RX is done */
            {
                LOW_POWER_WHILE(); /* Conserve MCU power */
            }
            if ((gsRxPacket.u8Status == SUCCESS)) /* Good packet received */
            {
                if ((gauRxDataBuffer[0] == 0xE1) && (gauRxDataBuffer[1] == txed) && (gauRxDataBuffer[2] == SECURITY) && (gauRxDataBuffer[3] == u8ED)&&(gauRxDataBuffer[4] == delivernum) &&(gauRxDataBuffer[7] == ACKBACK)) 
                {
                  
                        LedDrive(delivernum); /* All LEDs on */
                        MCUDelay(LONGFLASHOFF);
                        MCUDelay(LONGFLASHOFF);
                        MCUDelay(LONGFLASHOFF);
                        u8AppStatus = 0; 
                        delivernum++;
                        if(delivernum==0x10)
                        delivernum=1;
                        u8Flag=1;
                        u8LinkQuality = MLMELinkQuality (); /* Unused but available */
                        u16OldTime = MCUReadTmr1 ();
                        u16NewTime = u16OldTime;
                        while ((u16NewTime-u16OldTime) < 0x3750)
                        {
                            u16NewTime = MCUReadTmr1 ();
                        }
                }
               /* else

                {
                    u16Count = 0;
                    while (u16Count < SHORTFLASHCOUNT) 
                    {
                        
                          
                        u16OldTime = MCUReadTmr1 ();
                        u16NewTime = u16OldTime;
                        while ((u16NewTime-u16OldTime) < SHORTFLASHON)
                        {
                            u16NewTime = MCUReadTmr1 ();
                        }
                       
                        u16OldTime = MCUReadTmr1 ();
                        u16NewTime = u16OldTime;
                        while ((u16NewTime-u16OldTime) < SHORTFLASHOFF)
                        {
                            u16NewTime = MCUReadTmr1 ();
                        }
                        u16Count ++;    
                    }
                }  */
            }
        
        if (u8Flag != 1) 
        {
            u8RetryCount++; 
            if (u8RetryCount == MAXTRY)
            {
                u8AppStatus = 0; 
                /*u16Count = 0;
                
                  
                while (u16Count < SHORTFLASHCOUNT) 
                {
                    LedDrive(0x0f);
                    u16OldTime = MCUReadTmr1 ();
                    u16NewTime = u16OldTime;
                    while ((u16NewTime-u16OldTime) < SHORTFLASHON)
                    {
                        u16NewTime = MCUReadTmr1 ();
                    }
                    LedDrive(0x00);
                    u16OldTime = MCUReadTmr1 ();
                    u16NewTime = u16OldTime;
                    while ((u16NewTime-u16OldTime) < SHORTFLASHOFF)
                    {
                        u16NewTime = MCUReadTmr1 ();
                    }
                u16Count ++;    
                } */
                
            }
            else
            u8AppStatus = 2;
        } //flag!=1
        
      }  // app=1
    }   //for
  }     //main
    
    
    
    
  

/**************************************************************
*    Interrupt:     MC13192 initiated interrupt handler
*    Parameters: none
*    Return:        none
*    Actions:    Disables the pushbutton interrupt
**************************************************************/
interrupt void KBD_ISR()
{
  /* Disable the PB0 IRQ. Not needed until a new STOP. */
  KBI1SC_KBI1E = 0;
  
  KBI1SC_KBACK = 1;
}

/**************************************************************
*    Function:     LED driver
*    Parameters: state. 1-4 is light only that LED.
*   5 is turn all off. 6 is all on.
*    Return:        none
**************************************************************/
void LedDrive (UINT8 state)
{
  switch (state)
  { 
    case 0x00:
    LED1 = 1;
    LED2 = 1;
    LED3 = 1;
    LED4 = 1;
    break;
    case 0x01:
    LED1 = 0;
    LED2 = 1;
    LED3 = 1;
    LED4 = 1;
    break;
    case 0x02:
    LED1 = 1;
    LED2 = 0;
    LED3 = 1;
    LED4 = 1;
    break;
    case 0x03:
    LED1 = 0;
    LED2 = 0;
    LED3 = 1;
    LED4 = 1;
    break;
    case 0x04:
    LED1 = 1;
    LED2 = 1;
    LED3 = 0;
    LED4 = 1;
    break;
    case 0x05:
    LED1 = 0;
    LED2 = 1;
    LED3 = 0;
    LED4 = 1;
    break;
    case 0x06:
    LED1 = 1;
    LED2 = 0;
    LED3 = 0;
    LED4 = 1;
    break;
    case 0x07:
    LED1 = 0;
    LED2 = 0;
    LED3 = 0;
    LED4 = 1;
    break;
    case 0x08:
    LED1 = 1;
    LED2 = 1;
    LED3 = 1;
    LED4 = 0;
    break;
    case 0x09:
    LED1 = 0;
    LED2 = 1;
    LED3 = 1;
    LED4 = 0;
     break;
    case 0x0a:
    LED1 = 1;
    LED2 = 0;
    LED3 = 1;
    LED4 = 0;
    break;
    case 0x0b:
    LED1 = 0;
    LED2 = 0;
    LED3 = 1;
    LED4 = 0;
    break;
    case 0x0c:
    LED1 = 1;
    LED2 = 1;
    LED3 = 0;
    LED4 = 0;
    break;
    case 0x0d:
    LED1 = 0;
    LED2 = 1;
    LED3 = 0;
    LED4 = 0;
    break;
    case 0x0e:
    LED1 = 1;
    LED2 = 0;
    LED3 = 0;
    LED4 = 0;
    break;
    case 0x0f:
    LED1 = 0;
    LED2 = 0;
    LED3 = 0;
    LED4 = 0;
    break;
   
  }
  return;
}

/**************************************************************
*    Function:     Received data handler
*    Parameters: rx_packet_t
**************************************************************/
void MCPSDataIndication(tRxPacket *gsRxPacket)
/* Just a direct return. Main loop will handle it. */
{
}                                

/**************************************************************
*    Function:     MC13192 reset handler
*    Parameters: none
**************************************************************/
void MLMEMC13192ResetIndication (void)
/* Not implemented. */
{
}

/**************************************************************
*    Function:     Read MCU timer.
*    Parameters: none
*    Return:        16-bit timer value.
**************************************************************/
UINT16 MCUReadTmr1(void)
{
  UINT16  w; /* w[0] is MSB, w[1] is LSB */
  ((UINT8*)&w)[0] = TPM1CNTH; /* MSB */
  ((UINT8*)&w)[1] = TPM1CNTL; /* LSB */
  return w;
}

/**************************************************************
*    Function:     Delay.
*    Parameters: Delay u16Count
*    Return:        none.
**************************************************************/
void MCUDelay (UINT16 delay_t)
{
  UINT16 u16MCUOldTime;
  UINT16 u16MCUNewTime;
  u16MCUOldTime = MCUReadTmr1();
  u16MCUNewTime = u16MCUOldTime;
  while ((u16MCUNewTime-u16MCUOldTime) < delay_t)
  {
    u16MCUNewTime = MCUReadTmr1();
  }
}

⌨️ 快捷键说明

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