昆明网站搜索优化/如何网络推广
程序调试及运行过程中,有时不方便使用串口调试助手等手段进行监测,这时,利用一个LED灯能很好地显示相关信息。
代码语言:C语言,实验平台是PIC18F25K22核心板。
//宏定义,决定是否打开LED灯进行显示
#define LED_DEBUG_FUNCTION /** LED灯显示打开*/
void LedOn(void)
{#ifdef LED_DEBUG_FUNCTIONLATB5 = 0;#endif
}/** LED灯显示关闭*/
void LedOff(void)
{#ifdef LED_DEBUG_FUNCTIONLATB5 = 1;#endif
}/** LED灯显示状态翻转*/
void LedToggle(void)
{#ifdef LED_DEBUG_FUNCTIONLATB5 = ~LATB5;#endif
}/** LED显示程序运行情况,具体运行逻辑:灭2s,然后以500ms进行闪烁,以此循环。* 闪烁次数:ledFlashTime* 闪烁时间:ledTimeBaseFlag(在定时器中断中使能,时间可自己定义)*/
void led_display(void)
{#ifdef LED_DEBUG_FUNCTIONstatic uint8_t ledFlashCnt;if(ledTimeBaseFlag){ledTimeBaseFlag = 0;switch(ledDisplayState){case 0: //set led flash timesledFlashTime = 5; //defaultif(rtuOnlineFlag){ledFlashTime = 1;}else{ledFlashTime = 2;}if(errorStatus&CircuitIsOpen != 0x00){ledFlashTime = 3;}if(errorStatus&CircuitIsShort != 0x00){ledFlashTime = 4;}if(errorStatus&ACInputIsOver != 0x00){ledFlashTime = 5;}if(errorStatus&ACInputIsLow != 0x00){ledFlashTime = 6;}if(errorStatus&TempIsOver != 0x00){ledFlashTime = 7;}if(errorStatus&BallastIsLocked != 0x00){ledFlashTime = 8;}LedOff();ledFlashCnt = 0;ledDisplayState = 1;break;case 1:ledDisplayState = 2;break;case 2:ledDisplayState = 3;break;case 3:if( ++ledFlashCnt <= (ledFlashTime*2) ){LedToggle();}else{ledDisplayState = 0;}break;default:break;}}#endif
}