00001 /********************************************************* 00002 * Function: led driver 00003 * using RJ0,RJ1,RJ2,RJ3 for led display 00004 * 00005 * File: led.c 00006 * Author: Book Chen 00007 * Date 2009.07.06 00008 *********************************************************** 00009 */ 00010 #include "includes.h" 00011 00012 #define LedIdleState 0 00013 #define Led0OnState 1 00014 #define Led1OnState 2 00015 #define Led2OnState 3 00016 #define Led3OnState 4 00017 #define Led4OnState 5 00018 #define Led5OnState 6 00019 00020 #define Led0 RJ0 00021 #define Led1 RJ1 00022 #define Led2 RJ2 00023 #define Led3 RJ3 00024 00025 LED_CONTROL LedCtrl; 00026 /***************** 00027 * LedInit: 00028 * Initialize led variables 00029 ****************** 00030 */ 00031 void LedInit(void){ 00032 Led0=LED_OFF; 00033 Led1=LED_OFF; 00034 Led2=LED_OFF; 00035 Led3=LED_OFF; 00036 LedCtrl.State=Led0OnState; 00037 LedCtrl.Timer=100; 00038 } 00039 /***************** 00040 * LedSvc:(LedIsr) 00041 * Initialize led variables 00042 ****************** 00043 */ 00044 void LedSvc(void){ 00045 //void LedIsr(void){ 00046 if(LedCtrl.State==LedIdleState) return; 00047 if(LedCtrl.Timer!=0) return; 00048 switch(LedCtrl.State){ 00049 case LedIdleState: 00050 break; 00051 case Led0OnState: 00052 Led0=LED_ON; 00053 Led1=LED_OFF; 00054 Led2=LED_OFF; 00055 Led3=LED_OFF; 00056 LedCtrl.Timer=50; 00057 LedCtrl.State=Led1OnState; 00058 break; 00059 case Led1OnState: 00060 Led0=LED_OFF; 00061 Led1=LED_ON; 00062 Led2=LED_OFF; 00063 Led3=LED_OFF; 00064 LedCtrl.Timer=20; 00065 LedCtrl.State=Led2OnState; 00066 break; 00067 case Led2OnState: 00068 Led0=LED_OFF; 00069 Led1=LED_OFF; 00070 Led2=LED_ON; 00071 Led3=LED_OFF; 00072 LedCtrl.Timer=20; 00073 LedCtrl.State=Led3OnState; 00074 break; 00075 case Led3OnState: 00076 Led0=LED_OFF; 00077 Led1=LED_OFF; 00078 Led2=LED_OFF; 00079 Led3=LED_ON; 00080 LedCtrl.Timer=50; 00081 LedCtrl.State=Led4OnState; 00082 break; 00083 case Led4OnState: 00084 Led0=LED_OFF; 00085 Led1=LED_OFF; 00086 Led2=LED_ON; 00087 Led3=LED_OFF; 00088 LedCtrl.Timer=20; 00089 LedCtrl.State=Led5OnState; 00090 break; 00091 case Led5OnState: 00092 Led0=LED_OFF; 00093 Led1=LED_ON; 00094 Led2=LED_OFF; 00095 Led3=LED_OFF; 00096 LedCtrl.Timer=20; 00097 LedCtrl.State=Led0OnState; 00098 break; 00099 } 00100 } 00101 00102 void LedStop(void){ 00103 LedCtrl.State=LedIdleState; 00104 } 00105 00106 void LedStart(void){ 00107 LedCtrl.State=Led0OnState; 00108 }