69382

Особливості розробки робочої керуючої програми та програмна модель мікроконтролера

Лекция

Коммуникация, связь, радиоэлектроника и цифровые приборы

РПД являє собою 128 восьмирозрядних регістрів які призначені для прийому збереження та видачі різноманітної інформації. Шістнадцять із цих регістрів допускають побітову адресацію. В області молодших адрес РПД знаходяться 4 банки регістрів загального призначення РЗП кожен...

Украинкский

2014-10-04

302 KB

0 чел.

РОЗДІЛ 2 ПРОГРАМУВАННЯ МІКРОПРОЦЕСОРНИХ СИСТЕМ НА БАЗІ МІКРОКОНТРОЛЕРІВ РОДИНИ МК-51

Тема 2.1 Особливості розробки робочої керуючої програми та програмна модель мікроконтролера

леКЦІЯ 2 Особливості розробки робочої керуючої програми та програмна модель мікроконтролера

МІСЦЕ ТА РОЛЬ КЕРУЮЧОЇ ПРОГРАМИ У РОБОТІ МІКРОПРОЦЕСОРНОЇ СИСТЕМИ

Якщо мікропроцесорна система (МПС) виконана на основі мікроконтролера (МК), то керуюча програма знаходиться у резидентній (РПП) і/або зовнішній пам'яті програм (ЗПП). Без керуючої програми жодна МПС працювати не буде.

  1.  ПОСЛІДОВНІСТЬ РОЗРОБКИ РОБОЧОЇ КЕРУЮЧОЇ ПРОГРАМИ

