Тупая модификация, без анализа логики. Исходный текст:
#define DRV_LCD_TIME 1
//========================================================================
void drv_char_dsp (void)
{
switch (_drv_lcd)
{
case DRV_CHAR_DSP_INIT:
init_char_dsp();
clr_dsp_buf;
lcd_send_com(LINE_1+7);
lcd_send_data('P');
lcd_send_data('r');
lcd_send_data('i');
lcd_send_data('v');
lcd_send_data('e');
lcd_send_data('t');
set_timer(ST_DRV_CHAR_DSP, 1<<TMR_UNLOCK_FLG, DRV_LCD_TIME);
_drv_lcd = DRV_CHAR_DSP_SEND_ADDR;
break;
case DRV_CHAR_DSP_SEND_ADDR:
set_timer(ST_DRV_CHAR_DSP, 1<<TMR_UNLOCK_FLG, DRV_LCD_TIME);
_drv_lcd = DRV_CHAR_DSP_SEND_CHAR;
break;
case DRV_CHAR_DSP_SEND_CHAR:
set_timer(ST_DRV_CHAR_DSP, 1<<TMR_UNLOCK_FLG, DRV_LCD_TIME);
_drv_lcd = DRV_CHAR_DSP_SEND_ADDR;
break;
default:
_drv_lcd = DRV_CHAR_DSP_INIT;
break;
}
} Шаг №1:#define DRV_LCD_TIME 1
//========================================================================
void drv_char_dsp (void)
{
switch (_drv_lcd)
{
case DRV_CHAR_DSP_INIT:
init_char_dsp();
clr_dsp_buf;
lcd_send_com(LINE_1+7);
lcd_send_data('P');
lcd_send_data('r');
lcd_send_data('i');
lcd_send_data('v');
lcd_send_data('e');
lcd_send_data('t');
_drv_lcd = DRV_CHAR_DSP_SEND_ADDR;
set_timer(ST_DRV_CHAR_DSP, 1<<TMR_UNLOCK_FLG, DRV_LCD_TIME);
break;
case DRV_CHAR_DSP_SEND_ADDR:
_drv_lcd = DRV_CHAR_DSP_SEND_CHAR;
set_timer(ST_DRV_CHAR_DSP, 1<<TMR_UNLOCK_FLG, DRV_LCD_TIME);
break;
case DRV_CHAR_DSP_SEND_CHAR:
_drv_lcd = DRV_CHAR_DSP_SEND_ADDR;
set_timer(ST_DRV_CHAR_DSP, 1<<TMR_UNLOCK_FLG, DRV_LCD_TIME);
break;
default:
_drv_lcd = DRV_CHAR_DSP_INIT;
break;
}
} Шаг №2:
#define DRV_LCD_TIME 1
//========================================================================
void drv_char_dsp (void)
{
switch (_drv_lcd)
{
case DRV_CHAR_DSP_INIT:
init_char_dsp();
clr_dsp_buf;
lcd_send_com(LINE_1+7);
lcd_send_data('P');
lcd_send_data('r');
lcd_send_data('i');
lcd_send_data('v');
lcd_send_data('e');
lcd_send_data('t');
_drv_lcd = DRV_CHAR_DSP_SEND_ADDR;
goto _st;
case DRV_CHAR_DSP_SEND_ADDR:
_drv_lcd = DRV_CHAR_DSP_SEND_CHAR;
goto _st;
case DRV_CHAR_DSP_SEND_CHAR:
_drv_lcd = DRV_CHAR_DSP_SEND_ADDR;
_st:
set_timer(ST_DRV_CHAR_DSP, 1<<TMR_UNLOCK_FLG, DRV_LCD_TIME);
break;
default:
_drv_lcd = DRV_CHAR_DSP_INIT;
break;
}
}