#include "uio.h" #include "board.h" volatile unsigned char uiosBitStatus; UIO_SWENUM uiosCtl[UIO_MAX]; short uioTick[UIO_MAX]; static void uioUpdateStatus(UIO_TYPEENUM uioType, UIO_STATUSENUM newStatus); static void newIoStatus(UIO_TYPEENUM value,UIO_SWENUM swType) { if(swType == uiosCtl[value]) return; uiosCtl[value]=swType; uioTick[value]=0; uioUpdateStatus(value,UIO_LOW);//切换状态后让灯先灭 } void uioStatusSet(UIO_INDENUM status){ switch(status){ case UIO_INDRX: newIoStatus(UIO_LED_RED, UIO_SW_KEEP_LOW); newIoStatus(UIO_LED_GREEN, UIO_SW_KEEP_HIGH); break; case UIO_INDTX: newIoStatus(UIO_LED_RED, UIO_SW_KEEP_HIGH); newIoStatus(UIO_LED_GREEN, UIO_SW_KEEP_LOW); break; case UIO_INDGT: newIoStatus(UIO_LED_RED, UIO_SW_FLASH_FAST); newIoStatus(UIO_LED_GREEN, UIO_SW_FLASH_FAST); break; case UIO_INDONLINE: newIoStatus(UIO_LED_RED, UIO_SW_KEEP_LOW); newIoStatus(UIO_LED_GREEN, UIO_SW_FLASH_SLOW); break; case UIO_INDOFFLINE: newIoStatus(UIO_LED_RED, UIO_SW_KEEP_LOW); newIoStatus(UIO_LED_GREEN, UIO_SW_FLASH_FAST); break; } } void uioStatusInit(void){ newIoStatus(UIO_LED_RED, UIO_SW_KEEP_LOW); newIoStatus(UIO_LED_GREEN, UIO_SW_KEEP_LOW); } static void uioUpdateStatus(UIO_TYPEENUM uioType, UIO_STATUSENUM newStatus){ UIO_STATUSENUM lastBitStatus; if(uiosBitStatus & (1<