Основні етапи створення керуючої програми:

  •  розробка схеми алгоритму, яку повинна реалізувати конкретна керуюча програма;
  •  якщо задача складна, то програма може бути реалізована і відлагоджена на мові високого рівня або мові асемблера;
  •  компіляція – переведення програми з мови високого рівня або асемблера в машинні коди конкретного МК-ра (створення об'єктного модуля);
  •  введення керуючої програми в РПП і/або ЗПП за допомогою програматора;
  •  в процесі початкової ініціалізації системи у програмний лічильник завантажується початкова адреса програми.

Керуюча програма може включати підпрограми.

Підпрограма – це частина основної програми, яка може бути викликана з основної програми або за перериванням.

  1.  МОВА АСЕМБЛЕРА

Мова асемблера (МА) – мова програмування низького рівня (машинно-орієнтована мова).

Існують мови програмування високого рівня і низького рівня (машинно-орієнтовані, асемблер).

Основу асемблера складають команди МК-ра, які не можна змінити, а можна вивчити і використовувати під час програмування. Тому говорять, що асемблер орієнтований на конкретний МК-р (на його систему команд).

Окрім цих команд, які при компіляції перетворюються у машинний код, програма включає псевдокоманди та директиви, які вказують програмі компілятора, яка також зветься асемблером, як виконати відповідні дії по створенню виконуваного файлу для МК-ра.

Нагадаємо, що при створенні робочих програм на МА використовують такі системні керуючі програми:

  •  транслятори – перетворюють програму, яка написана на одній мові програмування, в програму, яка написана на іншій мові програмування;
  •  компілятори – є різновидом транслятора; переводять програму з мови високого рівня в машинні коди;
  •  асемблери – це окремий випадок компілятора; перетворює програму з мови асемблера в двійкові (машинні) коди (ДК);
  •  відлагоджувачі – керуюча програма для відлагодження програми у відповідній системі.

Деякі особливості мови асемблера МК-ра наведені у розділі СРС до цієї лекції.

  1.  ПРОГРАМНА МОДЕЛЬ МІКРОКОНТРОЛЕРА РОДИНИ МК-51
    1.  Загальна характеристика

Програмна (програмістська) модель включає ті частини архітектури МК, до яких програміст може отримати доступ за допомогою тієї або іншої команди.

Програмістська модель мікроконтролера родини МК-51 АТ89С51 наведена на рисунках 1, 2.

Розглянемо більш детально характеристику окремих складових частин цієї моделі.

  1.  Резидентна пам’ять даних

Резидентна пам’ять даних (РПД) призначена для прийому, збереження та видачі інформації, яка використовується в процесі виконання програми. Пам’ять даних ділиться на внутрішню (резидентну) пам’ять даних РПД і зовнішню пам’ять даних ЗПД.

РПД являє собою 128 восьмирозрядних регістрів, які призначені для прийому, збереження та видачі різноманітної інформації. Шістнадцять із цих регістрів допускають побітову адресацію.

На рисунку 3 наведений розподіл адресного простору РПД і області біт, що адресуються прямо.

В області молодших адрес РПД знаходяться 4 банки регістрів загального призначення (РЗП), кожен з яких має об’єм 8 байт (регістрів): R0, R1, …, R7.

Рисунок 1 – Програмна модель МК-51

Рисунок 2 – Програмна модель МК-51 (продовження)

Рисунок 3 – Розподіл адресного простору РПД і області біт, які адресуються прямо

  1.  Регістри спеціальних функцій

Частину програмної моделі складають регістри спеціальних функцій (таблиця 1).

Таблиця 1 – Регістри спеціальних функцій

Позначення

Найменування

Адреса

*   ACC

Акумулятор

0E0H

*   B

Регістр В

0F0H

*   PSW

Регістр стану програми

0D0H

SP

Регістр-покажчик стеку

81H

DPTR

Регістр-покажчик даних (2 байти):

DPL

Молодший байт

82H

DPH

Старший байт

83Н


Продовження таблиці 1

*   P0

Порт 0

80H

*   P1

Порт 1

90H

*   P2

Порт 2

0A0H

*   P3

Порт 3

0B0H

*   IP

Регістр пріоритетів переривань

0B8H

*   IE

Регістр дозволу (масок) переривань

0A8H

TMOD

Регістр режимів таймерів/лічильників

89H

*   TCON

Регістр керування-статусу таймерів/лічильників

88H

TH0

Таймер/лічильник 0 (старший байт)

8CH

TL0

Таймер/лічильник 0 (молодший байт)

8AH

TH1

Таймер/лічильник 1 (старший байт)

8DH

TL1

Таймер/лічильник 1 (молодший байт)

8BH

*   SCON

Регістр керування послідовним портом

98H

SBUF

Буфер послідовного порту

99H

PCON

Регістр керування енергоспоживанням

87H

* - регістри, які допускають побітову адресацію.

Нижче описано призначення цих регістрів.

Акумулятор A (англ. Accumulator). Один з найважливіших регістрів мікроконтролера. Команди, які призначені для роботи з акумулятором, використовують його ім'я «А», наприклад, MOV A, P2. Ім'я «АСС» використовується, приміром, при побітовій адресації акумулятора. Так, наприклад, символічне ім’я п’ятого біта акумулятора при використанні мови асемблера ASM51 буде таким: АСС.5.

Регістр В. Використовується під час операцій множення та ділення. Для інших команд регістр В може розглядатись як додатковий регістр внутрішньої надоперативної пам’яті (НОЗП).

Регістр стану програми РСП (англ. Program Status Word – PSW). Регістр PSW містить інформацію про стан програми. Формат регістра PSW наведений у таблиці 2.

Таблиця 2 – Формат регістра РСП

Позиція

Символ

Ім’я та призначення

PSW.7

C

Прапорець перенесення (англ. Carry flag). Встановлюється та скидається апаратними засобами при виконанні арифметичних і логічних операцій. Програмно доступний.

PSW.6

AC

Прапорець допоміжного перенесення (англ. Auxiliary carry flag). Встановлюється та скидається апаратними засобами при виконанні команд додавання і віднімання та сигналізує про перенесення (переповнення) або позику в біті 3 (вважаючи молодший біт нульовим). Програмно доступний.

PSW.5

F0

Прапорець F0 (англ. User controlled flag). Може бути встановлений в 0 чи 1 або перевірений програмою як прапорець, який спеціфікується користувачем.

PSW.4

PSW.3

RS1

RS0

Вибір банку регістрів (англ. Register select bank switch flag). Встановлюється та скидається програмою для вибору робочого банку регістрів.

Продовження таблиці 2

PSW.2

OV

Прапорець переповнення (англ. Overflow flag). Встановлюється та скидається апаратно при виконанні арифметичних операцій. Програмно доступний.

PSW.1

-

Не використовується.

PSW.0

P

Прапорець пріоритету (англ. Parity flag). Встановлюється і скидається апаратно в кожному циклі команди та фіксує непарне/парне (1/0) число одиничних біт в акумуляторі, тобто виконує контроль за парністю.

Регістр-покажчик стека - РПС (англ. Stack Pointer - SP). 8-бітовий регістр, вміст якого інкрементується перед записом даних у стек при виконанні команд PUSH і CALL. При початковому скиданні в покажчик стека заноситься значення 07Н, а область стека в ОЗП даних починається з адреси 08Н. При необхідності, шляхом перевизначення покажчика стека, область стека може бути розташована в будь-якому місці внутрішнього ОЗП даних мікроконтролера.

Регістр-покажчик даних (англ. Data Pointer – DPTR). Складається зі старшого байта (DPH) та молодшого байта (DPL). Містить 16-бітову адресу при зверненні до зовнішньої пам’яті. Може використовуватися як 16-бітовий регістр або як два незалежних 8-бітових регістри.

Порт 0 – Порт 3 (англ. Port P0, Port P1, Port P2, Port P3). Виконують функцію 32-х ліній введення/виведення, згруповані в чотири 8бітові порти.

Буфер послідовного порту (англ. Serial Buffer  SBUF). Являє собою два окремих регістри: буфер передавача та буфер приймача. Коли дані записуються в SBUF, вони надходять у буфер передавача, причому запис байта в SBUF автоматично ініціює його передачу через послідовний порт. Коли дані зчитуються з SBUF, вони вибираються з буфера приймача.

Регістри таймерів (англ. Timer - T). Регістрові пари (TH0, TL0) та (TH1, TL1) утворюють 16-бітові регістри-лічильники відповідно таймера/лічильника0 і таймера/лічильника1.

Регістри керування. Регістри спеціальних функцій IP, IЕ, TMOD, TCON, SCON і PCON містять біти керування та біти стану системи переривань, таймерів/лічильників, послідовного порту, схеми керування споживанням енергії від джерела живлення:

  •  регістр пріоритетів переривань РП (англ. Interrupt Pointer  IP);
  •  регістр дозволу переривань (англ. Interrupt Enable  IE);
  •  регістр режимів таймерів/лічильників (англ. Timer-Counter Mode  TMOD);
  •  регістр керування таймерами/лічильниками (англ. Timer-Counter Control  TCON);
  •  регістр керування послідовним портом (англ. Serial Control  SCON);
  •  регістр керування енергоспоживанням (англ. Power Control  PCON).


КОНТРОЛЬНІ ЗАПИТАННЯ

  1.  Назвіть послідовність створення керуючої програми для МК
  2.  Визначте призначення мови асемблера
  3.  Яким є призначення резидентної пам’яті даних? Як адресується РПД?
  4.  Перелічіть регістри спеціальних функцій. Які з них допускають пряму адресацію?
  5.  Призначення та формат регістру стану програми

ЛІТЕРАТУРА

САМОСТІЙНА РОБОТА СТУДЕНТІВ

  1.  ОСОБЛИВОСТІ МОВИ АСЕМБЛЕРА ПРИ НАПИСАННІ КЕРУЮЧИХ ПРОГРАМ ДЛЯ МІКРОКОНТРОЛЕРІВ РОДИНИ МК51 (MCS51)
    1.  Структура команди

Кожна команда представляє собою рядок такої конструкції:

[МІТКА:] мнемокод операції операнд(и) [; коментарі]

[] - Поле може бути відсутнім.

МІТКА - символічне ім'я комірки пам'яті, починаючи з якої розміщується в пам'яті дана команда.

Як операнди можуть використовуватися числа (адреси і дані), зарезервовані і певні символічні імена.

Для вказівки системи числення, в якій задається число, використовують буквені індекси після самого числа: B - двійкова, Q - вісімкова, D або нічого - десяткова, H – шістнадцяткова.

КОМЕНТАРІ - будь-які символи.

  1.  Поняття про асемблер (компілятор)

Асемблер - це програмний засіб, призначений для перетворення вихідного тексту програми, що містить мнемонічні імена команд та операндів, в послідовність двійкових кодів, які представляють собою виконувані команди для процесора.

Таким чином, вхідна інформація для асемблера представляється у вигляді текстового файлу, а початкова інформація генерується у вигляді так званого файлу об'єктних кодів (об'єктного файлу). Крім цього, асемблер виконує перевірку коректного написання команд. Його називають компілятором (транслятором) з мови асемблер.

