ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
19 апреля
554415 Топик полностью
Скрипач, пророк (20.10.2014 11:22, просмотров: 141) ответил Vit на по upd - накатал каляки-маляки с кучей goto
Реальная программа управления парой вентиляторов, подключенных к одному частотнику  static char Fans2Fd(struct pt *pt){ static uint8_t TL = 0; PT_BEGIN(pt); L_IDLE: _Off(FD1); _Off(KM1); _Off(KM2); while(1){ PT_YIELD(pt); if(B1_Button()) goto L_RUN_1; if(B2_Button()) goto L_RUN_2; }; L_RUN_1: _On(KM1); _On(FD1); PT_WAIT_WHILE(pt, B1_Button()); while(1){ PT_YIELD(pt); if(B1_Button()){ _Off(FD1); _Off(KM1); PT_WAIT_WHILE(pt, B1_Button()); goto L_IDLE; }; if(B2_Button()){ _Off(FD1); _Off(KM1); TL = SysTime_1s; PT_WAIT_WHILE(pt, (Delay(TL, SysTime_1s) < 15)); goto L_RUN_2; } }; L_RUN_2: _On(KM2); _On(FD1); PT_WAIT_WHILE(pt, B2_Button()); while(1){ PT_YIELD(pt); if(B2_Button()){ _Off(FD1); _Off(KM2); PT_WAIT_WHILE(pt, B2_Button()); goto L_IDLE; }; if(B1_Button()){ _Off(FD1); _Off(KM2); TL = SysTime_1s; PT_WAIT_WHILE(pt, (Delay(TL, SysTime_1s) < 15)); goto L_RUN_1; } }; PT_END(pt); } Особенности: - конечный автомат закодирован единообразно: переходим в новое состояние по goto, выставляем новые значения выходов, выполняем бесконечный цикл условий перехода в новые состояния (по goto, ибо нефиг); - переписывается с диаграммы состояний тупо механически; - простые задержки и тупые циклограммы не создают новых состояний и не засоряют текст.
... но не любой ценой.