Лабораторные МС 68HC11 (1086185), страница 14
Текст из файла (страница 14)
Каждый приемник по первому байту (байтам) блока определяет к нему ли производится обращение и если нет, то снова возвращается в режим “сна” до начала приема нового блока данных.При “пробуждении” SCI по установленному старшему биту номер устройства, к которому производится обращение, кодируется в байте с установленным старшим битом. Такимобразом первый байт блока передаваемых данных должен быть с установленным старшимбитом и указывать на номер микроконтроллера к которому производится обращение.Остальные байты блока должны иметь “0” в старшем разряде. При этом нет необходимости,Последовательный асинхронный интерфейс (SCI).63Лабораторная работа №9чтобы интервал между двумя байтами сообщения был меньше длительности передачи одногокадра.
Микроконтроллер после приема байта с установленной “1” в старшем разряде долженопределить по этому байту к нему ли производится обращение и если нет, то снова перейти врежим “сна”. Этот режим пробуждения также называется режимом пробуждения по адресному маркеру.Следующая программа демонстрирует использование режима “сна / пробуждения”. Посути это предыдущая программа реализующая режим “эхо” для терминала ЭВМ, но активизация ее работы происходит только после приема байта с установленным старшим битом иостальными битами соответствующими семи младшим переключателям отладочного модуля.cpu6811sccr1equ$2c; регистр управления SCI 1sccr2equ$2d; регистр управления SCI 2scsrequ$2e; регистр состояния SCIbaudequ$2b; регистр управления скоростью обмена; SCIscdrequ$2f; регистр данных SCIorgldyseildaastaa$d000#$1000ldx#$d100stx$00c5ldaastaaldaa#%00110010baud,y#%00001000staaldaasccr1,y#%00101110staasccr2,yclibraorgldyldaa*$d100#$1000scsr,yldaascdr,ybitabeqandaldab#$80j1#$7f$1f03cbabeqj_end#$7e$00c4; начало основной программы;;;;;;;;;запрет I-прерыванийкод команды JMPзапись по вектору прерывания SCI(режим bootstrap)адрес подпрограммы обслуживанияпрерываниязапись в качестве операнда командыJMPустановить скорость обмена 2400 бод;;;;;;;;;;1 старт-бит, 8 бит данных, 1 стопбит, “пробуждение” поадресному маркеруразрешить работу передатчика иприемника, разрешитьпрерывания от приемника, установитьрежим “сна”разрешить I-прерываниязамкнутый циклподпрограмма обслуживания прерывания;;;;;чтение регистра scsr (дляпоследующего сброса флага rdrf)чтение регистра данных (и сброс флагаrdrf регистра scsr)проверка на установленный старший бит;;;;;;если установлен, тосравнить состояние семи мл.переключателей исеми мл.
бит принятого байтаесли совпадают, выход без установкирежима “сна”Последовательный асинхронный интерфейс (SCI).64Лабораторная работа №9bset sccr2,y,%00000010 ; иначе установить режим “сна”braj_endj1staa scdr,y; запись данных в регистр данных; передатчикаj_endrti; возврат из подпрограммыОстановимся подробнее на работе программы. В начале программы кроме обычныхустановок программируется режим пробуждения по адресному маркеру и SCI вводится в режим “сна”. После возникновения прерывания от приемника принятый байт проверяется наналичие в старшем разряде “1”.
Если старший бит установлен, следовательно принят адресный маркер и далее производится проверка на соответствие 7-битного кода маркера и7-битного кода, установленного на переключателях отладочного модуля. Если они не совпадают, SCI снова вводится в режим “сна”, т.е. следующим принятым байтом сможет статьтолько новый адресный маркер. При совпадении кодов происходит выход из подпрограммыбез установки режима “сна”, давая таким образом возможность SCI принимать все последующие байты данных, которые снова пересылаются в ЭВМ и отображаются на дисплее.Установите на переключателях какое-либо двоичное число, например $10.
Запуститепрограмму с адреса $D000. Выйдите из программы - отладчика и войдите в режим терминала.Установите параметры обмена: 1 старт-бит, 8 бит данных, 1 стоп-бит, скорость обмена 2400бод и номер COM-порта, к которому подключен отладочный модуль. Нажимая на цифровыеи/или символьные клавиши ЭВМ с ASCII кодом меньше $80 убедитесь, что они не отображаются на дисплее.
Введите теперь символ с кодом, соответствующим коду на переключателях и с установленным старшим битом. Для нашего примера это $90 - код, как правило соответствующий русской заглавной “P”. Ввод ASCII символа с произвольным кодом можнопроизводить следующим образом: нажмите клавишу <Alt> на клавиатуре ЭВМ, и удерживаяее наберите на боковой цифровой клавиатуре десятичный код символа (для нашего примераэто 144). Передача символа произойдет после отпускания клавиши <Alt>.
После ввода маркера убедитесь, что активизировался режим “эхо” и вводимые с клавиатуры ЭВМ символыотображаются на дисплее. Аналогично предыдущему введите новый адресный маркер, но скодом отличающимся от установленного на переключателях. Убедитесь, что режим “эхо”заблокировался.Последовательный асинхронный интерфейс (SCI).65Лабораторная работа №93. Контрольные вопросы1.
Опишите формат данных SCI. Что такое кадр данных?2. В чем разница 8- и 9- битового форматов данных? Как выбрать необходимый формат?3. Опишите процесс использования регистра данных SCDR. Как этот регистр устроен физически?4. Как разрешается работа приемника и передатчика?5. Опишите функцию флага TDRE регистра SCSR и как с ним работать.6. Опишите функцию флага TC регистра SCSR и как с ним работать.7. Опишите функцию флага RDRF регистра SCSR и как с ним работать.8. Опишите функцию флага OR регистра SCSR и как с ним работать.9.
Опишите функцию флагов NF и FE регистра SCSR и как с ними работать.10.Опишите функцию флага IDLE регистра SCSR и как с ним работать.11.Как осуществляется установка скорости передачи SCI?12.Рассчитайте параметры N и M для скорости обмена 15625 бод, учитывая, что внутренняячастота синхронизации равна 2МГц.13.Опишите функцию битов регистра SCCR2.14.Какие внешние линии микроконтроллера задействованы для обеспечения работы SCI?15.Для чего используется режим “сна” SCI?16.Опишите процесс “пробуждения” SCI по свободной линии.17.Опишите процесс “пробуждения” SCI по адресному маркеру.4. ЗаданияПримечание.
Для выполнения некоторых заданий вам потребуются ASCII коды клавиш,представленные в следующей таблице:0МладшаяСтаршая цифра123отключение линии переда- пробел00NULL1234567начало заголовкауправление устройством 1начало текстауправление устройством 28возврат на 1 позицию назадгоризонтальнаятабуляцияперевод строки9циABфраCDEFчи данных4@5P6'7p!“#$%&'1234567ABCDEFGQRSTUVWabcdefgqrstuvw(8HXhxконец носителя)9IYiyподстановка*+:;JKZ[jkz{,./<=>?LMNO\]^-lmno|}~конец текстауправление устройством 3конец передачиуправление устройством 4запросошибочная ситуацияподтверждениесинхронизациязвонокконец пересылки блокаданныхотменавертикальная табуляцияперевод форматаотключениеразделитель файловвозврат кареткиразделитель группнижний регистрразделитель записейверхний регистрразделитель элементовзабой1.
Напишите программу “эхо” для режима терминала, работающую на скорости 9600 бод.2. Напишите программу, которая высвечивала бы на светодиодах код нажатой на клавиатуреЭВМ клавиши.Последовательный асинхронный интерфейс (SCI).66Лабораторная работа №93. Напишите программу, которая по нажатию на кнопку PA0 отсылала бы на дисплей код,установленный на переключателях модуля.4. Напишите программу, которая посылала бы на дисплей ASCII сообщение из ОЗУ(например объемом 16 байт), предварительно записанное в него, после нажатия на клавишу PA0.5. Напишите программу записывающую в 5-разрядный буфер в ОЗУ набор символов с клавиатуры ЭВМ, после чего выводящую одновременно весь буфер на дисплей.6.
Напишите программу “эхо”, которая при вводе заглавных букв печатала бы прописные инаоборот.7. Напишите программу, которая после ввода произвольного заранее заданного кодовогослова зажигала бы на 1 секунду все светодиоды.8. Напишите программу, выводящую на дисплей последовательно все заглавные буквы латинского алфавита. Каждый новый символ должен выводится через 0.5 сек.9. Напишите программу, которая после ввода на клавиатуре ЭВМ десятичного числа в диапазоне от 0 до 255 и нажатия на клавишу <Enter> индицировала бы его на светодиодах модуля в двоичном виде.10.Напишите программу, которая двоичное число, установленное на переключателях модуляотображала бы на дисплее в десятичном виде после нажатия на кнопку PA0.11.Напишите программу, которая генерировала бы на дисплее слова, состоящие из случайных символов длиной от 3 до 8 позиций (тоже случайная величина), по нажатию на кнопку PA0.
Последним символом каждого слова должен быть пробел.12.Напишите программу, которая реализовывала бы алгоритм задания 2, но только послеприема адресного маркера с кодом, установленным на переключателях модуля.13.Напишите программу, которая после приема правильного адресного маркера (код установлен на светодиодах) выводила бы на дисплей произвольное сообщение, ранее записанноев ОЗУ.14.Напишите программу, которая двигала бы по строке слева направо произвольный символ.После достижения правой границы строки символ должен исчезнуть, после чего цикл повторяется. Скорость перемещения выберите самостоятельно.15.Напишите программу, реализующую алгоритм задания 14, с тем отличием, что символдолжен двигаться по столбцу снизу вверх.16.Напишите программу, реализующую следующий игровой алгоритм: После нажатия накнопку PA0 на дисплее возникает случайный символ латинского алфавита или цифра.
Если в течение 1 секунды нажимается клавиша на клавиатуре ЭВМ с соответствующим символьным обозначением, то рядом появляется новый случайный символ и т.д. Если в течение 1 секунду нет нажатия или нажимается неправильная клавиша, то на 1 секунду загораются все светодиоды модуля.17.Напишите программу, использующую алгоритм задания 14 с тем отличием, что в течение1 сек символ должен перемещаться по строке слева направо. После достижения правойграницы, или если во время перемещения была нажата правильная клавиша, то текущийсимвол должен исчезнуть, а на левой границе строки появиться новый, после чего циклповторяется.18.Напишите программу, реализующую алгоритм задания 15 с тем отличием, что время пробега символа через строку должно уменьшаться с каждым новым символом на 0.05 секунды, причем начальное время должно быть 2 сек.
и конечное 0.3 сек. Если символ набранна клавиатуре ЭВМ неправильно, то время прохождения следующего символа должноувеличиваться на 0.1 сек.Последовательный асинхронный интерфейс (SCI).67Лабораторная работа №10Лабораторная работа №10Работа с EEPROM.1. ВведениеВ данной работе изучаются методы взаимодействия с внутренней электрически - программируемой памятью EEPROM.2. Работа с EEPROMEEPROM микроконтроллера HC11E1 представляет собой электрически - стираемое/программируемое ПЗУ объемом 512 байт и размещенное по адресам с $B600 по $B7FF.Обычно он используется для хранения данных, которые должны быть сохранены после выключения питания микроконтроллера.