Mazur (10.09.2013 10:12, просмотров: 120) ответил Mazur на Как мне сделать следующее? Скажем, КА. В состояниях идентичные участки. Как сделать общую точку выхода? Что-то не вижу в K&R примеров. Goto?
Типа через ( . ) выкрутился. :)
//========================================================================
static u08 _drv_lcd;
static u08 _drv_lcd_next;
static u08 cnt_lines;
static u08 cnt_chars;
struct string DSP_BUF[];
//------------------------------------------------------------------------
//------------------------------------------------------------------------
void drv_char_dsp (void)
{
switch (_drv_lcd)
{
default:
_drv_lcd = DRV_CHAR_DSP_INIT;
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_next = DRV_CHAR_DSP_SEND_ADDR;
_drv_lcd = DRV_CHAR_DSP_SET_TMR;
break;
case DRV_CHAR_DSP_SEND_ADDR:
if (wait(ST_DRV_CHAR_DSP))
{
_drv_lcd_next = DRV_CHAR_DSP_SEND_CHAR;
_drv_lcd = DRV_CHAR_DSP_SET_TMR;
}
break;
case DRV_CHAR_DSP_SEND_CHAR:
if (wait(ST_DRV_CHAR_DSP))
{
_drv_lcd_next = DRV_CHAR_DSP_SEND_ADDR;
_drv_lcd = DRV_CHAR_DSP_SET_TMR;
}
break;
case DRV_CHAR_DSP_SET_TMR:
set_timer(ST_DRV_CHAR_DSP, 1<<TMR_UNLOCK_FLG, DRV_LCD_TIME);
_drv_lcd = _drv_lcd_next;
break;
}
}