STOP; останов програми
; Формування імпульсу пуску АЦП по
; внутрішньому перериванню від Т/С000BhSTART; перехід до програми
; формування імпульсу
; пуску АЦП00D0h: CLR B0; скидання біта В0B0; установка біта В0; повернення з підпрограми
; обслуговування переривання
; від Т/С0
; Обчислення вихідного відліку по сигналу зовнішнього
; переривання від входу INT0, робочий цикл фільтра30hXYOUT; перехід до програми
; робочого циклу фільтра100h: MOV y, # 0DPTR, # P0; введення відліку Хn з АЦПA, @ DPTR; через порт P0
; основна програма фільтрації: OV k, # 01hC; підготовка до вичітаніюA, y; віднімання попереднього сігналаF0, C; запам'ятовування знака разностіdp; перехід по позитивної разностіA; обчислення зворотного кодаA; отримання модуля різниці: MOV B, k; завантаження коеффіціентаAB; обчислення проізведеніяA.7, nc; перехід якщо молодший байт lt; 1/2B; додавання 1 в стар.байт: MOV A, y; завантаження попереднього вих. сігналаF0, pos; по позитивному пріращеніюC; підготовка до вичітаніюA, B; віднімання модуля пріращеніяstr; на запам'ятовування вих. сигн .: ADD A, B; додавання модуля прирощення: MOV y, A; запам'ятовування вихід. сигналу DPTR, # P2; висновок Yn через порт @ DPTR, y; P2; повернення до програми ініціалізації.
електрокардіомонітор мікроконтролер фільтр
Програмування мікроконтролера
містить масив 64К-байта Flash/EE пам'яті програм. Нижні 62К-байт цієї пам'яті можна використовувати для зберігання користувацького виконуваного коду і даних. Верхні 2К-байта зайняті спеціальним програмним забезпеченням (ПЗ), що виконує послідовну завантаження мікроконветера в складі системи, послідовну налагодження і апаратну емуляцію пристрою через один зовнішній контакт. Ці ж 2кб заводського ПО містять програму початкового завантаження периферії калібрувальними коефіцієнтами по включенню харчування.
Ці 2кб пам'яті приховані для користувальницького коду. Результатом читання цієї області пам'яті буде 00Н, що відповідає команді NOP.
У нормальному режимі роботи 62КБ Flash/EE пам'яті програм користувача складають 1 блок. Як показано на рис. 16, цей блок використовується для зберігання виконуваного коду користувача.
У нормальному режимі 62КБ Flash/EE пам'яті програм можна прогр?? мміровать двома способами. можна завантажувати через стандартний послідовний порт (UART). Режим послідовної завантаження включається автоматично при подачі живлення або після виконання зовнішнього скидання, якщо контакт PSEN підключений через зовнішній резистор 1кОм до землі.
Потрапивши в режим послідовної завантаження, мікроконвертер починає виконувати ПО з прихованої частини ПЗУ. У цей час користувач може
завантажувати свій код в масив пам'яті програм 62КБ. Виконується програма послідовної завантаження з РС-комп'ютера (WSD.EXE) поставляється як частина системи розробки QuickStart ADuC847.
Малюнок 6
На рис.6 показано, що користувачеві для розміщення його прикладних програм доступний один блок Flash/EE пам'яті розміром 62КБ. У такому режимі роботи Flash/EE пам'ять є ПЗУ виконуваного коду, доступну тільки для читання.
Малюнок 7
У режимі ULOAD (користувацька завантаження - ПЗ) Flash/EE пам'ять можна використовувати і для запису. Як показано на рис.7, в режимі ПЗ нижні 56кб пам'яті програм можна використовувати для запису з
ПО користувача. У режимі ПЗ, використовуючи будь-який протокол обміну, можна модифікувати програмний код користувача, розташований в цій області пам'яті. Якщо послідовний порт SPI встановити в режим веденого, то протягом 5сек з його допомогою можна повністю репрограммировать все 56кб Flash/EE пам'яті програм.
Крім того, в режимі ПЗ в 56кб Flash/EE пам'яті можна зберігати дані. Це особливо корисно в додатки, пов'язаних реєстрацією даних, причому ADuC847 може надати для запису даних 60Кб Flash/EE пам'яті (оскільки існує ще 4КБ спеціальної Flash/EE пам'яті даних).
Верхні 6КБ з 62КБ Flash/EE пам'яті програм програмуються тільки послідовно або паралельно. Це означає, що цей простір пам'яті може бути використано тільки як ПЗУ програм користувача. Тому цю сферу пам'яті неможливо довільно стерти або випадково репрограммировать. З цієї причини в цій області
пам'яті (6КБ) зазвичай розміщують початковий завантажувач. У послідовному завантажувачі існує варіант запуску початкового завантажувача, який визначається фразою: «Після сигналу СКИДАННЯ завжди починати роботу з адреси Е000h». При завантаженні рекомендується користуватися початковим завантажувачем, оскільки при цьому гарантується, що з появою сигналу СКИДАННЯ програма завантаження завжди буде виконуватися коректно.