Послідовний порт

Послідовний порт мікроконтроллерів MCS - 51 є дуплексним і забезпечує роботу в одному синхронному режимі(режим 0) і трьох асинхронних режимах(режими 1, 2, 3). Підтримується також послідовний обмін у багатопроцесорних системах.

При синхронному прийомі синхросигнал видається по лінії TxD, а дані приймаються або передаються по лінії RxD. При асинхронному обміні блок послідовного порту передає дані по лінії TxD, а приймає по лінії RxD. Прийом і передача можуть здійснюватися одночасно, оскільки регістр даних SBUF складається з двох частин. Щоб передати дані необхідно зробити запис в регістр SBUF, а для прийому інформації необхідно прочитати вміст регістра SBUF. Приймач буферизирован, тобто можливий прийом наступного байта, коли попередній ще знаходиться в регістрі SBUF. Проте, якщо підпрограма обслуговування не встигла прочитати байт даних з регістра SBUF до моменту завершення прийому наступного байта, то цей наступний прийнятий байт затре предыду.

Управляється послідовний порт за допомогою регістра SCON.

Ім'я біта Номер біта Функція
SM0 SCON.7 Біт 0 визначень режиму роботи послідовного порту.
SM1 SCON. 6 Біт 1 визначення режиму роботи послідовного порту.
SM2 SCON. 5 Дозвіл обміну у багатопроцесорних системах. У режимі 0 має бути скинутий. У режимі 1 при SM2=1 біт RI не встановлює¬ця, якщо прийнятий стоп-біт=0. У режимах 2 і 3 при SM2=1 біт RI не встановлюється, якщо прийнятий дев'ятий біт даних RB8=0.
REN SCON.4 Дозвіл прийому. При REN=1 прийом дозволений.
ТВ8 SCON.3 9-й біт даних, який передаватиметься в режимах 2 і 3. Значення встановлюється програмно на розсуд розробника.
RB8 SCON. 2 У режимі 0 не використовується. У режимі 1 при SM2=0 в нього заноситься прийнятий стоп-біт. У режимах 2 і 3 в нього заноситься 9-й прийнятий біт даних.
TI SCON.1 Прапор запиту переривання передавача. Має бути скинутий програмно.
RI SCON.O Прапор запиту переривання приймача. Має бути скинутий програмно.

 

Біти SM0 і SM1 таким чином визначають режими роботи послідовного порту :

 

SM0 SM1 Швидкість передачі Режим роботи
Fosc/12 Режим 0. Сдвиговый регістр.
змінна Режим 1. Асинхронний приймач, 8 біт
      даних в кадрі.
Fost/64 или Fost/32 Режим 2. Асинхронний приймач, 9 біт
      даних в кадрі.
змінна Режим 3. Асинхронний приймач, 9 біт
      даних в кадрі.

Окрім бітів регістра SCON послідовний порт управляється також битому SMOD регістра PCON. В основному регістр PCON управляє режимами енергоспоживання, призначення його бітів описане в розділі 2.11 "Мікроконтроллерів типу 8ХС52". Біт SMOD цього регістра управляє опцією подвоєння швидкості обміну. При SMOD = 1 швидкість обміну даними через послідовний порт в режимах 1, 2 і 3 подвоюється.

Синхронний обмін (режим 0). У цьому режимі по лінії TxD видається вісім синхроімпульсів, а по лінії RxD приймається або передається байт даних. Передача і прийом даних здійснюються починаючи з молодшого біта, зрушення відбувається в S6P2 кожного машинного циклу(мал. 2.12). Таким чином послідовний обмін здійснюється з фіксованою частотою Fosc/12. Це максимально можлива швидкість про¬міна через послідовний порт мікроконтроллера.

Передача інформації полягає в реалізації наступних дій :

· запис в регістр SCON байта управління, що очищає біти SM0, SMI, REN;

· запис банта даних в регістр SBUF.

Мал. 2.12. Робота послідовного порту в режимі 0.

