Свежие обсуждения
Микроконтроллеры

Ликбез по С для микроконтроллеров PIC

1 49 64

AleksBak: Т.е. пишем if( ) ... else if( ) ... else if( ) ... else ... .

AleksBak: Т.е. у меня было:
if (проверка условия1) {что нужно делаем1; goto на конец п/п} и опять далее проверял if (проверка условия2) {что нужно делаем2; goto на конец п/п} и т.д. . А нужно было(по правилам "хорошего тона") писать: if (проверка условия1) {что нужно делаем1;} else if (проверка условия2) {что нужно делаем2;} и т.д. до конца(туда куда мы выходили в первом варианте в конце каждой из проверок).

Получается, что если первое условине не истина, то проверяется следующее и так до конца, а если истина, то выполняется действие и выход из этого всего. Правильно?..

 

Vladikas
Да, если хоть одно условие "истина" остальные не проверяются.

 

2 Left Radio
Ну так что там, алгоритм работоспособен или прога ещё не в окончательном виде? Хотелось бы посимулировать

 

На 47 стр. я выкладывал, но проверка в симуляторе не дала успехов, пока не знаю в чем проблема.
Скорее всего прога, сегодня под вечер думаю заставлю ее работать и выложу.
Там же SAK выкладывал очень простой код делающий тоже самое

 

Ну у меня несколько другой интерес, проверить мою блок-схему. Стимул появился изучать си, набираю прогу сам. Пока очень туго, постоянно путаюсь в синтаксисе.

 

AleksBak: но вот все-таки кажется мне, что убирая в некоторых местах goto - например когда в длинной проге, вначале проверяется какое-то условие(например переход на отображение будильников) и если оно истинно - переходим, то обрамляя круглыми скобками обе половинки(а они большие в несколько строк экрана) и еще посередине у нас будет добавлено не очень заметное else, то мы рискуем потерять читабельность кода.
Вот для таких ситуаций и смещают подчинённый код при написании вправо. Тогда по левому полю видно вышли из блока или всё ещё в нём.

 

В алгоритме нашел только одну ошибку, счетчик проходов+1 и его сравнение с Х надо поменять местами.
После этого заработало. Задержки, длительности не подбирал.
Использовал goto, если более знающие подскажут как обойтись буду признателен.

P.S. Использую CCS v4.057

174453.c

 

Left Radio: Использовал goto, если более знающие подскажут как обойтись буду признателен.

Просо заменить "goto exit;" на "return;" или "exit();" Ну и метки поубирать метки "exit: 1;"

Мне ещё в этом коде непонятно, что значит единица после метки? ( exit: 1;) Типа чтобы передавалось управление на какой-то оператор? А просто точка с запятой не помогает?

 

Арс: Просо заменить "goto exit;" на "return;" или "exit();" Ну и метки поубирать метки "exit: 1;"
Мне ещё в этом коде непонятно, что значит единица после метки? ( exit: 1;) Типа чтобы передавалось управление на какой-то оператор? А просто точка с запятой не помогает?

Спасибо, заменю.
Нет не передается управление на оператор, компилер не хотел принимать просто точку с запятой.

 

2 Left Radio
А целиком проги нет, чтоб в симулятор загнать?