![]() |
|
|||||||
| Компьютеры Уголок для решения бытовых компьютерных проблем. |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
#11 |
|
Pilot
Отмечучь и я, чисто в рекомендательном плане. Уберите goto в коде поста №31, оно там ни к чему вообще, while(1) и так выполнится с первой строчки, если не сработает ни одно условие, при этом желательно в конце while поставить небольшую задержку (~100мс), если планируете использовать какие-то дополнительные процедуры. И я б, честно, подобные строки if(PORTB3==1 && PORTB0==1 && PORTB1==1) заменил бы на if (PORTB==0b00001011) Почему? Да потому что оператор if выполнится всего один раз вместо 5 ![]() Ну или для полноты понимания, при помощи define создайте варианты необходимых условий. Вы хоть код понимать будете ну и помочь будет легче вновь читающим. К примеру #define VAR0 0b00001011 if (PORTB==VAR0)... или if (PORTB & VAR0)... что полностью заменяет if(PORTB3==1 && PORTB0==1 && PORTB1==1) и облегчает чтение. Этим разгрузите код и вероятно облегчите жизнь дебугеру. Конечно, если так можно, а пятой точкой ощущаю, что можно наврняка. Kino, к стати, правильно подсказывает, насчет отдельной процедуры, но по опыту работы с контроллерами, я б нестал использовать такие тяжелые формы как case, от этого легче не станет, а код усложнит и займет на порядок больше тактов, описанный выше мною вариант более применим к контроллерам, со статическмими условиями регулятора.
__________________
Последний раз редактировалось Said; 30.10.2013 в 14:54. |
|
|
|
|