Партнерка на США и Канаду по недвижимости, выплаты в крипто
- 30% recurring commission
- Выплаты в USDT
- Вывод каждую неделю
- Комиссия до 5 лет за каждого referral
ЗАСТОСУВАННЯ КОМАНД ЗСУВУ ПРИ ПРОГРАМУВАННІ МІКРОКОНТРОЛЕРІВ AVR
Технологічний інститут СНУ ім. В. Даля (м. Сєвєродонецьк)
Огляд літератури. Мікроконтролери (МК) AVR фірми Atmel належать до сімейства універсальних 8-розрядних МК на основі загального ядра з різними вбудованими периферійними пристроями. Можливості МК AVR дозволяють вирішити безліч типових завдань, що виникають перед розробниками систем промислової автоматизації. Для програмування мікроконтролерів сімейства AVR існує багато засобів розроблення, проте, найбільш популярним, поза сумнівом, є програмний пакет AVR Studio 4. Є ряд причин такої популярності – це безкоштовний програмний пакет, розроблений фірмою Atmel, який об'єднує в собі текстовий редактор та програмний емулятор мікроконтролерів різних типів. Пакет AVR Studio 4 використовується також спільно з апаратними засобами налаштування фірми Atmel.
Постановка задачі. При розроблені програмних засобів для мікроконтролерів AVR досить часто виникає задача застосування команд зсуву, що складається з наступних команд [1] (рис. 1):
– арифметичного зсуву вправо (asr);
– логічного зсуву вправо (lsr);
– логічного зсуву вліво (lsl);
– циклічного зсуву вправо (ror);
– циклічного зсуву вліво (rol).

Рисунок 1 – Графічне зображення виконання команд зсуву
Програмування кожної команди зсуву у програмі користувача пов’язана з виконанням однотипних кроків, що загалом збільшує її розмір в постійній пам’яті. У цьому випадку пропонується розробити підпрограми реалізації команд зсуву та звертатись до них командами передачі керування.
Рішення задачі. Вище наведені команди належать до групи команд роботи з бітами та тестувань бітів.
При арифметичному зсуві вправо всі біти регістра зсуваються вправо, при цьому біт 7 не змінюється, а біт 0 завантажується в прапорець переносу (біт С регістра статусу SREG).
При логічному зсуві вправо всі біти регістра зсуваються вправо, а біт 7 скидається в 0.
Циклічний зсув вправо здійснюється через прапорець переносу, тобто значення прапорця заноситься у біт 7 регістра, а вміст 0-го біту – у прапорець переносу.
Досить часто команди зсуву використовуються для реалізації пристрою, що формує включення світлодіодів з зсувом свічення, наприклад, вліво, т. зв. «вогник, що біжить».
Для виконання такої команди необхідно встановити біт 0 відповідного порту в 1, а потім виконати команду логічного зсуву (lsl) вліво 7 раз.
В схемі пристрою використаний мікроконтролер АТ90S1200.
Секція світлодіодів підключена до контактів порту РВ0-РВ7 мікроконтролера.
На рисунку 2 наведена принципова електрична схема пристрою, що реалізує «вогник, що біжить».

Рисунок 2 – Принципова електрична схема пристрою
Оскільки світлодіоди підключені до контактів РВ0-РВ7 (PinB0-PinB7), а звідти поступають регістр РortB, тому неможливо напряму застосувати команду зсуву безпосередньо до вмісту регістра РortB. Для цього необхідно завантажити поточний стан світлодіодів в тимчасовий регістр (temp), який слід обрати з діапазону r16-r31, виконати зсув вмісту регістра temp і потім записати це значення в РortB.
Нижче наведено фрагмент підпрограми виконання команди логічного зсуву вліво.
.include "1200def. inc"
;Визначення регістрів
.def temp=r16 ;Регістр тимчасового зберігання
……………
;Підпрограма логічного зсуву вліво
Zsuv_log_vlivo:
ser temp
out DDRB, temp ;Порт В – на вивід
in temp, pinD ;Ввід коду
lsl temp ;Логічний зсув вліво
out PortB, temp ;Вивід результату
clr temp ;Підготовка регістру та
out PortB, temp ;порту до виконання нової команди
ret ;Повертаємось до основної програми
……………..
Оскільки після скидання МК у всіх розрядах регістра DDRD порту D встановлюється 0, то нема необхідності повторно програмувати його на ввід інформації.
Висновки. Широке застосування МК у засобах малої автоматизації вимагає від розробників радіоелектронної апаратури у відсутності великих об’ємів пам’яті (об’єм постійної пам’яті МК для моделей серії, наприклад, tiny AVR становить 0.5–8 кB) досить ретельно планувати структуру програмних засобів, що на кінцевому етапі впливає на вартість пристрою в цілому. За допомогою таких підпрограм вдається суттєво скоротити вихідний код для завантаження у МК.
Література:
1. Хартов для начинающих / . – М. Изд-во МГТУ им. , 2007. – 240 с.: ил.


