Ejemplo n.º 1
0
void led_update(enum led_status ls)
{
	static bool is_pwm = false;
	static bool step_sign = false;
	static const int pwm_max = 100;
	static const int pwm_one_step = 10;
	static int pwm_last = 0;

	if (!is_pwm && ls == LST_NORMAL) {
		LED_ENABLE_PWM_MODE();
		is_pwm = true;
	}
	else if (is_pwm && ls != LST_NORMAL) {
		LED_DISABLE_PWM_MODE();
		is_pwm = false;
	}

	if (ls == LST_FAIL) {
		LED_ON();
	}
	else if (ls == LST_NORMAL) {
		pwm_last += (step_sign) ? -pwm_one_step : pwm_one_step;
		if (0 > pwm_last || pwm_last > pwm_max) {
			step_sign = !step_sign;
			pwm_last += (step_sign) ? -pwm_one_step : pwm_one_step;
		}

		LED_PWM(pwm_last);
	}
	else { /* INIT */
		LED_TOGGLE();
	}
}
Ejemplo n.º 2
0
/*=====================================================================================================*/
void LED_PWM_Shine( u16 LED_Sel, u16 LED_ShineNum, u16 LED_DelayTime )
{
    u16 Tmp_LED_Sel = 0;

    Tmp_LED_Sel = (u8)(LED_Sel>>4);

    while(LED_ShineNum--) {
        LED_PWM(LED_ON, Tmp_LED_Sel, LED_DelayTime);
        LED1 = ((LED_Sel&0x01) == 0x01) ? 0 : 1;
        LED2 = ((LED_Sel&0x02) == 0x02) ? 0 : 1;
        LED3 = ((LED_Sel&0x04) == 0x04) ? 0 : 1;
        LED4 = ((LED_Sel&0x08) == 0x08) ? 0 : 1;
        LED_PWM(LED_OFF, Tmp_LED_Sel, LED_DelayTime);
        LED1 = 1;
        LED2 = 1;
        LED3 = 1;
        LED4 = 1;
    }
}