ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
12 июля
440372 Топик полностью
Михаил Е. (10.09.2013 13:32, просмотров: 61) ответил Mazur на Как мне сделать следующее? Скажем, КА. В состояниях идентичные участки. Как сделать общую точку выхода? Что-то не вижу в K&R примеров. Goto?
Не совсем понял, ты про одну точку входа под разными именами? Типа такого? //******** Автомат выдачи упр. импульсов ************ switch(step) { case 0: break; // ожидание команды //********** Пауза после получения команды ******** case 1: // 1-я аудиозапись case 11: // 2-я аудиозапись case 21: // 3-я аудиозапись case 31: // 4-я аудиозапись case 41: // 5-я аудиозапись case 51: // 6-я аудиозапись delay = 2000; step++; break; // 2 сек. пауза //********** Передний фронт импульса ************** case 2: // 1-я аудиозапись case 12: // 2-я аудиозапись case 22: // 3-я аудиозапись case 32: // 4-я аудиозапись case 42: // 5-я аудиозапись case 52: // 6-я аудиозапись if(delay) break; // пора переключать? OutAudio = 0; // начало импульса delay = 300; step++; break; // 0,3 сек. //********** Задний фронт импульса **************** case 3: // 1-я аудиозапись case 13: // 2-я аудиозапись case 23: // 3-я аудиозапись case 33: // 4-я аудиозапись case 43: // 5-я аудиозапись case 53: // 6-я аудиозапись if(delay) break; // пора переключать? OutAudio = 1; // конец импульса delay = 300; // 0,3 сек. num--; // кол-во импульсов if(num>0) { step--; break; } // еще импульсы else step++; // конец импульсов break; //**************** Воспроизведение ***************** case 4: // 1-я аудиозапись delay = 18500; step = 60; break; // 5 сек. на воспроизведение case 14: // 2-я аудиозапись delay = 15000; step = 60; break; // 5 сек. на воспроизведение case 24: // 3-я аудиозапись delay = 10000; step = 60; break; // 5 сек. на воспроизведение case 34: // 4-я аудиозапись delay = 10000; step = 60; break; // 5 сек. на воспроизведение case 44: // 5-я аудиозапись delay = 11000; step = 60; break; // 5 сек. на воспроизведение case 54: // 6-я аудиозапись delay = 5000; step = 60; break; // 5 сек. на воспроизведение //********** Досрочное выключение аудио *********** case 59: // досрочное выключение аудио OutAudio = 1; // конец импульса CurrentNum = 7; // исходное NumAudio = 0; // убрать все запросы delay = 500; // 0,5 сек. step++; break; //********** Выключение аудио ********************* case 60: //********** Передний фронт импульса ************** if(delay) break; // воспроизведение закончено? num = 0; // кол-во управляющих импульсов NumAudio &= ~(1<<CurrentNum); // сброс текущего запроса OutAudio = 0; // начало импульса delay = 5000; step++; break; //длит. импульса 5 сек. //********** Задний фронт импульса **************** case 61: if(delay) break; // пора переключать? OutAudio = 1; // конец импульса step = 0; break; //************ Пауза после включения ************** case 100: if(delay) break; NumAudio = 0; // после включения исходное step = 0; break; }