ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
12 июля
440376 Топик полностью
Bill (10.09.2013 14:08 - 14:13, просмотров: 68) ответил Mazur на Вот про что я говорил, (обновление дисплея пока еще не сделал, посимвольно, скажем раз в 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'); 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; } }