виконують ініціалізацію системи. Оскільки схема і принцип роботи портів введення-виведення не змінилися, то алгоритм ініціалізації системи буде повністю повторювати відповідний алгоритм з попереднього прикладу. p align="justify"> Після команд ініціалізації починається основний цикл програми. Однак дії, що виконуються основним циклом, будуть трохи іншими. Спробуємо, як і в попередньому випадку, описати ці дії словами. ol>
Читати всі стан молодшого розряду порту PD (PD.0).
Якщо значення цього розряду дорівнює одиниці, перейти до початку циклу.
3. Якщо значення розряду PD.0 дорівнює нулю, змінити стан виходу РВ.0 на протилежне. ol>
На початок циклу.
Отже, ми описали алгоритм словами. Причому це досить загальний опис. Реальним алгоритм трохи складніше. Словесний опис алгоритму не завжди зручно. Значно наочніше графічний спосіб опису алгоритму. На рис. 3.3 алгоритм нашої роботи майбутньої програми зображений у графічному вигляді.
Такий спосіб відображення інформації називається графом. Прямокутниками позначаються різні дії, що виконуються програмою. Суть виконуваної дії вписується всередину такого прямокутника. p align="justify"> Допускається об'єднувати кілька операцій в один блок і позначати одним прямокутником. Послідовність виконання дій показується стрілками. Ромбик реалізує розгалуження програми. Він являє собою операцію вибору. Умова вибору записується всередині ромбика. Якщо умова істинно, то подальше виконання програми продовжиться по шляху, позначеному словом В«ТакВ». p align="justify"> Якщо умова не виконана, то програма піде іншим шляхом, позначеному стрілкою з написом В«НіВ». Прямокутником із закругленими боками прийнято позначати початок і кінець алгоритму. У нашому випадку програма не має кінця. Основний цикл програми є нескінченним циклом. p align="justify"> Розглянемо докладніше алгоритм, зображений на рис. 4.8. Як видно з малюнка, відразу після старту програми виконується установка вершини стека. Наступна дія - це програмування портів введення-виведення. Потім починається головний цикл програми (обведений пунктирною лінією). Всередині циклу хід виконання програми розгалужується. br/>В
Першою операцією циклу є перевірка стану молодшого розряду порту PD (PD0). Програма спочатку читає стан цієї лінії, а потім виконує операцію порівняння. У процесі порівняння значення розряду PD0 перевіряється на рівність одиниці. Якщо умова виконується, програма переходить до початку циклу (по стрілці В«ТакВ»). br/>В
Якщо умова не виконується (PD0 НЕ дорівнює одиниці), виконання програми триває по стрілці В«НіВ», де виконується ще одна операції порівняння. Це порівняння є частиною процедури перемикання світлодіода. Для того, щоб переключити світлодіод, ми повинні перевірити його поточний стан і перевести його в протилежне. p align="justify"> Як ви пам'ятаєте, світлодіодом управляє молодший розряд порту РВ (РВ0). Тому саме його ми будемо проміряти і змінювати. Робота алгоритму перемикання світлодіода гранично проста. Спочатку оператор порівняння перевіряє розряд РВ0 на рівність одиниці. Якщо результат перевірки - істина (РВ0 = 1), то розряд скидається в нуль (0 => РВ0). Якщо помилково, встановлюється в одиницю (1 => РВ0). Поєднання символів В«=>В» означає операцію привласнення. Таке позначення іноді використовується в програмуванні при написанні алгоритмів. Після перемикання світлодіода управління передається на початок головного циклу. p align="justify"> Отже, наш алгоритм готовий, і можна приступати до складання програми. Але не поспішайте. Все не так просто. Наведений вище алгоритм гарний лише для теоретичного вивчення прийомів програмування. На практиці ж він працювати не буде. p align="justify"> Справа в тому, що мікроконтролер працює з такою швидкістю, що за час, поки людина буде утримувати кнопку в натиснутому стані, головний цикл програми встигне виконатися багаторазово (до сотні разів). Це відбудеться навіть у тому випадку, якщо людина постарається натиснути і відпустити кнопку дуже швидко. При кожному проході головного циклу програма виявить факт натискання кнопки і перемкне світлодіод. p align="justify"> У результаті робота нашого пристрою буде виглядати наступним чином. Як тільки кнопка буде натиснута, світлодіод почне швидко перемикатися. Настільки швидко, що ви навіть не побачите, як він 1 мерехтить. Це буде виглядати як світіння в полнакала. p align="justify"> У момент відпускання кнопки процес перемикання зупиниться, і світлодіод опиниться в одному зі своїх станів (засвітиться або потухне). В якому саме стані він залишиться, залежить від моменту відпускання кнопки. А це випадкова величина. Як бачите, описаний вище алгоритм не дозволяє створити пристрій, ...