редачі пакету по UART;
. ANA_COMP - переривання аналогового компаратора.
Переривання - це зупинка ззовні виконання поточної програми на час виконання певної підпрограми, яка називається "обробник переривання". Вектор переривання - відсилання за потрібною адресою за допомогою команди В«rjmpВ» (Relative Jump - відносний перехід). Дана команда містить відносний адресу мітки, тобто число, на яке потрібно збільшити/зменшити поточний адресу ПЗУ, щоб опинитися на мітці. p align="justify"> Переривання виникає по деякому зовнішньому сигналу, що надходить у процесор. При цьому основна програма зупиняється в тому місці, де її застане переривання, і починається виконання підпрограми-обробника. По закінченні роботи обробника, виконання основної програми поновлюється з місця зупину, використовуючи адресу, записаний в стек. p align="justify"> Вектора переривань вказуються на початку адресного простору в порядку, зазначеному в таблиці 1. а на місці. Так як в нашій програмі використовується тільки два переривання: переривання по скиданню і переривання компаратора 1-го таймера, то достачно було б описати вектора перших п'яти переривань. Але на випадок запобігання непередбачених збоїв, опишемо всі вектора, як того очікує компілятор, прописуючи на місці невикористовуваних команду виходу з обробника переривання - В«retiВ» (Interrupt Return - повернення з переривання):
rjmp ResetTimer1_comp1
Текст основної програми починаємо з мітки В«ResetВ». Взагалі Реініціалізація мікроконтролера (скидання) може відбутися з різних причин: подача напруги живлення, вихід з В«сплячогоВ» режиму, зменшення напруги живлення нижче мінімально допустимого рівня (Brown Out Reset), спрацьовування сторожового таймера, поява на виведенні В«ResetВ» логічного сигналу низького рівня .
Для початку визначимо стек в адресному просторі ОЗУ. Стек - це область пам'яті в ОЗУ, яке береже адреси, за якою було призупинено вполненниє основної програми для виконання підпрограми. Адреса, за якою була проведена остання запис у стек, зберігається в спеціальному регістрі - покажчику стека SP (Stek Pointer). При переході в підпрограму його значення зменшується на одиницю, а при поверненні з неї, навпаки, збільшується. Таким чином, видно, що стек влаштований за типом FILO (Firt In Last Out - перший увійшов, останній вийшов). Зазвичай, спочатку програми покажчик стека ставиться на останній адреса ОЗУ. p align="justify"> Так як в контролері 2313 розрядність адреси ОЗУ не перевищує 8 біт, то і покажчик стека повинен бути 8-бітним. Для його зберігання, відповідно використовується один 8-бітний регістр В«SPLВ» (Stack Pointer Low), в який запишемо значення константи В«RamEndВ». Ця константа, ініціалізується у файлі def.inc і дорівнює значенню останнього адреси ОЗУ. p align="justify"> В асемблері не можна безпосередньо записати константу ...