Послідовний порт
Послідовний порт мікроконтроллерів 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 встановленим і продовжують виконувати поточну програму.