Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Пример программирования контроллера SCI






 

Приведенный ниже программный фрагмент SCI.c иллюстрирует технику программного обслуживания асинхронного последовательного интерфейса МК семейства 68HC12.

Отладочная плата MC68HC912B32EVB предоставляет возможность использования только одного контроллера SCI с номером 0. Поэтому в именах регистров специальных функций символ «x» будет заменен нами на символ «0».

Ниже перечислены биты и регистры управления, которые используются в данном примере:

• SC0BDH: SC0BDL — регистры скорости обмена контроллера SCI. Записанное в него двоичное число определяет скорость передачи данных и скорость приема данных, которые для одного контроллера в соответствии с его принципом действия могут быть только равными;

• SC0CR1 — первый регистр управления контроллера SCI. Используется для выбора формата 8-ми или 9-ти разрядного представления слова в кадре обмена данными (бит M), для выбора режима работы с паритетом или без него (бит PE), для назначения четной или нечетной логики формирования паритета (бит PT);

• SC0CR2 — второй регистр управления контроллера SCI. Его биты разрешают работу передатчика (бит TE) и приемника (бит RE);

• SC0DRL — регистр данных контроллера SPI, младший байт. Используется для обмена данными в последовательном коде в 8-разрядном формате;

• SC0SR1 — первый регистр состояния контроллера SCI. Этот регистр содержит флаг готовности буфера передатчика к приему новых данных TDRE и флаг завершения приема очередного слова в буфер приемника RDRF.

В нашем примере задействован только передатчик контроллера SCI. Он будет непрерывно посылать по линии последовательной связи TxD (вывод PORTS0) код символа «S». Прерывания от контролера SCI в данном примере не используются.

Контроль за состоянием флага TDRE ведется методом полинга.

/*-------------------------------------------------------------------*/

/* filename: SCI.c */

/* МAIN PROGRAМ: Эта программа реализует непрерывную посылку кода */

/* символа " S" с скоростью 9600 бод в 8-разрядном формате (кадр 10 бит)*/

/* с битом паритета */

/*-------------------------------------------------------------------*/

/*подключаемые файлы*/

#include < 912b32.h>

 

/*используемые функции*/

void sci_init(void);

void sci_trans(void);

 

void main(void) {

sci_init(); /*инициализация модуля SCI*/

while(1) {

sci_trans(); /*передавать данные непрерывно*/

}

}

 

/*-------------------------------------------------------*/

/* Функция sci_init производит инициализацию модуля SCI. */

/*-------------------------------------------------------*/

void sci_init(void) {

unsigned char clear;

SC0BDL = 0x34; /*установить скорость 9600 бод*/

SC0BDH = 0x00;

SC0CR1 = 0х04; /*10-разрядный формат кадра 8 бит данных, с*/

/*контролем паритета, логика паритета нечетная */

clear = SC0SR1; /*операция для сброса флага TDRE*/

/*флаг сбрасывается в два действия*/

/*сначала читать регистр SC0SR1*/

/*затем записать в регистр SC0DRL*/

}

 

/*-------------------------------------------------------------------*/

/* Функция sci_trans осуществляет непрерывную пересылку одного байта */

/*-------------------------------------------------------------------*/

void sci_trans(void) {

SC0CR2 = 0x08; /*разрешить работу передатчика*/

SC0DRL = 's'; /*загрузить в буфер передатчика код символа " S" */

while (SC0SR1! = 0x80) /*ожидать установления бита TDRE)

{

;

}

}

/*-------------------------------------------------------------------*/

Если соединить два микропроцессорных контроллера по последовательному интерфейсу так, что выход TxD первого МК будет соединен со входом RxD второго МК и наоборот, то можно будет организовать двусторонний обмен информацией.

Именно эту задачу Вам предстоит решить в домашнем задании №11, полный текст которого Вы найдете в конце главы.

 

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.