Передача починається в наступному(після запису в регістр SBUF) машинному циклі з висунення біта DO на лінію RxD у фазі S6P2. У S3P1 наступного циклу на лінії TxD з'являється " Про" першого імпульсу синхронізації. Висунення бітів даних триває в кожному циклі до дев'ятого включно, коли на лінії RxD з'являється старший біт D7. На початку десятого циклу лінія RxD переводиться у високо рівневий стан і встановлюється прапор RI, що свідчить про закінчення передачі.

Прийом інформації ініціюється записом в регістр SCON байта управління, що очищає біти SMO, SMI, RI і що встановлює біт REN. У другому циклі після цієї операції запису у фазі S3P1 на лінії TxD з'являється " Про" першого імпульсу синхронізації, а на фазі S5P2 виконується введення молодшого біта даних DO з лінії RxD в сдвиговый регістр. Введення повторюється в подальших циклах і після восьми зрушень в регістр вводиться старший біт D7, встановлюється прапор TI. Після цього підпрограма обслуговування може прочитати байт даних з SBUF.

Асинхронний обмін(режими 1, 2, 3). При асинхронному обміні дані передаються по лінії TxD, а приймаються по лінії RxD.

У режимі 1 кадр даних складається з 10 біт(мал. 2.13) : старт-біт, вісім бітів даних, стоп-біт. При прийомі в розряд RB8 регістра SCON записується стоп-біт. Швидкість обміну визначається переповнюванням таймера 1.

У режимах 2 і 3 кадр даних складається з 11 біт(мал. 2.14) : старт-біт, вісім бітів даних, програмований біт, стоп-біт. При прийомі підпрограма обслуговування може прочитати дев'ятий біт з розряду RB8 регістра SCON. При передачі дев'ятий біт записується в ТВ8 регістра SCON. Користувач може використати дев'ятий біт на власний розсуд(часто це біт контролю).

Швидкість обміну в режимі 2 рівна 1/32(SMOD = 1) або 1/64(SMOD = 0) частоти синхросигналу. Швидкість передачі в режимі 3 визначається переповнюванням таймера 1.

Мал. 2.13. Робота послідовного порту в режимі 1

 

Передача інформації полягає в реалізації наступних дій :

запис в регістр SCON байта управління, що визначає біти SM0, SM1(вибір режиму) і що очищає біт REN. Для режимів 2 і 3 слід записати значення дев'ятого біта даних в ТВ8; запис байта даних в регістр SBUF.

Мал. 2.14. Робота послідовного порту в режимах 2 і 3

Для ініціалізації прийому слід встановити біт REN регістра SCON. Прийом даних починається після ідентифікації переходу " 1" - " Про" на лінії RxD.

При синхронізації послідовного порту від Таймера 1, працюючого в режимі авто перезавантаження, швидкість обміну визначається по формулі:

де(ТН) - вміст регістра ТН1 в десятковому уявленні.

Обмін у багатопроцесорних системах. Послідовний порт мікроконтроллерів MCS - 51 здатний підтримувати з використанням Режимів 2 і 3 обмін у багатопроцесорних системах. При цьому передавальний мікроконтроллер грає роль ведучого, а приймаючі мікроконтроллери - роль ведених. Механізм такої передачі апаратно підтримується бітом SM2 регістра SCON. Провідний мікроконтроллер посилає спочатку посилки кадр, що містить адресу одного з ведених мікроконтроллерів. Адреса відрізняється від даних тим, що його дев'ятий біт даних встановлений в 1, у той час час як у кадру даних дев'ятий біт дорівнює 0. При SM2 = 1 кадр адреси викликає переривання, а кадр даних немає. Процедури переривань усіх ведених аналізують прийняту адресу, при ідентифікації своєї адреси мікроконтроллер скидає біт SM2 і читає після-дуючі дані. Інші ведені залишають біт SM2 встановленим і продовжують виконувати поточну програму.