Мікропроцесорний пристрій управління електронними вагами

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати

Федеральне Агентство з освіти
МІНІСТЕРСТВО ОСВІТИ УНІВЕРСИТЕТ СИСТЕМ УПРАВЛІННЯ ТА РАДІОЕЛЕКТРОНІКИ (ТУСУР)
Кафедра промислової електроніки (ПРЕ)
Мікропроцесорні пристрої керування електронними вагами
Пояснювальна записка до курсового проекту з дисципліни
«Мікропроцесорні пристрої та системи»
ЗФ КП. ХХХХХХ.008 ПЗ
Студент групи
Керівник проекту
професор кафедри ПРЕ
А. В. Шарапов
2008

Федеральне Агентство з освіти
МІНІСТЕРСТВО ОСВІТИ УНІВЕРСИТЕТ СИСТЕМ УПРАВЛІННЯ ТА РАДІОЕЛЕКТРОНІКИ (ТУСУР)
Кафедра промислової електроніки (ПРЕ)
ЗАВДАННЯ
на курсове проектування з дисципліни
«Мікропроцесорні пристрої та системи»
студенту ____________________________________
група ________________ факультет _______ ЗФ ________
Тема проекту: Мікропроцесорний пристрій управління
електронними вагами ________________________________
Вихідні дані до проекту: Фіксуються вага і вартість розфасованої порції продукту ____________________________
Зміст пояснювальної записки (перелік які підлягають розробці питань): ______________________________________
вибір мікроконтролера, обгрунтування функціональної схеми,
розробка повної принципової схеми пристрою з переліком
елементів і лістингу керуючої програми
Перелік графічного матеріалу (з точним зазначенням обов'язкових креслень і схем):
схема електрична принципова - 1 аркуш
Дата видачі завдання: __________________________________
Керівник професор кафедри ПРЕ _______ А. В. Шарапов
Завдання прийняв до виконання ____________________

ЗМІСТ
1 Вступ ................................................ .................................................. .4
2 Конкретизація технічного завдання .............................................. ..... 4
3 Розробка функціональної схеми .............................................. ......... 4
4 Розробка схеми алгоритму прикладної програми ......................... 5
5 Розробка принципової схеми .............................................. ......... 7
6 Розробка керуючої програми .............................................. ...... 9
7 Висновок ................................................ ............................................. 10
Список використаних джерел ............................................... ....... 11
Додаток А. Лістинг програми, що управляє .............................. 12
ЗФ КП. ХХХХХХ.008 Е3 Плата мікроконтролера. Схема електрична принципова ... ... ... ... ... .......................................... ............ 19
ЗФ КП.ХХХХХХ.008 ПЕ3 Плата мікроконтролера. Перелік елементів ................................................ .................................................. ............ 20

1 ВСТУП
Застосування мікропроцесорних засобів дозволяє будувати універсальні пристрої керування електронними вагами, легко перебудовуються на різні режими його роботи.
Аналіз технічного завдання показує, що проектоване пристрій повинен виконувати дві основні задачі:
а) дозволяти вводити ціну продукту з клавіатури;
б) обробляти і виводити значення ціни, ваги та вартості розфасованого продукту;
При проектуванні прийнято, що вага товару не перевищує 1 кг, а ціна за кілограм і вартість - 99р. 99коп ..

