ФІЛІЯ МОСКОВСЬКОЇ ДЕРЖАВНОЇ АКАДЕМІЇ ПРИЛАДОБУДУВАННЯ І ІНФОРМАТИКИ p>
У М. Углич p>
Кафедра p>
«Точно ПРРІБОРИ І ВИМІРЮВАЛЬНІ СИСТЕМИ» p>
КУРСОВИЙ ПРОЕКТ p>
з дисципліни p>
«Мікропроцесорні пристрої в вимірювальної техніки» p>
на тему: «Проектування приладу вимірювального тривалість імпульсу» p>
| Студент Алещенко Д. А. | |
| Шифр 96207 | Викладач Канаєв С.А. | p>
| Підпис студента | Підпис викладача |
| | |
| Дата 2.06.2000 | Дата | p>
м. Углич 2000 p>
ЗМІСТ
| ВСТУП | 3 |
| 1. ТЕХНІЧНЕ ЗАВДАННЯ | 4 |
| 2. Розробка структурних схем. Узагальнений алгоритм РОБОТИ | 5 |
| 3. РОЗРОБКА І РОЗРАХУНОК ЕЛЕМЕНТІВ Принципова електрична схема | 8 |
| 3.1 Вибір мікропроцесорного комплекту | |
| 3.1.1 Вибір кварцового резонатора | 8 |
| 3.1.1.1 Визначення похибки від джерела синхронізації | 9 |
| 3.2 Вибір інтегральної мікросхеми дешифратора | 10 |
| 3.3 Вибір засобів індикації | 10 |
| 3.4 Вибір зовнішніх елементів гальванічної розв'язки | 10 |
| | 11 |
| 4. Визначення похибки вимірювання тривалості імпульсу | |
| | 12 |
| 5 Лістинг програми розрахунку тривалості імпульсу на мові асемблер | 14 |
| СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ | 20 |
| Додаток 1 | 21 | p>
ВСТУП p>
В даний час мікропроцесорна техніка робить великі успіхи взастосуванні, у різних галузях виробництва. Зараз мікропроцесористали застосовуватися не тільки у побутовій техніці і в автомобілях, але і навіть увиробництві керуючи складними технологічними процесами. p>
Мета курсового проекту сприяла створення вимірювального приладу набазі мікропроцесора AVR90S8515 p>
Мікропроцесори американської фірми ATMEL, в останні роки роблятьзначні успіхи в освоєнні нових областей в сфері свого застосування.
Мікропроцесорне ядро, що використовується в мікроконтролерах AVR, схоже набільшість процесорів з RISC архітектурою, мабуть, за винятком 8 --розрядних регістрів. Розроблено двома розробниками з Норвегії, в місті
Trondheim. Пізніше, в 1995 році, розробка була придбана фірмою Atmel. ДоДосі розвиток ядра відбувається в Норвегії, в той час як периферійні пристрої тапам'ять розробляються у відділенні Atmel в Каліфорнії. p>
За допомогою проектованого приладу можна буде виміряти довжинуімпульсів в діапазоні від 10 мсек до 10 Сек виміряна величівідображатися на чотирьох розрядному світлодіодному індикаторі p>
1.Технічне ЗАВДАННЯ p>
Необхідно спроектувати прилад для вимірювання тривалостіімпульсу.
| | Мін. | Макс. |
| Діапазон виміру: | 10 мС | 10с |
| Похибка виміру | | 1% |
| Кількість гальванічно розв'язаних | 1 |
| каналів | рівень ТТЛШ |
| Вхідна напруга логічної одиниці | рівень ТТЛШ |
| Вхідна напруга логічного нуля | |
| Кількість режимів вимірювання | 2 |
| | З-ие високо рівня |
| | Тривалості імпульсу |
| | З-ие низького рівня |
| | Тривалості імпульсу |
| Можливість індикації обмірюваної | Є |
| тривалості | Світлодіодні індикатори -4 |
| | Шт |
| Кількість режимів відображення обмірюваної | |
| тривалості | 2 |
| | Відображення в секундах |
| | Відображення в милі секундах |
| Вихідна напруга джерела живлення | 5 В | p>
2. Розробка структурних схем. Узагальнений алгоритм РОБОТИ p>
Структурна схема вимірювального приладу наведена на рис.1 p>
Структурна схема вимірювального приладу p>
МСЕК - кнопка вибору відображення обмірюваної тривалості імпульсу в милі секундах.
Сек - кнопка вибору відображення обмірюваної тривалості імпульсу в p>
секундах p>
Інверсія - кнопка вибору першого або другого режиму вимірювання см p>
ТЗ.
Св.Д1. - Світлодіод показує включення другого режиму виміру p>
Св.Д2. - Світлодіод показує включення режиму відображення обмірюваної тривалості імпульсу в секундах. P>
Св.Д3. - Світлодіод показує включення режиму відображення обмірюваної тривалості імпульсу в милі секундах. P>
AVR90S8515 - однокристальна мікро-ЕОМ AVR90S8515 p>
Малюнок 1. P>
Дешифратор проводять дешифрування двійковій-десяткового коду, аіндикатори відображають результати вимірювання. p>
При включенні харчування мікро-ЕОМ виробляє виконання підпрограмиініціалізації (ініціалізація стека, настроювання використовуваних портів
Введення/виводу, завантажується в компаратор А таймер/лічильника число 80000,вибирається потрібний режим роботи таймер/лічильника 1 (біт CTC1 регістрауправління таймером/лічильником 1 (TCCR1B), встановлюється в одиницю, щоозначає скидання таймер/лічильника 1 при спрацьовуванні компаратора А, також біт
CS10, що знаходиться в цьому ж регістрі, встановлюється в одиницю, цеозначає, що як джерело синхронізації буде використовуватисячастота синхронізації кварцового резонатора), відбувається глобальнедозвіл переривань). Далі відбувається опитування стану кнопки виборурежиму вимірювання тривалості імпульсу і залежно від її стану (0 --вимірювання низького рівня тривалості імпульсу, 1 - вимірювання високогорівня тривалості імпульсу), відбувається перехід на відповіднупідпрограму (IMPULS_POLOGITELNAY - підпрограма вимірювання високого рівнятривалості імпульсу, IMPULS_OTRICHATELNAY - підпрограма вимірунизького рівня тривалості імпульсу). Алгоритм роботи цих двохпідпрограм практичний однаковий, для прикладу розглянемо роботупідпрограми IMPULS_POLOGITELNAY. При переході на цю підпрограму МПпочинає опитування лінії PA0 і в разі виявлення на ній логічної одиницізапускає таймер/лічильник 1. При спрацьовуванні компаратора А відбуваєтьсяскидання таймер/лічильника 1 (у компаратор А додано число - 8000, при частотісинхронізації МП рівній 8Мгц спрацьовування компаратора відбудеться рівночерез 1мС (1%), що говорить про після 1мСек. Звіт милі секунд увідповідно до ТЗ почнеться після минулої дев'ятого милі секунди. Індикаціявимірюваної тривалості імпульсу відбувається кожні 50 МСЕК. Разом з цим
МП продовжує сканувати лінію PA0 і після того як він виявить на нійстан логічного нуля, що говорить про кінець вимірювання тривалостіімпульсу, відбудеться зупинка таймера/лічильника 1 і зробить перехід напідпрограму перекладу двійкового шістнадцяти розрядного числа в двійковій -десяткове - bin16BCD5 (детальний алгоритм перекладу двійкового шістнадцятирозрядного числа в двійковій-десяткове розглянуто нижче). Після виконанняпідпрограми bin16BCD5, МП опитує стан кнопок МСЕК і Сек. Якщонатиснута кнопка Сек (індикація результату вимірювання проводиться в секундах),то тоді МП шляхом видачі з лінії РА7 логічної одиниці відображає точкурозділяє цілу частину числа від дробової. Якщо не натиснута ні одна з двохкнопок або натиснуті все, то тоді індикація результату вимірюванняпроводиться не буде. Після того як проведе індикація результатувимірювання (через лінії порту D і C) МП повертається в основну програму.
На цьому цикл роботи програми закінчується. P>
Алгоритм підпрограма перекладу двійкового шістнадцяти розрядногочисла в двійковій-десяткове p>
Арифметико-логічний пристрій AVR-мікроконтролерів (як іінших мікропроцесорів) виконує елементарні арифметичні та логічніоперації над числами, представленими в двійковому коді. У двійковому кодізчитуються результати перетворення АЦП, в двійковому коді (у форматі цілихчисел або чисел з плаваючою точкою) зручно виконувати обробку результатіввимірювання. Однак, коли остаточний результат відображається наіндикаторі, він повинен бути перетворений в десятковий формат, зручний длясприйняття людиною.
Формати представлення десяткових чисел p>
В даний час поширені два формати представленнядесяткових чисел в мікропроцесорах - упакований двійковій-десятковий код
(BCD-Binary-Coded Decimal). P>
Упакований BCD-код - це таке подання десяткового числа,коли кожна десяткова цифра видається 4-х бітним двійковимпозиційним кодом 8-4-2-1. При цьому байт містить дві десяткові цифри.
Молодша десяткова цифра займає праву тетраду (біти 3: 0), старша --ліву тетраду (біти 7: 4). Багаторозрядних BCD-числа займають кількасуміжних байт. Якщо число є знаковим, то для представлення знака в
BCD-форматі відводиться старша тетрада старшого байта p>
Алгоритм підпрограми bin16bcd5 полягає в наступному.
Припустимо, що є ціла беззнакові 16-бітне число (діапазон від 0до 65535). Очевидно, що необхідно знайти 5 десяткових цифр. Спосібперетворення полягає в тому, щоб, віднімаючи з вихідного числа число
10000, спочатку визначити десяткову цифру десятків тисяч. Потім знаходитьсяцифра тисяч послідовним вирахуванням числа 1000 і т. д. Віднімання коженраз проводиться до отримання негативної різниці з підрахунком числавіднімання. При переході до визначення кожного наступного десятковогорозряду в регістрах вихідного числа відновлюється останняпозитивна різниця. Після того, як буде знайдено десяткова цифрадесятків, в регістрах вихідного числа залишиться десяткова цифра одиниць. p>
Графічний алгоритм роботи програми представлений в п.1
3. РОЗРОБКА І РОЗРАХУНОК ЕЛЕМЕНТІВ Принципова електрична схема p>
3.1 Вибір мікропроцесорного комплекту p>
Відповідно до ТЗ ядром вимірювального приладу послужилаоднокристальна мікро-ЕОМ AVR90S8515 фірми Atmel. p>
Основні характеристики однокристальної мікро-ЕОМ AVR90S8515:
• AVR RISC архітектура - архітектура високої продуктивності та малогоспоживання
• 120 команд, більшість яких виконується за один машинний цикл
• 8 Кбайта Flash ПЗУ програм, з можливістю внутрішньосистемногоперепрограмування і завантаження через SPI послідовний канал, 1000циклів стирання/запис
• 512 байтів ЕСППЗУ даних, з можливістю внутрішньосистемної завантаження через
SPI послідовний канал, 100000 циклів стирання/запис
• 512 байтів вбудованого СОЗУ
• 32 x 8 біт регістра загального призначення
• 32 програмованих ліній введення/виводу
• 16-розрядний і 32-розрядний формат команд
• Діапазон напруг живлення від 2,7 В до 6,0 В
• Повністю статичний прилад - працює при тактовою частотою від 0 Гц до 8
МГц
• Тривалість командного циклу: 125 нс, при тактовою частотою 8 МГц
• 8-розрядний і 16-розрядний (з режимами порівняння та захоплення)таймери/лічильники
• Здвоєний ШІМ з 8, 9 або 10-розрядних дозволом
• Програмований повний дуплексний UART
• Два зовнішніх і десять внутрішніх джерел сигналу переривання
• Програмований сторожовий таймер з власним вбудованим генератором
• Вбудований аналоговий компаратор
• Режими енергозбереження: пасивний (idle) і стоповий (power down)
• Блокування режиму програмування
• Промисловий (-40 ° C. .. +85 ° C) та комерційний (0 ° C. .. +70 ° C) діапазонитемператур
• 40-вивідний корпус PDIP і 44-вивідні корпусу TQFP і PLCC
КМОП мікроконтроллер AT90S8515 реалізований за AVR RISC архітектури
(Гарвардська архітектура з роздільною пам'яттю і роздільними шинами дляпам'яті програм і даних) і сумісний з вихідних кодів і тактірованію з 8 --розрядними мікроконтролерами сімейства AVR (AT90SXXX). Виконуючи команди заодин тактовий цикл, прилад забезпечує продуктивність, що наближаєтьсядо 1 MIPS/МГц. AVR ядро об'єднує потужну систему команд з 32 8-розряднимирегістрами загального призначення і конвеєрне звернення до пам'яті програм.
Шість з 32 регістрів можуть використовуватися як три 16-розрядних регістра -покажчика при непрямої адресації простору пам'яті. Виконаннявідносних переходів і команд виклику реалізується за прямої адресацієювсіх 4К адресного простору. Адреса периферійних функцій містяться впросторі пам'яті введення/виводу. Архітектура ефективно підтримує якмови високого рівня, так і програми на мовах асемблера. Вбудованазавантажувана Flash пам'ять забезпечує внутрішньосистемні перепрограмуванняз використанням інтерфейсу SPI (в послідовному Вбудована завантажувана
Flash пам'ять забезпечує внутрішньосистемні перепрограмування звикористанням інтерфейсу SPI (в послідовному низько вольтовому режимі)або з використанням стандартних програматорів незалежній пам'яті (в
12-вольтовому паралельному режимі). Споживання приладу в активному режимістановить 3,5 мА і в пасивному режимі 1 мА (при VCC = 3 В і f = 4 МГц). Устоповою режимі, при працюючому сторожовому таймері, мікроконтроллерспоживає 50 мкА. низько вольтовому режимі) або з використанням стандартнихпрограматорів незалежній пам'яті (у 12-вольтовому паралельномурежимі). Споживання приладу в активному режимі складає 3,5 мА і впасивному режимі 1 мА (при VCC = 3 В і f = 4 МГц). У стоповою режимі, припрацюючому сторожовому таймері, мікроконтроллер споживає 50 мкА. p>
3.1.1 Вибір кварцового резонатора p>
Для роботи МП необхідний кварцовий резонатор який підключається довисновків XTAL1 і XTAL2 (див. графічну частину курсового проекту)
Робоча частота кварцового резонатора безпосередньо пов'язана з точністювимірювання тривалості імпульсу (з рис. 2 видно, що чим більше частотасинхронізації тим точніше вимірювання тривалості) для заданої похибкивиміру достатньо, щоб частота резонатора дорівнювала fрез = 8 МГц p>
p>
Малюнок 2 p>
3.1.1.1 Визначення похибки від джерела синхронізації p>
Похибка від кварцового резонатора виникає в слідствінестабільності його частоти під час роботи. p>
Нестабільність частоти кварцового резонатора МА406 приблизно дорівнює
0.00001 від частоти синхронізації, виходячи з цього похибка виникає вслідстві нестабільності частоти можна визначити за формулою p>
де К - нестабільність частоти кварцового резонатора p>
К = 0.00001 * 8000000 = 80 Гц fBQ - частота кварцового резонатора p>
p>
3.2 Вибір інтегральної мікросхеми дешифратора p>
У дешифратора буде використовуватися інтегральна мікросхема КР514ІД2 p>
3.3 Вибір засобів індикації p>
Як засоби індикації будуть використовуватися світлодіоднііндикатори - ААС3224А p>
3.4 Вибір зовнішніх елементів гальванічної розв'язки p>
Як елементи гальванічної розв'язки використовується цифровамікросхема 249ЛП5 - Оптоелектронний перемикач на основі діодних оптопаривиконаних у металлостеклянном корпусі. основні характеристики цифровоїмікросхеми 249ЛП5 наведено в табл. 1. P>
Таблиця 1 p>
Основні характеристики цифрової мікросхеми 249ЛП5
| Електричні параметри |
| Вхідна напруга при IВХ = 15 мА | не більше 1.7 В |
| Вихідна напруга в стані логічного | 0.4 В |
| нуля | |
| Вихідна напруга в стані логічної | 2.4 |
| одиниці | |
| Граничні експлуатаційні дані |
| Вхідний постійний струм | 12 мА |
| Вхідний імпульсний струм | 15 мА |
| Напруга живлення | 5 ((0.5) В |
| Діапазон робочих температур | -60 ... +85 (С | p>
4. Визначення похибки вимірювання тривалості імпульсу p>
Похибка виміру тривалості імпульсу, як уже говорилосявище, безпосередньо пов'язана безпосередньо пов'язана зі швидкістю роботи
МП, в свою чергу швидкість якого задається тактовою частотою кварцовогорезонатора. p>
Величина тимчасового кванта (d) у нашому випадку, дорівнює періодупроходження імпульсів кварцового резонатора (() тобто d = (. Зміряне значенняоднієї милі секунди дорівнює (відповідно до ТЗ дискретність вимірюваннятривалості дорівнює 1мСек): p>
T = (* N p>
Де N - число імпульсів, що надійшли на таймер/счетчік1.
Отже виміряне значення відрізняється від істинного на величинупохибки квантування (К = (tК: p>
(tК = T-Tx = N * (-Txде Tx - справжнє значення.
Похибка квантування залежить від величини кванта (і від моментів початку ізакінчення циклів вимірювання (див. рис.2) по відношенню до імпульсів кварцовогорезонатора. Очевидно, що як початок і кінець вимірювання тривалості можутьрозташовуватися в будь-якій точці між двома сусідніми імпульсами. У результатівиникають дві складових похибки (tК Перша з них ((t1 див. рис.2)позитивна, тому що виміряний часовий інтервал більше дійсного йогозначення, а другий (t2 негативна, тому що із за неї вимірянийчасовий інтервал виходить більше фактичного. Отже істиннезначення тимчасового інтервалу буде: p>
Тх = N *(-(( t1-(t2) = N * (- (t1 + (t2
Pзакон розподілу помилок (t1 і (t2 з урахуванням їх різних знаківявляє собою розподіл Сімпсона, а середньо квадратичнапохибка квантування слідуючи вказівкам [2, с 20] буде дорівнює p>
p>
p>
p>
5 Лістинг програми розрахунку тривалості імпульсу на мові асемблер p>
Налагодження програми була зроблена за допомогою відладчика-симулятора
AVRSTUDIO 3.0 p>
Код програми:
. include "8515def.inc"
. def fbinL = r22; двійкове значення, молодший байт байт
. def fbinH = r23; двійкове значення, старший байт
. def tBCD0 = r23; BCD значення, цифри 1 і
. def tBCD1 = r24; BCD значення, цифри 3 і2
. def tBCD2 = r25; BCD значення, цифри 4
; Призначення висновків порту А:
; Bit 0 - надходить імпульс
; Тривалість которог??
; Необхідно виміряти
; Bit 1 - підключається кнопка
; Режиму вимірювання
; 0 - вимірювання тривалості
; Негативного імпульсу
; 1 - вимірювання тривалості
; Позитивного імпульсу
; Bit 2 - індикація режиму вимірювання
; 0 - (світлодіод погашений)
; Індикація режиму вимірювання
; Негативного імпульсу
; 1 - (світлодіод світиться)
; Індикація режиму вимірювання
; Позитивного імпульсу
; Bit 3 - підключається кнопка
; Режиму вимірювання
; Тривалості імпульсу в мС
; Bit 4 - підключається кнопка
; Режиму вимірювання
; Тривалості імпульсу в С
; Bit 5 - підключається світлодіод
; Режиму вимірювання тривалості
; Імпульсу в мС
; Bit 6 - підключається світлодіод
; Режиму вимірювання тривалості
; Імпульсу в С p>
. ORG 0 p>
RJMP MET1 p>
RJMP IMPULS p>
RJMP MET1 p>
RJMP MET1
1: RJMP Prog p>
RJMP Prog p>
RJMP MET1 p>
RJMP MET1
MET1: LDI R16, 0x02 p>
OUT SPH, R16; Ініціалізація p>
LDI R16, 0X10; стека p>
OUT SPL, R16 p>
LDI R16, 0B11100100 p>
OUT DDRA, r16; Налаштовуємо Ліни b 0,1,3,4 p>
; ПОРТУ А НА ENTER, а лінії 2,5,6,7 на висновок p>
LDI R16, 0B11111111; Налаштовуємо ВСЕ ЛІНІЇ p>
OUT DDRC, R16; ПОРТУ C НА ВИСНОВОК p>
LDI R16, 0B11111111; Налаштовуємо ВСЕ ЛІНІЇ p>
OUT DDRD, R16; ПОРТ D НА ВИСНОВОК p>
LDI R16, 0B01000000; Дозвіл переривання p>
OUT TIMSK, R16; по переповнення T/C1 p>
LDI R16, 0B00000000; ЗАБОРОНА переривання p>
OUT GIMSK, R16; по INT0 p>
LDI R16, 0X1F; Завантажуємо в p>
OUT OCR1AH, R16; компататор А -- 8000 p>
LDI R16, 0X40 p>
OUT OCR1AL, R16 p>
LDI R16, 0B00000000 p>
OUT TCNT1L, R16 p> < p> LDI R16, 0B00001000; T/C1 буде обнулятиметься при кожному збігу p>
OUT TCCR1B, R16; зі значенням компаратора А p>
LDI R16, 0B10000000; Глобальне дозвіл переривань p>
OUT SREG, R16 p>
LDI R16, 0X9 p>
LDI R19, 0X9; R19 регістр перепризначених для порівняння p>
; з R16 якщо вони рівні, то тоді вимір p>
; тривалості імпульсу не починалося p>
CLR R17 clr r22
OPROS_KEY_OF_INVERT:; Опитування стану кнопки p>
SBIC PORTA, 1; режиму вимірювання тривалості імпульсу p>
RCALL IMPULS_POLOGITELNAY; режим з-ия тривалості сигналу високоїрівня p>
RCALL IMPULS_OTRICHATELNAY; режим з-ия тривалості сигналу низькогорівня
M2:
IMPULS_POLOGITELNAY: p>
SBI PORTA, 2; Включаємо світлодіод p>
SBIC PORTA, 0; Йде сканування лінії PA0 p>
RCALL IMPULS p>
SBIS PORTA , 0; Відбувається перевірка на наявність 1 p>
RCALL IMPILS_1_TO_0; на PA1, якщо її немає, тоді перехід
M5: CPI R17, 0xFF p>
BRCS M2; якщо R17 переповниться, то p>
LDI R17, 0XA; тоді занесемо в R17 10 p>
RJMP M2;
Prog: INC R17; p>
CPI R17, 0XA; Звіт тривалості імпульсу почнеться p>
BRCS M3; тоді коли в R17 буде 10 (DEX) (пройде 10 мС) p> < p> INC R16; інкремент R17 (лічильник пройшли мСекунд спрацьовує при
R17> 10) p>
BRBC 1, M3; якщо R16 переповниться p>
INC R18; тоді інкрементіруем R18 (Тривалість імпульсу p>
; Минуло десять мС далі йде рахунок кожної мС
M3: RETI; знаходиться в R18 (ст. розряд), R16 (мол. розряд)
IMPULS: p>
LDI R20, 0B00001001; якщо приходить імпульс то тоді запускається T/C1 p>
OUT TCCR1B, R20 p>
RET
IMPILS_1_TO_0: p>
LDI R20, 0B00000000; якщо імпульс закінчився T/C1 зупиняється p>
OUT TCCR1B, R20 p>
CPSE R16, R19; перевірка на початок циклу вимірювання якщо вінначілся
RCALL TEST_OF_STOP_TC1; то тоді перехід на TEST_OF_STOP_TC1 p>
SBIC PORTA, 1; Опитування стану кнопки режиму вимірювання тривалостіімпульсу p>
RCALL IMPULS_POLOGITELNAY; режим з-ия високого рівня тривалості p>
RCALL IMPULS_OTRICHATELNAY; режим з-ия низького рівня тривалості p>
RET
TEST_OF_STOP_TC1:; підпрограма перевірки (чи дійсно T/C1зупинився p>
IN R21, TCCR1B; під час режиму вимірювання тривалості) p>
ANDI R21, 0B000000000; якщо все в порядку, то тоді переходимо наbin16BCD5 p>
BRNE ENDTEST_OF p>
RCALL bin16BCD5
ENDTEST_OF: p>
RET
M2OTR:
IMPULS_OTRICHATELNAY: p>
CBI PORTA, 2; Вимикаємо світлодіод p>
SBIS PORTA, 0; Відбувається перевірка на наявність 0 p>
RCALL IMPULS_OTR p>
SBIC PORTA, 0 p>
RCALL IMPILS_0_TO_1; на PA1, якщо його немає, тоді перехід
M5OTR: CPI R17, 0xFF p>
BRCS M2OTR p>
LDI R17, 0XA p>
RJMP M2OTR;
IMPULS_OTR: p>
; LDI R16, 0X9 p>
; LDI R17, 0X0 p>
LDI R20, 0B00001001; то тоді запускається T/C1 p>
OUT TCCR1B, R20 p>
RET
IMPILS_0_TO_1: p>
LDI R20, 0B00000000; T/C1 зупинений p>
OUT TCCR1B, R20 p>
CPSE R16, R19 p>
RCALL TEST_OF_STOP_TC1_OTR
SBIC PORTA, 1 p>
RCALL IMPULS_POLOGITELNAY p>
RCALL IMPULS_OTRICHATELNAY p>
RET
TEST_OF_STOP_TC1_OTR: p>
IN R21, TCCR1B p>
ANDI R21, 0B000000000 p>
BRNE ENDTEST_OF_OTR p>
RCALL bin16BCD5
ENDTEST_OF_OTR: p>
RET p>
bin16BCD5: Підпрограма переведення двійкового числа в двійковій-десяткове p>
MOV R22, R16 p>
MOV R23, R18 ldi tBCD2, -1bin16BCD5_loop_1: inc tBCD2; визначення subi fbinL, low (10000); кількості sbci fbinH, high (10000); десятків тисяч brsh bin16BCD5_loop_1; в числі яке переводиться subi fbinL, low (-10000) sbci fbinH, high (-10000) ldi tBCD1 ,-0x11bin16BCD5_loop_2: subi tBCD1,-0x10; визначення subi fbinL, low (1000); кількості sbci fbinH, high (1000); тисяч brsh bin16BCD5_loop_2; в числі яке переводиться subi fbinL, low (-1000) sbci fbinH, high (-1000)bin16BCD5_loop_3: inc tBCD1; визначення subi fbinL, low (100); кількості sbci fbinH, high (100); десятків brsh bin16BCD5_loop_3; в числі яке переводиться subi fbinL, -100 ldi tBCD0,-0x10bin16BCD5_loop_4: subi tBCD0,-0x10; визначення subi fbinL, 10; кількості brsh bin16BCD5_loop_4; одиниць subi fbinL, -10; в числі яке переводиться add tBCD0, fbinL p>
LDI R16, 0X9 p>
LDI R17, 0X0 ldi r18, 0x0 p>
LDI R27, 0X0
WAIT_PRESS_KEY:; Підпрограма перевірки, в чому відображати p>
; індикацію в мСекундах або Секутдах p>
; Примітка: p>
; якщо жодна з кнопок режиму відображення p >
, не натиснута або натиснуті все, індикація відображатися не БУДЕ p>
SBRC R27, 0 p>
RJMP EXIT p>
SBIC PORTA, 3; Якщо натиснута кнопка мСекунди p>
RCALL FLASH_mC; то тоді перехід на FLASH_mC p>
SBIC PORTA, 4; якщо натиснута кнопка Секунди p>
RCALL FLASH_C; то тоді перехід на FLASH_C p >
RJMP WAIT_PRESS_KEY; якщо жодна з кнопок не натиснута p>
; то тоді очікуємо натискання p>
SBIS PORTA, 3; у противному випадку вихід з підпрограми p>
RJMP EXIT p>
SBIC PORTA, 4; якщо натиснуті всі дві кнопки, то тоді p>
чекаємо поки одну кнопку не відключать p>
RJMP WAIT_PRESS_KEY p>
OUT PORTD, R23; висновок на порт D двійковій-десяткового числа p>
OUT PORTC, R24; висновок на порт C двійковій-десяткового числа p>
OUT TCNT1H, R18; обнулення регістра NCNT1H (ст. регістр T/C1) p>
OUT TCNT1L, R18; обнулення регістра NCNT1L (мол. регістр T/C1) p>
EXIT: RET
FLASH_mC: p>
SBI PORTA, 5; Включаємо світлодіод (режим мСекунди) p>
CBI PORTA, 6; Вимикаємо світлодіод (режим Секунди) p>
CBI PORTA, 7; і вимикаємо розділову точку p>
INC R27 p>
RET
FLASH_C: p>
CBI PORTA, 5; Включаємо світлодіод (режим Секунди) p>
SBI PORTA, 6; Вимикаємо світлодіод (режим мСекунди) p>
SBI PORTA, 7; і включаємо розділову точку p>
INC R27 p>
RET p>
Список використаних джерел p>
1. Опис однокристальної мікро-ЕОМ AVR90S8515 p>
2. Методичний вказівки і завдання по курсовому проектуванню p>
«Розрахунок і проектування цифрових вимірювальних приладів» p>