Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка_ВЕ51_6ЛЕТ.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
2.48 Mб
Скачать

Краткие теоретические сведения к заданию 3

Через универсальный асинхронный приемопередатчик (УАПП), который в литературных источниках часто называют последовательным портом, осуществляются прием и передача информации, представленной в последовательном коде (младшими битами вперед). Наличие буферного регистра приемника SBUF позволяет совмещать операцию чтения ранее принятого байта с приемом очередного. Но если к моменту окончания приема байта предыдущий не был считан из SBUF, то он будет потерян. Работой последовательного порта управляют три регистра:

  • регистр управления/статуса приемопередатчика SCON (sequential -последовательный, control – управлять);

  • бит SMOD регистра управления мощностью PCON (power control);

  • буферный регистр приемопередатчика SBUF.

Регистр SCON содержит не только управляющие биты, определяющие режим работы последовательного порта, но и девятый бит принимаемых или передаваемых данных (RB8 и ТВ8) и биты прерывания приемопередатчика (R1 и Т1).

Последовательный порт может работать в четырех различных режимах.

  • Режим 0. Синхронный режим. Информация передается и принимается через вывод входа приемника RxD. Принимаются или передается 8 бит данных. Через вывод TxD выдаются импульсы синхронизации, которые сопровождают каждый бит. Скорость передачи фиксирована и составляет 1/12 Fг, где Fг – частота кварцеваго резонатора.

  • Режим 1. Асинхронный 8-ми битовый режим. Передаются (через TXD) или принимаются (через RXD) 10 бит: старт-бит (логический 0), 8 бит данных (младшим разрядом вперед) и стоп-бит (логическая 1). При приеме стоп-бит поступает в бит RB8 регистра SCON. Скорость передачи в режиме 1 переменная: для управления скоростью передачи Вы можете использовать таймер Т1 и/или Т2.

  • Режим 2. Асинхронный 9-ти битовый режим с фиксированной скоростью передачи. Передаются (через TXD) или принимаются (через RXD) 11 бит: старт-бит. 8 бит данных (младшим разрядом вперед), программируемый 9-й бит данных и стоп-бит. При передаче, в 9-й бит данных (бит ТВ8 регистра SCON) может быть записан логический 0 или 1, например, значение бита четности (бит Р регистра PSW). При приеме, 9-й бит данных поступает в бит RB8 регистра SCON. Присутствие стоп-бита контролируется схемой обнаружения ошибки кадра. Скорость передачи программируется и может быть равна либо 1/32, либо 1/64 частоты резонатора в зависимости от управляющего бита SMOD.

  • Режим 3. Асинхронный 9-ти битовый режим. Совпадает с режимом 2 во всех деталях, за исключением частоты приема/передачи, которая задается таймером.

Во всех четырех режимах передача начинается любой командой, которая использует SBUF как регистр-приемник. Прием в режиме 0 начинается при условии RI = 0, REN = 1. Прием в других режимах начинается с приходом старт-бита, если бит REN установлен.

Флаг прерывания передатчика ТI устанавливается аппаратно в конце периода передачи стоп-бита во всех режимах. Соответствующая подпрограмма обслуживания прерывания должна сбрасывать бит TI.

Флаг прерывания приемника RI устанавливается аппаратно в конце периода приема восьмого бита данных в режиме 0 и в середине периода приема стоп-бита в режимах 1, 2 и 3. Подпрограмма обслуживания прерывания должна сбрасывать бит RI.

Все библиотечные функции ввода/вывода, такие как printf(), scanf(), getchar(), putchar() и т.д., работают с вводом/выводом через последовательный порт микроконтроллера. Это означает, например, что хорошо знакомая программистам функция printf() классического ANSI CИ в компилляторе С51 выводит данные в последовательный порт микроконтроллера ВЕ51, а не на экран консоли. Точно так же стандартная библиотечная функция СИ scanf() в СИ51 ожидает приема данных с последовательного порта, а не сконсоли, как в обычных компиляторах СИ.

Задание 3.Организуйте связь по последовательному каналу между двумя МПС, реализованными на базе МК ВЕ51. Режим работы - асинхронный, двунаправленный

Функциональная схема, обеспечивающая данный режим работы обмена, представлена на рис. 9. Ниже представлен фрагмент программы инициализации каналов для машины- источника, а также выдачи последовательности заданной длины.

Требуется написать и отладить фрагмент программы инициализации каналов для машины- приемника, а также приема последовательности заданной длины. Для этого достаточно скорректировать выше приведенный модуль. Обращение к функции ввода будет выглядеть как

s[i]=getchar();

Также в программном модуле необходимо разрешить прием данных через УАПП и установить флаг прерывания приемника.

Рис.9. Функциональная схема подсистемы последовательного

обмена данными между однокристальными микроконтроллерами ВЕ51

#include <REG51.h>

// stdio.h – файл заголовка, обеспечивающий работу с

//функциями ввода/вывода

#include <stdio.h>

// intrins.h – файл заголовка, обеспечивающий работу со //строковыми данными

#include <intrins.h>

main()

{

int i; //переменная цикла

unsigned char s[5]=”Hello”;//слово, выводимое через УАПП

EA=1;//разрешение прерываний

SM1=1;//задание режима работы УАПП

SM0=0;//задание режима работы УАПП

TH1=0x56;//для задания частоты прерываний от

//таймера1

TMOD=0x2;//задаем режим работы таймера

TR1=1;//запускаем таймер1

ET1=1;//разрешаем прерывания от таймера1

REN=0;//запрещаем прием данных через УАПП

for(i=0; i<5; i++)

{

TI=1;//установка флага прерывания предатчика

putchar(s[i]);//вывод символа через УАПП

}

for(;;);

}