2 конкретизації технічних ЗАВДАННЯ
Для електронних ваг потрібно наступні зовнішні пристрої:
- Клавіатура з цифрами 0-9 і клавішею введення, тобто всього десять клавіш;
- 2 семисегментних індикаторів: 4 відображають вагу з точністю до грама, по 4 для відображення ціни та вартості товару.
- Підсилювач сигналу з датчика ваги і АЦП для оцифровки даних.
При використанні мікропроцесорного комплекту серії К580 пристрій управління вагами крім центрального процесора (п'ять мікросхем) має включати в себе паралельний інтерфейс, програмований таймер, ПЗУ для зберігання прикладної програми і ОЗУ для організації стека.
Переважно використання однокристальних мікроконтролерів, де всі перераховані пристрої реалізовані в одній мікросхемі і потрібно лише одне джерело живлення. Найбільш оптимальне рішення виходить при застосуванні мікроконтролерів Atmel AVR з гнучкою і розвиненою системою команд і безліччю допоміжних функцій, серед яких присутні 8 - і 16-розрядні таймери і 10-розрядні АЦП. Крім того, ці контролери виготовлені за технологією КМОП, що забезпечує економічне споживання струму.

3 РОЗРОБКА ФУНКЦІОНАЛЬНОЇ СХЕМИ
На малюнку 3.1 наведена функціональна схема пристрою керування електроннимім вагами, виконаного на однокристальним мікроконтролері Atmega16.
У зв'язку з досить великою кількістю семисегментних індикаторів слід використовувати схему динамічної індикації. Для цього інформаційні входи семисегментних індикаторів підключені до виходів дешифратора К514ІД1, а загальний вхід кожного індикатора - до виходу 4-розрядного дешифратора К1564ІД5. На вхід К514ІД1 від мікроконтролера подається код символу, на вхід К1564ІД5 - код активного індикатора. Кожен індикатор потрібно активувати з частотою не менш 40 Гц (частота, при якій мерехтіння індикаторів непомітно для очей). Для відображення інформації при такому підключенні буде потрібно один порт, в даній схемі для цих цілей виділено порт PC. Оскільки у дешифратора семисегментного індикатора управління комою не передбачено, то для слід виділити ще один висновок мікроконтролера, в даному випадку PD7.
Клавіатуру зручно побудувати у вигляді матриці 3'4, для її сканування потрібно один порт, в даному випадку PB.
Для оцифровки сигналу датчика використовується вхід мікроконтролера ADC0.
Для визначення ваги товару з точністю до грама при максимальній вазі 1кг потрібно 10-ти розрядний АЦП, вбудований у мікроконтролер.
DB CCD CNTL
RD SHIFT
WR RL
CS
A0 SL
IRQ
CLK BD
RES OB , OA



Малюнок 3.1 - Функціональна схема контролера

4 Розробка алгоритму керуючої програми
Незалежно від завдань, що виконуються мікроконтролером, алгоритм керуючої програми, як правило, складається з двох частин:
- Початкова завантаження регістрів і значень змінних, ініціалізація зовнішніх пристроїв;
- Нескінченний цикл, в якому зазвичай відбувається опитування зовнішніх сигналів і оновлення інформації як для внутрішніх регістрів, так і для зовнішніх пристроїв.
У електронних ваг повинно бути два режими роботи: режим зважування і режим редагування ціни за одиницю продукції. Щоб їх розрізняти, введений спеціальний байт status. При скиданні ваги повинні знаходитися в режимі редагування, контролер у цьому режимі, очікує введення значення ціни або її підтвердження шляхом натискання клавіші вводу. У режимі зважування контролер перераховує значення вартості зваженої продукції в залежності від ваги та ціни.
Для відображення чисел на екрані необхідна спеціальна підпрограма, перетворююча число в послідовність символів, що виводяться.

Ініціалізація
Скидання
Опитування клавіатури
status = 1?
Натиснутий «Введення»
Підпрограма зчитування даних
status = 1
та
Підпрограма перерахунку
вартості
та
немає
немає
Підпрограма виводу на дисплей


Малюнок 4.1 - Схема алгоритму прикладної програми

5 Розробка схеми електричної принципової
Схема електрична принципова повністю приведена у додатку.
При використанні контролера Atmega16 фірмою-виробником рекомендовано використовувати паралельно кожній парі висновків харчування приєднувати помехозащіщающій конденсатор ємністю не менше 1мкФ. На схемі ці конденсатори позначені C1 і C2, обраний тип К10-17-10В-1мкФ ± 10%. Між лінією RESET і плюсом живлення підключається резистор з типовим значенням 10 кОм (на схемі - R1), між лінією RESET і мінусом харчування - конденсатор ємністю 1мкФ (на схемі - C4). Така схема дозволяє уникнути помилкового скидання мікроконтролера.
Паралельно лініях XTAL1 і XTAL2 під'єднується кварцовий резонатор, частота якого для даного мікроконтролера зазвичай дорівнює 16МГц. Між мінусом харчування і лініями XTAL1 і XTAL2 ставляться конденсатори ємністю (20 .. 30) пФ (на схемі - C3 і C5).
Для посилення сигналу з датчика ваги слід застосувати вимірювальний підсилювач. Схема такого пристрою часто включає в себе кілька операційних підсилювачів, але може випускатися в інтегральному виконанні. В якості вимірювального підсилювача є мікросхема INA128, яка в якості додаткових пасивних елементів вимагає тільки резистор для регулювання коефіцієнта посилення (на схемі - R2), що визначається за формулою:
, (5.1)
де K - необхідний коефіцієнт підсилення.
Наприклад, при K = 100 розрахована за формулою значення R G одно 505 Ом, воно округляється до значення з ряду номіналів E6, рівне 510 Ом. Краще застосовувати подстроєчний резистор з метою калібрування коефіцієнта підсилення.
У клавіатурної матриці опитувані лінії повинні бути підтягнуті до плюса харчування через резистори, типове значення яких дорівнює 10кОм (на схемі - R4-R6).
Для відображення інформації обрані семисегментні індикатори SA04-11 із загальним анодом, кожен з яких споживає максимальний струм 160мА, кожен сегмент споживає струм I сег = 20мА. Опір, що обмежує струм лінії PD7, розраховується за формулою:
, (5.2)
Округляючи значення опору до стандартного, отримуємо R3 = 130Ом.
Вихід дешифратора К1564ІД5, що дозволяє роботу окремо взятого індикатора, не забезпечує такого струму, тому слід застосувати схему з підсилювальним каскадом, зображену на рис. 5.1. Робота семисегментного індикатора дозволена, коли з виходу дешифратора приходить низький рівень. При цьому між базою і емітером транзистора подається зсув, що задається подільником напруги, що складається з резисторів R1 і R3, включеного паралельно з опором емітерного переходу з боку бази. Резистор R2 обмежує струм.

Рис. 5.1 - Схема узгодження по струму дешифратора з семисегментний індикатором.
Для даної схеми можна вибрати транзистор К501 з максимальним струмом колектора 300мА.
Якщо прийняти струм через R3 рівним току бази, то величина цього опір визначитися за формулою:
(5.3)
де b - коефіцієнт передачі по струму в схемі з загальним емітером, для К501 можна прийняти рівним 50;
U бе - напруга, необхідне для відкриття транзистора, звичайно дорівнює (0,8 .. 0,9) В;
I до - струм колектора, в даному випадку дорівнює току, який використовується індикатором;
R бе - опір емітерного переходу з боку бази.
.
Округляючи значення опору до стандартного, отримуємо R3 = 300Ом.
R1 розраховується за формулою:
, (5.4)
де U п - напруга живлення.

Округляючи значення опору до стандартного, отримуємо R1 = 680Ом
R2 розраховується за формулою:
, (5.5)
де U д - падіння напруга на індикаторі, так само 2,5 В.
Висновки 4 мікросхеми К514ІД1, 18 і 19 мікросхеми К1564ІД5 під'єднуються до мінуса харчування для дозволу їх роботи.
Ззовні на пристрій керування через роз'єм XP1 подаються: сигнал датчика, напруга живлення +5 В,-5В (для підсилювача), загальний провід живлення.

6 розробки керуючих програм
Лістинг керуючої програми наведений у додатку А.
Для відображення інформації в пам'яті слід виділити 12 байт, в кожному з яких буде зберігатися код відображуваного символу. Підпрограма перетворення числа в послідовність виконує поділ машинного слова на 10 із залишком, тому для неї необхідно 6 байт: по два для діленого, приватного та залишку. Підпрограма розрахунку вартості виконує множення і ділення слів, тому для неї необхідно виділити 8 тимчасових регістрів. При виділенні реєстрової пам'яті враховано, що регістри r0-r15 не можуть використовуватися в ряді команд, наприклад, при порівнянні. В оперативній пам'яті також слід виділити 10 осередків під таблицю для розшифровки скан-кодів цифрових клавіш. Під вагу, ціну та вартість у пам'яті виділяється по два байти.
Після подачі сигналу скидання RESET проводиться початкова завантаження регістрів, за допомогою яких реалізується настроювання портів вводу / виводу й оцифровування аналогового сигналу, а також ініціалізація таблиці рашіфровкі скан-кодів. Після ініціалізації програма входить у нескінченний цикл. Опитування клавіатури відбувається шляхом почергової установки в низький рівень ліній PB4-PB6 і читання ліній PB0-PB3. Далі скан-код клавіші розпізнається програмно, під нього виділено регістр r13. При виконанні процедури введення даних скан-код розшифровується за допомогою таблиці і кінцеве значення символу, введеного з клавіатури, записується в регістр r14.
Регістри r16-r25 використовуються для тимчасового зберігання даних.
При розробці процедури відображення інформації необхідно враховувати, що екран повинен повністю обновлятися з частотою не менш 40Гц, отже, з урахуванням того, що дисплей має 16 індикаторів, активний індикатор повинен мінятися не пізніше, ніж через кожні 1,5625 мс. Основний цикл програми, в якому відбувається оновлення інформації, що відображається, займає менше часу
Мікроконтролер працює з цілими числами, дробова частина буде лише імітуватися шляхом підсвічування коми біля відповідного символу на дисплеї.

7 ВИСНОВОК
У контролері можна використовувати будь-які мікросхеми сімейства AVR, в залежності від поставлених завдань. Контролер має резидентної пам'яттю і безліччю вбудованих допоміжних пристроїв, що значно спрощує схемотехнічних реалізацію системи управління. Завдяки тому, що контролер є перепрограмованих, в системі управління електронними вагами досить легко можна змінити діапазон ваги, ціни і вартості.

ЛІТЕРАТУРА

1. Шарапов О.В. Приклади рішення схемотехнічних завдань: Навчальний посібник. - Томськ: ТІАСУР, 1994. - 141 с.
2. Шарапов О.В. Цифрова та мікропроцесорна техніка: Навчальний посібник. 2-е вид., Перер. і доп. - Томськ: Вид-во Том. ун-ту, 1997. - 108 с.
3. Сташін В.В., Урусов А.В., Мологонцева О.Ф. Проектування цифрових пристроїв на однокристальних мікроконтролерах. - М.: Вища школа, 1990. - 224 с.
4. Калабеков Б.А., мамзель І.А. Цифрові пристрої і мікропроцесорні системи: Підручник для технікумів зв'язку. - М.: Радіо і зв'язок, 1987. - 400 с.
5. Мікропроцесори і мікроЕОМ в системах автоматичного управління: Довідник / С. Т. Хвощ, М. М. Варлінскій, Є. О. Попов; За заг. ред. С. Т. Хвоща. - Л.: Машинобудування, 1987. - 640 с.
6. http://www.atmel.com/dyn/resources/prod_documents/2466S.pdf - Пільне керівництво по роботі з контролером Atmega16. Електронний ресурс.

Додаток А. Лістинг Керуюча програма
. Include "m16def.inc"; Включити визначення для контролера Atmega16
. Def scancode = r13
. Def key = r14
. Def pointer = r15; використовується для введення даних
. Equ entercode = 0xD7; код клавіші введення
. DSEG, резервування пам'яті
status:. BYTE 1; байт статусу
weight:. BYTE 2; вага
price:. BYTE 2; ціна
cost:. BYTE 2; вартість
key_table. BYTE 10; таблиця сканкодов
dysplay_table:. BYTE 16; виділити 16 байт як буфер дисплея
. CSEG
; Перед початком виконання програми контролер перевіряє вектори переривань
rjmp RESET; Reset Handler
nop
reti EXT_INT0; INT0 Handler
nop
reti EXT_INT1; INT1 Handler
nop
reti TIM2_COMP; Timer2 Compare Handler
nop
reti; TIM2_OVF; Timer2 Overflow Handler
nop
reti; TIM1_CAPT; Timer1 Capture Handler
nop
reti; TIM1_COMPA; Timer1 CompareA Handler
nop
reti; TIM1_COMPB; Timer1 CompareB Handler
nop
reti; TIM1_OVF; Timer1 Overflow Handler
nop
reti; TIM0_OVF; Timer0 Overflow Handler
nop
reti; SPI_STC; SPI Transfer Complete Handler
nop
reti; USART_RXC; USART0 RX Complete Handler
nop
reti; USART_DRE; USART0, UDR Empty Handler
nop
reti; USART_TXC; USART0 TX Complete Handler
nop
reti; ADC; ADC Conversion Complete Handler
nop
reti; EE_RDY; EEPROM Ready Handler
nop
reti; ANA_COMP; Analog Comparator Handler
nop
reti; TWI; Two-wire Serial Interface Interrupt Handler
nop
reti; TIM0_COMP; Timer0 Compare Handler
nop
reti; EXT_INT2; INT2 Handler
nop
reti; SPM_RDY; SPM Ready Handler
nop
; Ініціалізація
reset: out DDRB, 0xF0; Старша тетрада порту PB налаштовується на висновок, молодша - на введення
out DDRС, 0xFF; Порти PC і PB налаштовуються на висновок
out DDRD, 0xFF;
out ADMUX, 0x40; АЦП працює з зовнішнім опорним сигналом, канал 0.
out SFIOR, 0x00; АЦП працює автоматичного поновлення даних.
out ADCSRA, 0xC0; Запуск АЦП.
ldi r26, low (key_table); заповнення таблиці скан-кодів
ldi r27, high (key_table)
ldi r16, 0xE7; клавіша «0»
st X +, r16
ldi r16, 0xEE; клавіша «1»
st X +, r16
ldi r16, 0xDE; клавіша «2»
st X +, r16
ldi r16, 0xBE; клавіша «3»
st X +, r16
ldi r16, 0xED; клавіша «4»
st X +, r16
ldi r16, 0xDD; клавіша «5»
st X +, r16
ldi r16, 0xBD; клавіша «6»
st X +, r16
ldi r16, 0xEB; клавіша «7»
st X +, r16
ldi r16, 0xDB; клавіша «8»
st X +, r16
ldi r16, 0xBB; клавіша «9»
st X +, r16
; Опитування клавіатури
begin: ldi scancode, 0xFF
ldi r19, 0x00; обнулення лічильника антідребезгового циклу
l3: ldi r16, 0x01; задається Опитувана лінія
l1: mov r17, temp1; номер опитуваної лінії перетвориться для обнулення
neg r17; відповідного висновку
out PORTB, r17
in r17, PINB; читання сканкода
ori r17, 0x80
cpi r17, 0xFF; якщо клавіша натиснута, то запам'ятати її сканкод для
breq l4; обробки в антідребезговом циклі
mov r18, r17
l4: lsl r16; наступна лінія
cpi r16, 0x10
brne l1; якщо опитані всі лінії, переходимо до наступного кроку
cpi r19, 0x00
breq l2
cp r18, scancode
brne l5; якщо поточний скан-код не дорівнює попередньому, то натискання випадкове
l2: mov scancode, r18
inc r19
cpi r19, 0x03; антідребезговий цикл
brne l3
; Опитування режиму
l5: ldi r26, low (status)
ldi r27, high (status)
ld r16, X; завантажується адреса байта стану
cpi r16, 0x01
breq l6; якщо status = 1, то перейти до вводу даних
cpi scancode, entercode; якщо не натиснутий «Введення»,
brne l7; то перейти перерахунку даних
ldi r16, 0x01; інакше увійти в режим введення даних
st X, r16
ldi r16, 0
move pointer, r16
jmp display
; Перерахунок даних
l7: in r16, low (ADC); читання АЦП
in r17, high (ADC)
; Перерахунок одиниць АЦП в реальну вагу. Вага дорівнює 1000 * ADC/1024, операції множення і ділення на константу реалізовані шляхом операцій зсуву і віднімання
mov r18, r16
mov r19, r17
lsl r16
rol r17
lsl r16
rol r17
lsl r16
rol r17
lsl r16
rol r17
lsl r16
rol r17
lsl r16
rol r17
sub r16, r18
sbc r17, r19
sub r16, r18
sbc r17, r19
sub r16, r18
sbc r17, r19
lsr r17
ror r16
lsr r17
ror r16
lsr r17
ror r16
lsr r17
ror r16
lsr r17
ror r16
lsr r17
ror r16
ldi r26, low (weight)
ldi r27, high (weight)
st X +, r16
st X +, r17
; Розрахунок вартості
ld X +, r18; завантаження значення ціни з пам'яті
ld X +, r19; завантаження значення ціни з пам'яті
ldi r20, 0
ldi r21, 0
ldi r22, 0
ldi r23, 0
ldi r24, 0
ldi r25, 0
ldi r0, 0
ldi r2, 0
ldi r3, 0
; Множення ціни на вагу
l11: add r20, weight_l
adc r21, weight_h
adc r22, r0
adc r23, r3
inc r24
adc r25, r0
cp r24, r18
cpc r25, r19
brne l11
; Поділ на тисячу
l12: ldi r24, 0xE8
ldi r25, 0x03
cp r20, r24
cpc r21, r25
ldi r24, 0
cpc r22, r24
cpc r23, r24
brne l13
ldi r24, 0xE8
sub r20, r24
sbc r21, r25
sbc r22, r0
sbc r23, r0
ldi r24
add r2, r24
adc r3, r0
rjmp l12
l13: st X +, r20; завантаження вартості в пам'ять
st X +, r21
; Перетворення чисел на символи
ldi R26, low (dysplay_table); завантаження початкового адреси буфера
ldi R27, high (dysplay_table); дисплея в регістр X.
ldi r16, 0; заповнення буфера нульовими символами
ldi r17, 0
cpi r16, 16
brlo l14
st X, r17
inc К16
l14: ldi r28, low (weight)
ldi r29, high (weight)
ld Y +, r16; завантаження ваги з пам'яті
ld Y +, r17
rjmp IntToStr
ldi r26, low (dysplay_table +4); завантаження початкового адреси буфера
ldi r27, high (dysplay_table +4); дисплея в регістр X.
ld Y +, r16; завантаження ціни з пам'яті
ld Y +, r17
rjmp IntToStr
ldi r26, low (dysplay_table +8); завантаження початкового адреси буфера
ldi r27, high (dysplay_table +8); дисплея в регістр X.
ld Y +, r16; завантаження вартості з пам'яті
ld Y +, r17
rjmp IntToStr
rjmp display
; Зчитування даних з клавіатури
l6: ldi r26, low (key_table); завантаження початкової адреси
ldi r27, high (key_table); таблиці скан-кодів
lde r17, 0
l15: ld r16, X +
cp r16, scancode; розшифровка скан-коду
breq l16; якщо потрібний скан-код знайдений, перехід до заповнення даних
inc r17
cpi r17, 11
breq l18
rjmp l15
l18: cpi scancode, 0xD7; обробка натискання введення
brne display
ldi r20, 0
ldi r28, low (dysplay_table +3); завантаження кінцевого адреси
ldi r29, high (dysplay_table +3); символів, що відображають ціну
; Переклад даних з строкового виду в числовий
l19: ld r16, Y-
ldi r17, 0
mov r18, r16
mov r19, r17
lsl r16
rsl r17
lsl r16
rsl r17
lsl r16
rsl r17
lsl r16
rsl r17
add r16, r18
adc r17, r19
add r16, r18
adc r17, r19
ld r18, Y
ldi r19, 0
add r16, r18
adc r17, r19
inc r20
cpi r20, 3
brne l19
ldi r28, low (price); завантаження кінцевого адреси
ldi r29, high (dysplay_table +3); символів, що відображають ціну
st Y +, r16
st Y +, r17
jmp display
l16: mov key, r17
mov r17, pointer
cpi r17, 0
brne l18
; Якщо заповнення розпочато заново, обнуляється весь рядок
ldi r28, low (dysplay_table); завантаження початкового адреси символів,
ldi r29, high (dysplay_table); відображають ціну
ldi r16, 0
st Y +, r16
st Y +, r16
st Y +, r16
st Y +, r16
ldi r26, low (dysplay_table +7); завантаження адреси кінця рядка,
ldi r27, high (dysplay_table +7); відображає ціну
ldi r28, low (dysplay_table +6); завантаження адреси передостаннього
ldi r29, high (dysplay_table +6); символу рядка, що відображає ціну
ld r16, Y-
st X-, R16
ld r16, Y-
st X-, R16
ld r16, Y-
st X-, R16
st Y, key; запис символу
ldi r16, 1
add r17, r16
cpi r17, 4
brlo l17
ldi r17, 0
l17: mov pointer, r17
; Відображення на дисплеї
display: ldi r26, low (dysplay_table); завантаження початкового адреси буфера
ldi r27, high (dysplay_table); дисплея в регістр X.
ldi r16, 0x00; r16 використовується для адресації індикатора
l8: ld r17, X +; r17 використовується для тимчасового зберігання коду символу
andi r16, 0x0F
lsl r17; формування байта для відправки на дисплей
lsl r17
lsl r17
lsl r17
add r17, r16
out PORTC, r17
cpi r16, 0x01
breq l9
cpi r16, 0x05
breq l9
cpi r16, 0x0A
breq l9
out PORTD, 0x01; гасіння коми
rjmp l10
l9: out PORTD, 0x00; відображення коми
l10: cpi r16, 0x0F
brne l8
; Підпрограма перетворення числа в рядок
IntToStr: ldi r20, 10
ldi r21, 0
ITS4: cp r16, r20
cpc r17, r21
brlo ITS1
mov r18, r16
mov r19, r16
ldi r16, 0
ldi r17, 0
ITS2: cp r18, r20
cpc r19, r21
brlo ITS3
sub r18, r20
sbs r19, r21
inc r16
adc r17, r19
rjmp ITS2
ITS3: ld X +, r16
rjmp ITS4
ITS1: ld X +, r16
reti
Додати в блог або на сайт

Цей текст може містити помилки.

Програмування, комп'ютери, інформатика і кібернетика | Курсова
47.9кб. | скачати


Схожі роботи:
Пристрій рульового управління ВАЗ 2106
Пристрій рульового управління ВАЗ-2106
Пристрій управління в Московській державі XVI століття
Робота з електронними презентаціями
Робота з електронними таблицями
Індикатор технологічний мікропроцесорний ІТМ 20
Мікропроцесорний комплект серії КР580
Мікропроцесорний комплект серії К580
Індикатор технологічний мікропроцесорний ІТМ-20
© Усі права захищені
написати до нас