00001 /************************************************** 00002 * Function: Driver for led display 00003 * 00004 * File: led.c 00005 * Author: Book Chen 00006 * 2008.08.08 00007 **************************************************** 00008 */ 00009 #include "..\inc\includes.h" 00010 00011 #define Led0OnState 0 00012 #define Led1OnState 1 00013 #define Led2OnState 2 00014 #define Led3OnState 3 00015 00016 #define cLedOn 0 00017 #define cLedOff 1 00018 00019 sbit Led0=P1^4; 00020 sbit Led1=P1^5; 00021 sbit Led2=P1^6; 00022 sbit Led3=P1^7; 00023 00024 struct LED_CONTROL LedCtrl; 00025 void F_LedPowerOnInit(void) LargeReentrant; 00026 void F_LedSvc(void) LargeReentrant; 00027 00028 void F_LedPowerOnInit(void) LargeReentrant{ 00029 LedCtrl.State=Led0OnState; 00030 LedCtrl.Timer=100; 00031 } 00032 void F_LedSvc(void) LargeReentrant{ 00033 if(LedCtrl.Timer!=0) return; 00034 LedCtrl.Timer=200; 00035 LedCtrl.State++; 00036 if(LedCtrl.State>3) LedCtrl.State=0; 00037 switch(LedCtrl.State){ 00038 case Led0OnState: 00039 Led0=cLedOn; 00040 Led1=cLedOff; 00041 Led2=cLedOff; 00042 Led3=cLedOff; 00043 break; 00044 case Led1OnState: 00045 Led0=cLedOff; 00046 Led1=cLedOn; 00047 Led2=cLedOff; 00048 Led3=cLedOff; 00049 break; 00050 case Led2OnState: 00051 Led0=cLedOff; 00052 Led1=cLedOff; 00053 Led2=cLedOn; 00054 Led3=cLedOff; 00055 break; 00056 case Led3OnState: 00057 Led0=cLedOff; 00058 Led1=cLedOff; 00059 Led2=cLedOff; 00060 Led3=cLedOn; 00061 break; 00062 default: 00063 break; 00064 } 00065 } 00066