Запрограмувати послідовний порт на «1» режим роботи. Встановити швидкість обміну 2400 біт/с. Частота резонатора генератора складає 12 МГц.
Без використання системи переривань скласти підпрограми реакцій на завершення передачі та прийому байта.
У цьому режимі роботи SM0= 1, SM1= 0. Константу завантаження регістра SCON приведено в табл.6.4.
Таблиця 6.4
№ біта | ||||||||
Ім’я біта | SM0 | SM1 | SM2 | REN | TB8 | RB8 | TI | RI |
Біт |
Для налаштування заданої швидкості обміну необхідно використати таймер/лічильник ТС1 та визначити режим роботи та відповідні константи завантаження лічильних регістрів. Згідно з формулою для розрахунку швидкості обміну для «1» режиму роботи UART визначають константу завантаження регістрів таймера/лічильника ТС1. При проведенні розрахунку використовують «2» режим роботи таймера/лічильника з автоматичним перезавантаженням та приймають значення біту подвоєння швидкості SMOD=0. Розрахункове значення константи завантаження регістрів складає 243.
|
|
У табл.6.5 приведено константу завантаження регістра TMOD, яка відповідає «2» режиму роботи таймера/лічильника ТС1.
Таблиця 6.5
№ біта | ||||||||
Ім’я біта | GATE1 | C/T1 | M1 | M0 | GATE0 | C/T0 | M1 | M0 |
Біт |
Текст програми має наступний вигляд.
;---------------------------------------------------------------
;--- Опис констант та змінних
INI_P3 equ 00000011b;константа ініціалізації порту РЗ
;дозвіл альтернативних функції TxD, RxD
INI_SCON equ 10000000b;SCON – UART у «1» режимі
INI_PCON equ 00000000b;константа ініціалізації PCON, SMOD=0
INI_TMOD equ 00100000b;TMOD – таймер TC1 у «2» режимі
INI_TC1 equ 243;ініціалізація TH1,TL1 – BR=2400 біт/с
;--- Програма
ORG 0H;адреса рестарта після пуску процесора
SJMP INIT;перехід на початок основної програми
ORG 20H;початкова адреса блоку ініціалізації
ІNІT:
MOV P3, #INI_P3;ініціалізація порту РЗ
MOV SCON, #INI_SCON;задання режиму роботи UART контролера
MOV PCON, #INI_PCON;задання режиму роботи UART контролера
MOV TMOD, #INI_TMOD;задання режиму роботи TC1
MOV TH1, #INI_TC1;завантаження регістрів таймера TC1
MOV TL1, TH1;завантаження регістрів таймера TC1
SETB TR1;включення таймера/лічильника TC1
SETB REN;включення приймача UART-контролера
;--- Головна програма
MAІN:
MAІN_RхD:
JNB RІ, MAІN_TхD;перевірка прапора завершення прийому
CALL UART_RхD;виклик підпрограми обробки прийому
MAІN_TхD:
JNB TI, MAІN;перевірка прапора завершення передачі
CALL UART_TXD;виклик підпрограми обробки передачі
SJMP MAІN;зациклення головної програми
;---Підпрограма обробки завершення прийому
UART_RхD:
CLR RІ;скидання прапора переривань приймача
RET;повернення з підпрограми
;---Підпрограма обробки завершення передачі
UART_TхD:
CLR TI;скидання прапора переривань передавача
|
|
RET;повернення з підпрограми
END;директива про закінчення програми
;---------------------------------------------------------------
7. ПРОГРАМУВАННЯ СИСТЕМИ ПЕРЕРИВАНЬ
Система переривань - одна з важливих частин мікроконтролера. Переривання припиняє нормальний хід програми для виконання пріоритетного завдання, яке визначається внутрішню або зовнішню подією.
Для кожної такої події розробляється окрема програма, яку називають підпрограмою обробки запиту на переривання (підпрограмою переривання).
При виникненні події, що викликає переривання, мікроконтролер припиняє виконання поточної програми, зберігає у стеку вміст лічильника команд, і переходить до виконання підпрограми обробки переривання. Після виконання підпрограми переривання здійснюється оновлення попередньо збереженого лічильника команд і мікроконтролер повертається до виконання перерваної програми.
Мікроконтролер АТ89С51 сімейства MCS-51 має систему переривань з п’ятьма джерелами запитів переривання. Кожне джерело має свій фіксований вектор переривання. Під вектором переривання, розуміється комірка пам'яті програм з фіксованою адресою, якій передається управління в разі приходу відповідного запиту переривання.
Адреси відповідних джерел переривань приведені в табл. 7.1
Таблиця 7.1
Джерела переривань | Адреси векторів переривань |
Зовнішній вхід | 0003H |
Таймер ТС0 | 000BH |
Зовнішній вхід | 0013H |
Таймер ТС1 | 001BH |
Послідовний порт | 0023H |
Для прийму зовнішніх запитів на переривання служать лінії та , які можуть бути запрограмовані на спрацювання як по фронту, так і по рівню, залежно від значення бітів IT0 и IT1 регістра TCON. Бітову структура регістру TCON приведено на рис.5.2.
Якщо значення біта IT0 (для виводу ) або IT1 (для виводу ) дорівнює 0, то запит на переривання виникає при нульовому рівні сигналу на даному вході (переривання по рівню). Якщо ж який-небудь з цих бітів дорівнює 1, то запит на переривання виникає при виявленні негативного перепаду рівня сигналу на цьому вході (переривання по фронту).
При виникненні запиту на переривання встановлюється прапор IE0 або IE1. Якщо переривання було викликане по фронту на зовнішньому виводі або ), то прапор запиту на переривання (IE0 або IE1) скидається апаратно при передачі управління обслуговуючій його підпрограмі обробки переривання.
Якщо запрограмоване переривання по рівню, то стан прапора запиту відповідає рівню сигналу на його зовнішньому виводі.
Для виявлення запиту необхідні рівні сигналів мають бути присутніми на вході на протязі, як мінімум, одного машинного циклу.
Прапор будь-якого переривання, крім того, може бути встановлений програмно для виклику відповідної підпрограми обробки.