[257]Лабораторные_МС_68HC11 (1086954), страница 15
Текст из файла (страница 15)
Напишите программу записывающую в 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.Обычно он используется для хранения данных, которые должны быть сохранены после выключения питания микроконтроллера.
Это могут быть, например, оперативные данные, которые не должны быть потеряны при аварии по питанию, коэффициенты или базовые таблицы, требующие периодической корректировки и др.Механизм записи (программирования) EEPROM управляется регистром PPROG (см.рис. 10.1). EEPROM разрешается (появляется в карте памяти) при установке бита EEONрегистра CONFIG (о структуре и особенностях программирования регистра CONFIG см.
далее).При стирании байта из области EEPROM его значение становится $FF. При программировании возможно изменение значения бита только из “1” в “0”. Если какой-либо биттребует установки из “0” в “1”, то перед программированием байта следует его стереть. Еслиновый байт данных не содержит единиц в позициях уже запрограммированных в “0”, то возможно программирование нового значения без предварительного стирания старого.Для стирания/программирования EEPROM не требуется подачи внешнего высокогонапряжения благодаря наличию в микроконтроллере встроенного генератора накачки.
Эффективность работы генератора накачки зависит от частоты внутренней синхронизациимикроконтроллера E. Если частота E становится ниже 2 МГц, то эффективность генераторападает, что ведет к увеличению требуемого времени для программирования или стиранияEEPROM. При E=2МГц рекомендуемое время составляет 10 мс, это время следует увеличитьдо 20 мс при уменьшении E до 1...2 МГц. При уменьшении E ниже 1 МГц источником синхронизации для генератора накачки следует выбрать внутренний RC генератор. Для этогонеобходимо установить бит CSEL (бит 6) регистра OPTION.
После установки бита CSELтребуется задержка 10 мс до начала программирования, чтобы RC генератор вошел в установившийся режим.76543210$103BODDEVEN0BYTEROW ERASE EELAT EEPGPPROGMСостояниепосле сброса00000000Рис. 10.1. Регистр управления EEPROM PPROG.Определенные области EEPROM могут быть защищены от записи/стирания путемустановки в “1” соответствующих битов регистра BPROT (см. рис. 10.2).$1035706050Состояниепосле сброса00043PTCON BPRT3112BPRT21BPRT1110BPRT0 BPROT1Рис. 10.2.
Регистр защиты EEPROM BPROT.Работа с EEPROM.68Лабораторная работа №10Каждый из битов BPRT3...BPRT0 отвечает за определенную область EEPROM, какпредставлено в следующей таблице:БитBPRT0BPRT1BPRT2BPRT3Защищаемый блок$B600-$B61F$B620-$B65F$B660-$B6DF$B6E0-$B7FFРазмер блока32 байта64 байта128 байт288 байтПри установке всех четырех битов (состояние после сброса) запрещается стирание/программирование всей области EEPROM. В нормальных режимах работы(расширенном и однокристальном) биты регистра BPROT могут быть сброшены в “0” только в течение первых 64 E циклов работы микроконтроллера после сброса.
Это ограничениене распространяется на специальные режимы работы. Установить любой бит регистраBPROT в “1” можно в любой момент независимо от режима работы микроконтроллера.Управление режимом стирания/программирования производится через регистрPPROG (рис. 10.1). Режим стирания EEPROM разрешается установкой бита ERASE регистраPPROG.
Стирание ячеек EEPROM осуществляется в одном из следующих режимов:- побайтное стирание (стирается только конкретный байт);- построчное стирание (стирается стока из 16-ти байт, начиная с байта, адрес которогоимеет $0 в младшей тетраде и кончая байтом с $FF в младшей тетраде адреса: $B600-$B60F,$B610-$B61F, ...
,$B7F0-$B7FF)- стирание всего EEPROM.Режим стирания задается битами BYTE и ROW регистра PPROG следующим образом:BYTE001ROWРежим стирания0Стирание всего EEPROM1Построчное стираниеX*Побайтное стираниеX*-безразличное состояниеВ режиме программирования (или чтения) значения битов BYTE и ROW не имеет значение, а бит ERASE должен быть сброшен.Режим обработки данных для стирания/программирования разрешается при установкебита EELAT регистра PPROG.
В режиме чтения этот бит должен быть сброшен.Непосредственно стирание/программирование выполняется при подачи высокого напряжения от генератора накачки. Высокое напряжение включается при установке битаEEPGM регистра PPROG и выключается при его сбросе.Чтение EEPROM выполняется при сброшенном бите EELAT и ничем не отличается отчтения других областей памяти.Для иллюстрации процесса взаимодействия с EEPROM предлагается ряд примеровподпрограмм, осуществляющих его программирование и стирание.1. Программирование байта.Входные данные: регистр X - адрес ячейки EEPROM, аккумулятор A - программируемый байт.cpu6811progpshbldab #$02stab $103b; установить режим; программирования/стиранияstaa 0,X; запомнить данные по адресу в EEPROMldab #$03Работа с EEPROM.69stabjsrclr$103bdly10$103bЛабораторная работа №10; подать высокое напряжение; задержка 10 мс; выключить высокое напряжение и; установить режим чтенияpulbrtsdly10pshxldx#$0d10; подпрограмма задержки C 10 мс (для; частоты E=2МГц)j1dexbnej1pulxrts2.
Стирание всего EEPROM (512 байт).bulkepshbldab #$06stab $103b; установить режим стирания всего; EEPROMstab $b600; запомнить любые данные по любому; адресу в EEPROMldab #$07stab $103b; подать высокое напряжениеjsrdly10; задержка 10 мсclr$103b; выключить высокое напряжение и; установить режим чтенияpulbrts3. Стирание строки длиной 16 байт ($B600-$B60F, $B610-$B61F, ... ,$B7F0-$B7FF)Входные данные: регистр X - любой адрес в стираемой строке EEPROM.rowepshbldab #$0estab $103b; установить режим стирания строки; EEPROMstab 0,x; запомнить любые данные по любому; адресу в стираемой строке EEPROMldab #$0fstab $103b; подать высокое напряжениеjsrdly10; задержка 10 мсclr$103b; выключить высокое напряжение и; установить режим чтенияpulbrts4. Стирание байта.Входные данные: регистр X - адрес стираемой ячейки EEPROM.byteepshbldab #$16stab $103bустановить режим стирания байта EEPROMstab 0,xзапомнить любые данные по адресустираемого байта EEPROMldab #$17stab $103b; подать высокое напряжениеРабота с EEPROM.70jsrclrЛабораторная работа №10; задержка 10 мс; выключить высокое напряжение и; установить режим чтенияdly10$103bpulbrts3.
Регистр конфигурации CONFIGРегистр CONFIG (см. рис. 10.3), определяющий конфигурацию микроконтроллерапредставляет собой ячейку EEPROM, подчиняющуюся тем же правилам программирования,что и остальные EEPROM ячейки.76543210$103F0000NOSECNOCOPROMONEEONСостояниепосле сброса0000----CONFIGРис. 10.3 Регистр конфигурации системы CONFIG.Каждый бит регистра CONFIG отвечает за включение определенной системы в конфигурацию микроконтроллера. Например, сброшенный бит NOCOP разрешает работу системызащиты от программных сбоев COP; установленный бит ROMON разрешает работу встроенного ПЗУ микроконтроллера, т.е. область ПЗУ появляется в карте памяти (в микроконтроллере MC68HC11E1 внутреннего ПЗУ нет и бит ROMON отсутствует); установленный битEEON разрешает работу EEPROM.Регистр CONFIG состоит из ячейки EEPROM и статического регистра, состояние битов которого непосредственно определяет конфигурацию системы.
Сразу после сброса микроконтроллера содержимое EEPROM ячейки CONFIG переписывается в статический регистр, фиксируя новую конфигурацию. Таким образом изменение содержимого регистраCONFIG приведет к изменению конфигурации только после очередного сброса микроконтроллера.Следующие подпрограммы показывают как можно программировать/стирать регистрCONFIG.5.
Программирование регистра CONFIG.Входные данные:аккумулятор A - программируемый байт.progcpshbldab #$02stab $103b; установить режим; программирования/стиранияstaa $103F; запомнить данные по адресу регистра; CONFIGldab #$03stab $103b; подать высокое напряжениеjsrdly10; задержка 10 мсclr$103b; выключить высокое напряжение и; установить режим чтенияpulbrts6. Стирание регистра CONFIG.bytecpshbldab #$16stab $103b; установить режим стирания байта; EEPROMstab $103F; запомнить любые данные по адресуРабота с EEPROM.71Лабораторная работа №10; регистра CONFIGldabstabjsrclr#$17$103bdly10$103b;;;;подать высокое напряжениезадержка 10 мсвыключить высокое напряжение иустановить режим чтенияpulbrtsРассмотрим практическое применение представленных подпрограмм. Запишите в память микроконтроллера все шесть представленных подпрограмм начиная с адреса $D100.Дополнительно запишите следующую программу:cpu6811org$d000; начало основной программыclr$1035; сбросить регистр bprot, разрешив; программирование ячеек EEPROMldx#$B605; установить указатель на ячейку EEPROMldaa #$55; установить число для программированияjsrprog; выполнить программирование байта; EEPROMbra*Данная программа выполняет запись числа $55 в ячейку EEPROM с адресом $B605.