- •Лабораторна робота № 1. Дослідження напівпровідникового діода.
- •Основні теоретичні відомості
- •Методичні рекомендації
- •Порядок виконання роботи
- •Питання і завдання для повторення:
- •Лабораторна робота № 2. Дослідження напівпровідникового стабілітрона.
- •Основні теоретичні відомості
- •Порядок виконання роботи
- •Питання і завдання для повторення:
- •Лабораторна робота № 3. Дослідження біполярного транзистора.
- •Основні теоретичні відомості
- •Порядок виконання роботи
- •Дослідження польового транзистора з р-n переходом.
- •Основні теоретичні відомості
- •Підготовка до виконання лабораторної роботи
- •Порядок виконання роботи
- •Вимоги до звіту з лабораторної роботи
- •Питання і завдання для повторення:
- •Список рекомендованої літератури
- •Лабораторна робота № 5. Дослідження польового мдн транзистора.
- •Основні теоретичні відомості
- •Порядок виконання роботи
- •Питання і завдання для повторення:
- •Лабораторна робота № 6. Дослідження комбінаційних схем. Базові логічні елементи і і або.
- •Основні теоретичні відомості
- •Виконання роботи
- •Питання і завдання для повторення:
- •Лабораторна робота № 7. Дослідження суматорів - полусуматор і повний суматор.
- •Основні теоретичні відомості
- •Порядок виконання роботи
- •Питання і завдання для повторення:
- •Лабораторна робота № 8. Дослідження rs тригера. Тригери асинхронні і з синхронізуючим входом.
- •Основні теоретичні відомості
- •Порядок виконання роботи
- •Мал. 8.5. Схема для дослідження синхронного rs-тригера
- •Питання і завдання для повторення:
- •Лабораторна робота № 9. Дослідження лічильників на jk та d тригерах.
- •Основні теоретичні відомості
- •Порядок виконання роботи
- •Питання і завдання для повторення:
- •Лабораторна робота № 10. Дослідження мультиплексорів.
- •Основні теоретичні відомості
- •Порядок виконання роботи
- •Питання і завдання для повторення:
- •Лабораторна робота № 11. Дослідження дешифраторів, шифраторів.
- •Основні теоретичні відомості
- •Порядок виконання роботи
- •Питання і завдання для повторення:
- •Лабораторна робота № 12. Дослідження послідовного та паралельного регістрів.
- •Основні теоретичні відомості
- •12.1 Паралельний регістр
- •12.2 Послідовний регістр
- •Порядок виконання роботи
- •12.1. Дослідження паралельного регістра.
- •12.2. Дослідження послідовного регістра
- •Питання і завдання для повторення:
- •Лабораторна робота № 13 Аналогo-цифрові та цифро-аналогові перетворювачі цап сходового типу.
- •Основні теоретичні відомості
- •Порядок виконання роботи
- •Питання і завдання для повторення:
- •Лабораторна робота № 14 Аналогo-цифрові та цифро-аналогові перетворювачі. Ацп прямого перетворення.
- •Основні теоретичні відомості
- •Порядок виконання роботи
- •Питання і завдання для повторення:
- •Лабораторна робота № 15 Система команд микроконтроллера pic16fxх
- •Порядок виконання роботи
- •Індивідуальні завдання
- •5) Зведену таблицю результатів:
- •Лабораторна робота № 16 Програмування портів вводу-виводу мікроконтролера pic.
- •Основні теоретичні відомості
- •Текст файла Project3.Asm
- •Індивідуальні завдання
- •Питання і завдання для повторення:
- •Завдання для самостійної роботи студентів Додаток а. Дослідження лічильників на jk та d тригерах .
- •6. Дослідження синхронного реверсивного лічильника
- •Додаток б. Дослідження комбінаційних схем. Базові логічні елементи.
- •Додаток в. Дослідження тригерів
- •Додаток г. Дослідження регістрів
- •Рекомендована література
Питання і завдання для повторення:
1. Що таке АЦП прямого перетворення, в яких пристроях його доцільно застосовувати?
Лабораторна робота № 15 Система команд микроконтроллера pic16fxх
Мета роботи: вивчення системи команд мікроконтролера (МК) PIC16F7Х; отримання навичок програмування МК на мові Ассемблер.
Програмне забезпечення: програмне забезпечення комп'ютерного моделювання електронних схем (програма Proteus (ISIS), MPLAB IDE).
Короткі теоретичні відомості і методичні вказівки
PIC16CXX - це 8-розрядні МК з RISCархітектурой, вироблені фірмою Microchiр Technology. Це сімейство МК відрізняється низькою ціною, низьким енергоспоживанням і високою швидкістю.
Мікроконтролери мають вбудовані ЕППЗУ програми, ОЗУ даних і випускаються в 18 і 28 вивідних корпусах.
PIC OTP - це одноразово програмовані користувачем контролери, призначені для повністю протестованих і закінчених виробів, в яких не буде відбуватися подальших змін коду. Ці контролери випускаються в дешевих пластикових корпусах із заздалегідь заданими типом зовнішнього генератора - кварцовим або RC. Для налагодження програм і макетування випускається варіант контролерів з ультрафіолетовим стиранням.
Ці контролери допускають велике число циклів запису / стирання і мають дуже малий час стирання (звичайно 1-2 хв). Проте ціна таких контролерів істотно вище, ніж однократно програмувальних, тому їх невигідно встановлювати в серійну продукції.
Для виробів, програма яких може мінятися або містить будь-змінні частини, таблиці, параметри калібрування, ключі і т. д., випускається електрично стирається і перепрограмувальний контролер PIC16F84. Він також містить електрично перепрограммируемое ПЗУ даних.
Основним призначенням МК PIC16/17, як випливає з абревіатури PIC (Periрheral Interface Controller), є виконання інтерфейсних функцій. Цим пояснюються особливості їх архітектури:
RISC-система команд, що характеризується малим набором одноадресних інструкцій (33, 35 або 55), кожна з яких має довжину в одне слово (12, 14 або 16 біт) і більшість виконується за один машинний цикл. В системі команд відсутні складні арифметичні команди (множення, ділення), гранично скорочений набір умовних переходів;
Висока швидкість виконання команд: при тактовій частоті 20 МГц час машинного циклу складає 200 нс (швидкодія дорівнює 5 млн операцій / с);
Наявність потужних драйверів (до 24 мА) на лініях портів введення / виводу;
Низька споживана потужність;
Орієнтація на цінову нішу гранично низької вартості, яка визначає використання дешевих корпусів з малою кількістю виводів (8, 14, 18, 28), відмова від зовнішніх шин адреси і даних (крім PIC17C4X), використання спрощеного механізму переривань і апаратного (програмно недоступного) стека.
Аналіз архітектури МК PIC з точки зору їх програмування і налагодження систем дозволяє зробити наступні висновки.
RISC-система команд забезпечує високу швидкість виконання інструкцій, але викликає труднощі і зниження продуктивності при програмуванні нетривіальних алгоритмів. Оскільки всі інструкції в системі команд є одноадресних, завантаження константи в будь-який з регістрів вимагає двох інструкцій. Спочатку потрібно завантажити константу в робочий регістр W, а потім переслати його вміст в потрібну комірку пам'яті даних:
movw 12h
movwf REG
Аналогічно, всі бінарні арифметико-логічні операції доводиться виконувати із залученням робочого регістра W.
Висока швидкодія в значній мірі досягається за рахунок використання конвеєра команд.
Мікроконтролери сімейства PIC мають дуже ефективну систему команд, що складається всього з 35 інструкцій. Всі інструкції виконуються за один цикл, за винятком умовних переходів і команд, що змінюють програмний лічильник, які виконуються за 2 циклу. Один цикл виконання інструкції складається з 4 періодів тактової частоти. Таким чином, при частоті 4 МГц час виконання інструкції складає 1 мкс. Кожна інструкція складається з 14 біт, які поділяються на 2 поля: код операції та операнд (можлива маніпуляція з регістрами, осередками пам'яті і безпосередніми даними).
Висока швидкість виконання команд в PIC досягається за рахунок використання двохшинної гарвардської архітектури замість традиційної одношинної фоннеймановской. Гарвардська архітектура грунтується на наборі регістрів з розділеними шинами і адресним простором для команд і для даних. Hабор регістрів означає, що всі програмні об'єкти, такі як порти вводу / виводу, осередки пам'яті і таймер, являють собою фізично реалізовані апаратні регістри.
Пам'ять даних (ОЗУ) для PIC16CXX має розрядність 8 біт, пам'ять програм (ЕППЗУ) має розрядність 12 біт для PIC16C5X і 14 біт для PIC16C7X. Використання гарвардської архітектури дозволяє досягти високої швидкості виконання бітових, байтових і реєстрових операцій. Крім того, Гарвадської архітектура допускає конвеєрне виконання інструкцій, коли одночасно виконується поточна інструкція і зчитується наступна.
У традиційній же фоннеймановской архітектурі команди і дані передаються послідовно в часі через одну поділювану або мультиплексируемость шину, тим самим знижуючи швидкодію МК.
Набір команд PIC
Перейдемо до опису всього набору команд МК сімейства PIC. Попередньо Зробити деякі зауваження.
По-перше, синтаксис написання команди передбачає зазначення двох полів: мнемонічне позначення коду операції та операнд, для якого використовується узагальнене позначення у вигляді символу f. Це означає, що залежно від способу адресації в поле операнда може перебувати:
адреса операнда (пряма адресація); дуже часто замість адреси вказується символічне ім'я операнда, однак у цьому випадку за допомогою псевдокоманди equ цьому імені ставиться у відповідність адреса вільної комірки пам'яті, наприклад: Cnt equ 20h;
ім'я регістра INDF (непряма адресація); в цьому випадку адреса операнда знаходиться в спеціальному регістрі непрямої адресації FSR;
операнд (безпосередня адресація).
По-друге, в командах, в яких передбачена операція з двома операндами, перший операнд знаходиться в комірці пам'яті, зазначеної за допомогою символу f, другий операнд завжди міститься в робочому регістрі W.
По-третє, в ряді команд крім результату формуються ознаки результату, які записуються в спеціальний регістр
STATUS. Ознака С (CARRY) встановлюється в 1 при виникненні переносу зі старшого (знакового) розряду при додаванні і при відсутності позички при відніманні. Ознака DC (DIGIT CARRY) встановлюється в 1 при виникненні перенесення з молодшої тетради в старшу при додаванні. Ознака Z (ZERO) встановлюється в 1, якщо результат операції дорівнює 0.
Нарешті, в ряді команд після символу f через кому знаходиться символ d, званий бітом напряму. Він вказує місце, куди буде поміщений результат операції, виконаної в команді: якщо d = 0 (або W), результат записується в робочий регістр W (без зміни вмісту комірки пам'яті), якщо d = 1 (або f), результат записується в комірку пам'яті.
NOP
Не виконується ніяких дій. Ця інструкція зазвичай використовується в циклах тимчасової затримки або для точного налаштування часу виконання певної ділянки програми.
CLRW
Ця команда очищує робочий регістр W.
CLRF f
CLRF робить для будь-якого регістра те саме, що CLRW робить для робочого регістра W.
SUBWF f, d
Відняти вміст робочого регістра W з вмісту регістра f. Ця команда встановлює ознаки CARRY, DIGIT CARRY і ZERO в регістрі STATUS. Символ d (біт напрямку) після коми вказує адресу, куди буде поміщений результат виконання команди. Якщо d = 0, то результат поміщається в робочий регістр W, а якщо d = 1, то результат записується у вказаний в команді регістр f. Допускається замість значень 0 або 1 символу d вказати w і f відповідно.
ADDWF f, d
Скласти вміст робочого регістра W і регістра f. Ця команда встановлює ознаки CARRY, DIGIT CARRY і ZERO в регістрі STATUS. Символ d після коми означає адресу, куди буде поміщений результат виконання команди (див. попередню команду) .
SUBLW k
ADDLW k
Ці дві команди працюють абсолютно аналогічно вищеописаним, за тим винятком, що операція проводиться між робочим регістром W і байтовой константою, заданої в команді. Команда SUBLW віднімає вміст робочого регістра W з константи k, а команда ADDLW додає вміст робочого регістра W до константи k. Ці команди також встановлюють ознаки CARRY, DIGIT CARRY і ZERO. Результат виконання команди поміщається в робочий регістр W.
DECF f, d
INCF f, d
Команда DECF зменшує вміст заданого регістру на 1, а INCF збільшує вміст заданого регістру на 1. Результат може бути поміщений назад в заданий регістр (при d = 1) або в робочий регістр W (при d = 0). В результаті виконання цих команд може встановитися ознака ZERO в регістрі STATUS.
IORWF f, d
ANDWF f, d
XORWF f, d
Ці три команди виконують логічні дії АБО, І та ВИКЛЮЧАЮЧЕ АБО. Операція логічного складання АБО найчастіше використовується для установки окремих бітів в регістрах; операція логічного множення І використовується для скидання бітів. Коли над однаковими бітами виконується операція ВИКЛЮЧАЮЧЕ АБО, результат дорівнює 0. Тому операція ВИКЛЮЧАЮЧЕ АБО часто використовується для порівняння вмісту операндів.
IORLW k
ANDLW k
XORLW k
Ці три команди виконують ті ж дії, що і їх вищеописані аналоги, за тим винятком, що операція проводиться між робочим регістром W і константою, заданої в команді. Результат виконання команди поміщається в робочий регістр W.
MOVF f, d
Ця команда в основному використовується для пересилання вмісту регістра в робочий регістр W (d = 0). Якщо ж встановити d = 1, то ця команда завантажить регістр сам в себе, але при цьому біт ZERO в регістрі STATUS встановиться відповідно до вмістом регістра.
COMF f, d
Ця команда інвертує вміст заданого регістру. При d = 0 результат заноситься в робочий регістр W (вміст заданого регістру зберігається колишнім), а при d = 1 результат заміщає колишнє вміст заданого регістру.
DECFSZ f, d
INCFSZ f, d
При d = 1 команда DECFSZ зменшує на одиницю, а INCFZ збільшує на одиницю вміст заданого регістру і пропускає наступну команду, якщо вміст регістра стало рівним нулю.
При d = 0 результат записується в регістр W і наступна команда пропускається, якщо вміст робочого регістра W стало рівним нулю. Ці команди використовуються для формування тимчасових затримок, умов виходу з циклу і т. д.
SWAPF f, d
Ця команда змінює місцями напівбайт в заданому регістрі. Як і для інших команд, при d = 0 результат записується в робочий регістр W, а при d = 1 заноситься в регістр, заміщаючи колишнє його вміст.
RRF
f, d C
F
C
RLF
f, d C
F
C
В Асемблері PIC є дві команди зсуву - зрушення вправо через ознака C будь-якого регістра f (RRF) і зрушення вліво через ознака C будь-якого регістра f (RLF). Як і для інших команд, при d = 0 результат зсуву записується в регістр W, а при d = 1 залишається в регістрі f.
У всіх випадках біт, що висувається з 8-бітного регістру f, записується як ознака C в регістр STATUS і формує тим самим значення ознаки C (CARRY), а на місце звільняється при зсуві розряду регістра f записується значення ознаки C з регістра STATUS, яке було сформовано до моменту виконання даної команди.
При зсуві вліво (RLF) значення ознаки C записується в молодший біт регістра, а при зсуві вправо (RRF) - в старший біт регістра.
Інструкції зсуву використовуються для виконання операцій множення і ділення, для послідовної передачі даних і для інших цілей.
BCF f, b
BSF f, b
Команди очищення біта BCF і установки біта BSF використовуються для роботи з окремими бітами в регістрах. Параметр b означає номер біта, з яким проводиться операція, і може приймати значення від 0 до 7.
BTFSC f, b
BTFSS f, b
Команди умовних переходів BTFSC і BTFSS перевіряють стан заданого біта в будь-якому регістрі і залежно від результату пропускають чи ні наступну команду. Команда BTFSC пропускає команду, якщо заданий біт скинутий, а команда BTFSS - якщо
встановлений.
CALL k
RETURN
Ці дві команди призначені для роботи з підпрограмами.
Команда CALL використовується для переходу на підпрограму за адресою, що задається в команді, а команда RETURN - для повернення з підпрограми. Обидві команди виконуються за 2 циклу. Адреса команди, наступної після команди CALL, запам'ятовується в стеку. Стек недоступний для звернення і використовується тільки при викликах підпрограм і поверненнях з них. Глибина стека, тобто число спеціальних регістрів, що входять до його складу, дорівнює 8. Тому з основної програми можна зробити не більше 8 вкладених викликів підпрограм. Останньою командою підпрограми завжди є команда RETURN, при виконанні якої адресу з стека записується в РС, і таким чином після повернення з підпрограми виконання основної програми продовжується з наступного після CALL команди. Відзначимо особливо, що оскільки в більшості випадків регістр W і регістр STATUS можуть
бути використані в підпрограмі, їх вміст на момент виклику підпрограми буде втрачено. Тому при виклику підпрограми їх вміст потрібно зберегти у вільних ячейках пам'яті, а перед командою RETURN помістити команди, що відновлюють їх вміст на момент виклику підпрограми.
RETLW k
RETFIE
Існують ще дві команди, призначені для повернення з підпрограм. Команда RETLW записує при поверненні в робочий регістр W константу, задану в цій команді, а команда RETFIE використовується при поверненні з переривання.
Спеціальні команди
Залишилося згадати про двох спеціальних командах - CLRWDT і SLEEP.
Команда CLRWDT призначена для програмного скидання сторожового таймера (WDT). Ця команда має бути присутня в таких ділянках програми, щоб час виконання програми між двома сусідніми командами CLRWDT не перевищувало періоду спрацьовування сторожового таймера, тобто інтервалу часу, протягом якого WDT проходить всі стани і повертається в початковий стан (апаратний скидання). Програмне скидання не впливає на роботу системи, виникнення апаратного скидання вказує на наявність збою в роботі системи, викликаного зацикленням програми. Обробка переривання, викликаного апаратним скиданням, передбачає дії, спрямовані на усунення наслідків від збою.
Команда SLEEP призначена для перекладу процесора в режим зниженого енергоспоживання. Після виконання цієї команди тактовий генератор процесора вимикається, і назад в робочий режим процесор можна перевести або по входу скидання, або по спрацьовуванню сторожового таймера, або по перериванню.
Система команд наведена в табл. П15.1. Більшість команд виконується за 1 цикл (4 такту, 200 нс при F = 20 МГц). Команди байтовой обробки включають звичайний набір арифметичних, логічних і зсувних операцій. При наявності двох операндів один з них завжди знаходиться в акумуляторі W.
Для організації циклів і умовних переходів в програмі використовуються команди пропуску DECFSZ, INCFSZ, BTFSC, BTFSS, які в разі виконання заданої умови пропускають наступну команду - збільшують лічильник команд PC відразу на 2.
При переходах по команді GOTO 11бітовий адресу переходу з коду команди завантажується в розряди PC.10-0, а два старших розряду беруться з 5бітового регістра PCLATH (PC.12-11 = PCLATH.4-3), т. е. без переустановки PCLATH перехід можливий в межах 2 Кслов.
Аналогічно формується адреса переходу командою CALL, проте вона попередньо рятує в стеку вміст PC. Апаратний стек глибиною 8 слів користувачеві недоступний, завантаження PC з стека здійснюється командами RETURN, RETFIE, RETLW, причому остання команда перед поверненням завантажує в W константу і використовується для організації таблиць даних в пам'яті програм. Формування ознак зазначено в останній графі табл. П15.1, самі ознаки фіксуються в молодших розрядах регістра STATUS (табл. П15.2).
При запису програм на Асемблері ім'я команди можна вказувати малими або великими літерами, в імені змінних ці літери мають різні значення. Цілі числа можна задавати в двійковому, десятковому чи шістнадцятковому форматі в слідую
щей формі:
MOVLW b'10100110 '; двійкове чісло11
MOVLW d'166 '; десяткове число
MOVLFSRW 0A6; шестнадцатірічное число
Далі в основному використовується шестнадцатірічное форма представлення чисел.
У звичайному тексті і поле коментаря ми будемо використовувати запис типу A6, однак на Асемблері слід записувати 0A6, так як шестнадцатірічное число повинно починатися з цифри.
Для більшості команд байтовой обробки можливі 2 варіанти, наприклад:
ADDWF Adr1, w; W = W + (Adr1)
ADDWF Adr1, f; (Adr1) = W + (Adr1)
У першому випадку біт d в коді команди дорівнює 0 і сума залишається в акумуляторі W, у другому випадку d = 1 і сума залишається в осередку з адресою Adr1.
Адреса Adr1 може бути визначений на початку програми як 8-розрядний, однак в код команди транслятор поміщає лише 7 молодших розрядів, а старший розряд адреси вибирається з 5го біта регістра STATUS (це біт реєстрового банку RP0). Якщо Adr1 = 20, то при RP0 = 0 повна адреса буде 20, а при RP0 = 1 повний адресу з
ставить A0.
Необхідність перемикання реєстрового банку RP0 створює певні незручності при складанні програм. Їх можна уникнути при використанні непрямої адресації, якщо попередньо завантажити 8-розрядний адресу в регістр непрямої адресації FSR:
MOVLW Adr1; W = Adr1
MOVWF FSR; (FSR) = W
ADDWF INDF, f; ((FSR)) = ((FSR)) + W
Нульовий адресу INDF в коді команди ініціює вибірку повного 8-розрядної адреси з регістра FSR, тобто остання команда завжди працює з повною адресою 20. Непряму адресацію зазвичай використовують при необхідності модифікації адреси в програмі, для чого достатньо змінити вміст FSR.
При виконанні роботи необхідно для заданого варіанта програми вказати в полі коментаря динаміку зміни вмісту акумулятора W і осередків 20, 21, 22, 23. Як приклад розглянемо наступний варіант програми:
Title “Lab1.asm”
;
list p=16c74 ; processor type
errorlevel 1, (305)12
;
#include “p16c74.inc”
;
Buf1 equ 20
Cnt equ 23
RxBufequ 24
org 0 ; стартовый переход
movlw 0
movwf PCLATH
goto Start
org 100 ; программа пользователя
Start ; начальная установка
call ConstInit
Priem caLL Receiv
movlw 2
xorwf PORTA,f
movlw 3
movwf Cnt
movlw Buf1
movwf FSR
bsf STATUS,C
movf RxBuf,w
; if (RfBuf)=21
; W 20 W 20 21 W 20 21 22 23
Beg1 movwf INDF ; 21 21 4 3 67 43 86 67 CF 86
rlf INDF,w ; 43 21 86 67 43 0C 67 CF 86
addwf INDF,f ; 43 64 86 67 C9 0C 67 CF 92
iorwf INDF,f ; 43 67 86 67 CF 0C 67 CF 9E
incf FSR,f
decfsz Cnt,f
End1 goto Beg1
; W 20 21 22 23
movwf INDF ; 0C 67 CF 9E 0C
incf FSR,f
movf STATUS,w
movwf INDF
movlw 513
movwf Cnt
movlw Buf1
movwf FSR
Tra movf INDF,w
call Transm
incf FSR,f
decfsz Cnt,f
goto Tra
goto Priem
ConstInit
bsf STATUS,RP0
bcf TRISA,1 ; диод
movlw b’10000011'
movwf OPTION_REG
movlw d’129'
movwf SPBRG
movlw b’00100100'
movwf TXSTA
bcf STATUS,RP0
clrf INTCON
clrf PORTC
movlw b’10010000'
movwf RCSTA
return
Receiv ; прием байта в RxBuf
RecA btfss PIR1,RCIF ; check for received data
goto RecA
RecB movf RCREG,w
movwf RxBuf
return
Transm ; выдача байта из W
movwf TXREG ; transmit byte to PC
bcf PIR1,TXIF
tr3 btfss PIR1,TXIF
goto tr3
return
end
На початку програми визначаються значення використовуваних змінних, тобто задається розподіл оперативної пам'яті. Оператор ORG фіксує початкова адреса розміщення кодів програми в постійній пам'яті.
Як згадувалося раніше, завантажувальний модуль передає управління на мітку Start і підпрограма ConstInit виконує настройку асинхронного каналу на швидкість 9600 бод. На мітці Priem програма очікує приходу байта з ПЕОМ. Прийнятий підпрограмою Receiv байт записується в комірку RxBuf, перемикається світлодіод командою XORWF PORTA, f і початкова адреса Buf1 завантажується в Регистр FSR. Встановлюється біт переносу C в регістрі STATUS, і в лічильник циклу Cnt завантажується число 3. Ця частина програми ідентічна для всіх варіантів.
З мітки Beg1 починається конкретний варіант програми. У акумулятор W завантажується початкове значення, і цикл з кількох команд повторюється 3 рази. Вміст акумулятора W і осередків ОЗУ при кожному проході циклу слід вказати в полі коментаря. У циклі виконуються зрушення, арифметичні і логічні команди. Слід враховувати, що біт перенесення формується арифметичними командами і включається в кільце зсуву при виконанні команд RLF, RRF. Після виходу з циклу вміст W і регістра STATUS записується в осередку 23, 24 і в поле коментаря відзначаються заключні значення всіх змінних. Далі для контролю ці значення в циклі Tra передаються в ПЕОМ по послідовному каналу і відображаються на екрані дисплея. Управління повертається на мітку Priem.
На закінчення зупинимося трохи докладніше на використовуваних підпрограмах. Для завантаження регістрів SPBRG і TXSTA в підпрограмі Init спочатку встановлюється перший регістровий банк. У регістрі TXSTA задається 8бітовий формат, дозвіл видачі, асинхронний режим і підвищена швидкість (табл. П15.2). При частоті кварцу 20 МГц і підвищеної швидкості завантаження десяткового числа d'129 'в регістр SPBRG забезпечує асинхронну передачу зі швидкістю 9600 бод. Потім встановлюється нульовий регістровий банк і в регістрі RCSTA задається дозвіл прийому та 8бітовий формат. Скидання регістра INTCON забороняє переривання.
Прийом байта підпрограмою Receiv починається з циклу очікування готовності на мітці RecA до установки прапора готовності RCIF в регістрі PIR1. Потім байт листується з буфера прийому RCREG в клітинку RxBuf. При видачі байта підпрограмою Transm він спочатку завантажується в буфер видачі TXREG, потім скидається прапор видачі TXIF і програма входить в цикл очікування Tr3 до установки прапора TXIF після закінчення видачі байта з буфера TXREG.
