📄 lighting_demo_device.c
字号:
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 + -