У результаті роботи асемблера є можливість крім об'єктного файлу отримати також файл лістингу, які містить текстову інформацію про розміщення кодів команд і даних за конкретними адресами пам'яті мікроконтролера або мікропроцесорної системи.

Програма на мові асемблера складається з логічних сегментів - блоків з елементів одного типу (команди, дані). Для МК51 ці логічні сегменти безпосередньо відповідають фізичним областям пам'яті (РПП, ЗПП, РПД, ЗПД, бітова область).

Для вказівки адрес команд і даних або значень даних зручно використовувати символічні імена (далі - просто імена), які відповідають фізичному або математичному змісту задачі. Використання імен робить програму більш зрозумілою для програміста і його колег, полегшує процес модифікації програми і її налагодження. Ім'я може починатися з літери та містити не більше 32 символів.

Для сегментної побудови програми та визначення символічних імен адрес і значень даних використовують директиви асемблера. Директиви асемблера не є виконуваними командами, а являють собою інструкції для компілятора з розміщення команд і даних у пам'яті МК або МПС.

Структура програми: програма на мові асемблер містить такі блоки:

- декларативна частина - опис символічних імен даних і адрес, які використовують у програмі, а також директиви виділення пам'яті для змінних і вказівки значень констант (за допомогою директив асемблера);

