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

📄 lighting_demo_device.c

📁 都是主从板程序
💻 C
📖 第 1 页 / 共 2 页
字号:
                u16RTXOldTime = u16NewTime;
                while ((u16NewTime-u16RTXOldTime) < u16LagTime1)
                {
                    u16NewTime = MCUReadTmr1 ();
                }
                MCPSDataRequest(&sTxPacket);
                u16NewTime = MCUReadTmr1 ();
                u16RTXOldTime = u16NewTime;
                while ((u16NewTime-u16RTXOldTime) < u16LagTime2)
                {
                    u16NewTime = MCUReadTmr1 ();
                }
                LedDrive(0x0f);
                MCUDelay(LONGFLASHOFF);
                LedDrive(0x00);
                MLMERXEnableRequest(&sRxPacket, 0x); /* back to on */
            }
            
           
        }
        else
        {
            u16Count = 0;
            while (u16Count < SHORTFLASHCOUNT) /* Flash all LEDs on/off a few times to indicate conflict */
            {
                
                u16OldTime = MCUReadTmr1 ();
                u16NewTime = u16OldTime;
                while ((u16NewTime-u16OldTime) < SHORTFLASHON)
                {
                    u16NewTime = MCUReadTmr1 ();
                }
                
    
                u16OldTime = MCUReadTmr1 ();
                u16NewTime = u16OldTime;
                while ((u16NewTime-u16OldTime) < SHORTFLASHOFF)
                {
                    u16NewTime = MCUReadTmr1 ();
                }
                u16Count ++;    
            }
            MLMERXEnableRequest(&sRxPacket, 0x); /* back to on */
        }
    }
    if ((u8XcvrMode == 2) || (u8XcvrMode == 3)) /* reply after a delay for TDD. Sends the u8LightLed on/off anyway */
    {
        u8XcvrMode = 0; /* When done, back to mode 0 */
      
     if ((LED1 == 0)&&(LED2 == 0)&&(LED3 == 0)&&(LED4 == 0))
    {
        u8GetLed = 0x0F;
    }
    
    if ((LED1 == 1)&&(LED2 == 0)&&(LED3 == 0)&&(LED4 == 0))
    {
        u8GetLed = 0x0E;
    }
    if ((LED1 == 0)&&(LED2 == 1)&&(LED3 == 0)&&(LED4 == 0))
    {
        u8GetLed = 0x0D;
    }
    if ((LED1 == 1)&&(LED2 == 1)&&(LED3 == 0)&&(LED4 == 0))
    {
        u8GetLed = 0x0C;
    }
    
    if ((LED1 == 0)&&(LED2 == 0)&&(LED3 == 1)&&(LED4 == 0))
    {
        u8GetLed = 0x0B;
    }
    if ((LED1 == 1)&&(LED2 == 0)&&(LED3 == 1)&&(LED4 == 0))
    {
        u8GetLed = 0x0A;
    }
    if ((LED1 == 0)&&(LED2 == 1)&&(LED3 == 1)&&(LED4 == 0))
    {
        u8GetLed = 0x09;
    }
    if ((LED1 == 1)&&(LED2 == 1)&&(LED3 == 1)&&(LED4 == 0))
    {
        u8GetLed = 0x08;
    }
    if ((LED1 == 0)&&(LED2 == 0)&&(LED3 == 0)&&(LED4 == 1))
    {
        u8GetLed = 0x07;
    }
    if ((LED1 == 1)&&(LED2 == 0)&&(LED3 == 0)&&(LED4 == 1))
    {
        u8GetLed = 0x06;
    }
    if ((LED1 == 0)&&(LED2 == 1)&&(LED3 == 0)&&(LED4 == 1))
    {
        u8GetLed = 0x05;
    }
    if ((LED1 == 1)&&(LED2 == 1)&&(LED3 == 0)&&(LED4 == 1))
    {
        u8GetLed = 0x04;
    }
    if ((LED1 == 0)&&(LED2 == 0)&&(LED3 == 1)&&(LED4 == 1))
    {
        u8GetLed = 0x03;
    }
    if ((LED1 == 1)&&(LED2 == 0)&&(LED3 == 1)&&(LED4 == 1))
    {
        u8GetLed = 0x02;
    }
    if ((LED1 == 0)&&(LED2 == 1)&&(LED3 == 1)&&(LED4 == 1))
    {
       u8GetLed = 0x01;
    }
    if ((LED1 == 1)&&(LED2 == 1)&&(LED3 == 1)&&(LED4 == 1))
    {
        u8GetLed = 0x00;
    }     
        
        for (u8Count1=0; u8Count1<sRxPacket.u8DataLength+1; u8Count1++) /* . */
        {
            au8TxDataBuffer[u8Count1] = au8RxDataBuffer[u8Count1]; 
        }
        if (au8RxDataBuffer[7] == TOGGLECMD)
        {
            au8TxDataBuffer[7] = ACKBACK;
        }
        else
        {
            au8TxDataBuffer[7] = QUERYBACK;
        }
        au8TxDataBuffer[sRxPacket.u8DataLength] = 'D'; 
        au8TxDataBuffer[4] = u8GetLed; 
        au8TxDataBuffer[6] = rxcount; 
        sTxPacket.u8DataLength = sRxPacket.u8DataLength+1;
        u16NewTime = MCUReadTmr1 ();
        u16RTXOldTime = u16NewTime;
        /* Dwell for possible repeats. */
        while ((u16NewTime-u16RTXOldTime) < DWELLTIME) /* 46mS */
        {
            u16NewTime = MCUReadTmr1 ();
        }
        MCPSDataRequest(&sTxPacket);
        u16NewTime = MCUReadTmr1 ();
        u16RTXOldTime = u16NewTime;
        while ((u16NewTime-u16RTXOldTime) < DWELLTIME2) /* 44mS */
        {
            u16NewTime = MCUReadTmr1 ();
        }
        u16RTXOldTime = u16NewTime;
        MLMERXEnableRequest(&sRxPacket, 0x); /* back to on */
    }
  }
}

/**************************************************************
*    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:     LED state return
*    Returns LED state. 0xFF is on, 0x00 is off.
**************************************************************/


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

/**************************************************************
*    Function:     MC13192 reset handler (not yet implemented)
*    Parameters: none
**************************************************************/
void MLMEMC13192ResetIndication (void)
{
  LED1 = 0;
  LED2 = 0;
  LED3 = 0;
  LED4 = 0;
  for(;;);
}

/**************************************************************
*    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 + -