- блок ініціалізації - настроювання портів і блоків периферійних функцій на необхідні режими роботи, ініціалізація стека (за допомогою команд);

- блок реалізації алгоритмів і функцій керування (за допомогою команд).

  1.  Директиви визначення символічних імен

Директива EQU - будь-якому імені ставиться у відповідність операнд.

Формат директиви: <ім'я> EQU <вираз>

Наприклад:

z1 equ 10;

z2 equ z1+4;

z3 equ z1+z2+5.

Імена, визначені директивою EQU, можна використовувати як адресу коду, адресу даних (внутрішніх або зовнішніх) або значення даних. Наприклад:

MOV A, # z1; Завантаження числа 10 в акумулятор;

MOV A, z1; Пересилання в акумулятор з осередку з адресою 0AH.

Оператори, допустимі для використання у виразах в директивах асемблера, описані далі.

Директива DATA - задає ім'я для адреси даних в РПД.

Формат директиви: <ім'я> DATA <адресний вираз>.

Директива XDATA - задає ім'я для адреси зовнішніх даних (ЗПД).

Формат директиви: <ім'я> XDATA <адресний вираз>.

Директива BIT - задає ім'я для адреси біта з області внутрішнього ОЗП з бітовою адресацією.

Формат директиви: <ім'я> BIT <адреса біта>.

Наприклад:

control DATA 2AH;

f1 bit control.3; Адреса у вигляді бітового селектора;

f2 bit f1 4; Адресний вираз;

f3 bit 60H; Абсолютна адреса.

Приклади зручного використання символічних імен:

counter DATA 20H flag BIT P1.7;

. . . on BIT 30H;

MOV counter, 10. . .;

m1: <дії в циклі> SETB on;

. . . wait: JNB flag, wait;

DJNZ counter, m1 CLR on.

  1.  Лічильник адрес (не плутати з лічильником команд (PC))

У процесі компіляції асемблер з кожним сегментом пов'язує свою внутрішню змінну, яка зветься лічильником адрес. У цій змінній підраховується, скільки байтів відведено в пам'яті під кожну команду або число і, відповідно, за якою адресою буде розміщена наступна команда або число. Таким чином, лічильник адрес «стежить» за розміщенням у пам'яті кодів команд і даних.

Позначка команди - це, по суті, символічне ім'я адреси комірки пам'яті, починаючи з якою дана команда розміщена в пам'яті.

Мітки команд зв'язуються з адресами автоматично в процесі компіляції, і спеціальних директив для цього не існує.

  1.  Директиви управління сегментами програми

Поява в тексті програми цих директив означає, що розміщені далі команди або дані відносяться до сегмента (типу) пам'яті, зазначеної директивою:

CSEG - початок сегмента кодів (пам'ять програм);

DSEG - початок сегмента даних в ОЗП (РПД);

XSEG - початок сегмента зовнішніх даних (ЗПД).

  1.  Керування значенням лічильника адреси

При першій появі в тексті програми будь-якої з директив керування сегментами асемблер створює новий лічильник адрес для цього сегмента і встановлює його в нуль. При повторному відкритті сегмента триває рахунок від попереднього значення.

Існує директива ORG, яка дозволяє програмісту встановлювати потрібні значення лічильника адреси для поточного активного сегмента і таким чином розміщувати коди в пам'яті за потрібними адресами.

Формат директиви: ORG <адресний вираз>.

Директиви ініціалізації пам'яті DB, DW заповнюють байт або слово (2 байти) вказаним значенням. Використовують для розміщення значень констант у сегменті кодів (тобто в пам'яті програм):

[Ім'я:] DB <значення> [ім'я:] DW <значення>

Директива резервування (виділення) пам'яті DS для змінної в сегменті зовнішніх або внутрішніх даних (ЗПД або ОЗП (РПД)):

[Ім'я:] DS <кількість байтів>

END - директива визначення кінця програмного модуля.

  1.  Оператори періоду трансляції

Для зручності запису команд і директив у мові асемблер допускається задавати числові значення та адреси пам'яті у вигляді виразів, які обчислюються. Значення такого виразу буде визначено компілятором ще під час трансляції, а в код команди буде підставлятися тільки результат цих дій. Припустимими операціями є:, -, *, /, (), AND, OR, XOR, NOT, LOW - виділення молодшого байта, HIGH - виділення старшого байта з двухбайтового виразу.

Наприклад:

1) X equ 10; число X = 10

Y equ X 2; число Y = 12

Z equ (X Y) * 4; число Z = 88

2) DSEG

org 70H

V1: ds 4; Виділення пам'яті для чотирьохбайтової змінної

MOV A, V1 1; Читання в ACC іншого байта змінної V1

3) X equ 3704; Оголошення двухбайтового числа

MOV R0, # LOW (X); Запис молодшого байта X в регістр R0

MOV R1, # HIGH (X); Запис старшого байта X в регістр R1

PAGE   \* MERGEFORMAT 18


 

А также другие работы, которые могут Вас заинтересовать

42818. установочное приспособление для растачивания отверстия детали «Кронштейн» 1.14 MB
  Изучение закономерности влияния приспособления на точность и производительность выполняемых операций позволяет проектировать приспособления интенсифицирующее производство и повышающее его точность. Проводимая работа по унификации и стандартизации элементов приспособления создала основу для автоматизированного проектирования приспособлений с использованием ЭВМ и автоматов для графического изображения что приводит к ускорению технологической подготовке производства. неподвижная опора с плоской формой рабочей...
42819. Технологический процесс производства детали Вилка 8А67-20275 2.02 MB
  Технологический контроль чертежа детали и анализ детали на технологичность Определяем тип производства по коэффициенту закрепления операций. Определяем величину производственной партии = 1. Определяем массу заготовки: = ; 2. Определяем объем заготовки: = ; 2.
42822. Кондуктор для сверления отверстия в детали Вал 1.2 MB
  Изучение закономерности влияния приспособления на точность и производительность выполняемых операций позволяет проектировать приспособления интенсифицирующее производство и повышающее его точность. Проводимая работа по унификации и стандартизации элементов приспособления создала основу для автоматизированного проектирования приспособлений с использованием ЭВМ и автоматов для графического изображения что приводит к ускорению технологической подготовке производства.2 Разработка принципиальной схемы приспособления Кондуктор предназначен...
42826. Отопление жилого дома 141.94 KB
  Выбор системы отопления.28 Тепловой расчет отопительных приборов32 Гидравлический расчет системы водяного отопления38 Список литературы. Система отопления: водяная вертикальная однотрубная Вентиляция: естественная Присоединение системы водяного отопления к наружным теплопроводам: со смешением воды с помощью водоструйного элеватора. Параметры теплоносителя Т1Т2: 13070 С Располагаемая разность давлений на вводе ΔP кПа: 120 Тип отопительных приборов: РСГ2 Температура...