[257]Лабораторные_МС_68HC11 (8-разрядные микроконтроллеры семейства M68HC11 фирмы Motorola), страница 12
Описание файла
Файл "[257]Лабораторные_МС_68HC11" внутри архива находится в папке "8-разрядные микроконтроллеры семейства M68HC11 фирмы Motorola". PDF-файл из архива "8-разрядные микроконтроллеры семейства M68HC11 фирмы Motorola", который расположен в категории "". Всё это находится в предмете "цифровые устройства и микропроцессоры (цуимп)" из 8 семестр, которые можно найти в файловом архиве РТУ МИРЭА. Не смотря на прямую связь этого архива с РТУ МИРЭА, его также можно найти и в других разделах. Архив можно найти в разделе "книги и методические указания", в предмете "цифровые устройства и микропроцессоры" в общих файлах.
Просмотр PDF-файла онлайн
Текст 12 страницы из PDF
При этомкаждый разряд результата соответствует 256/125000 C 0.002 с. Результат делится на 5 и выводится на светодиоды. Программа запускается с адреса $D000.Система таймера.52Лабораторная работа №84. Функция выходного сравненияКаждый канал выходного сравнения также имеет связанный с ним 16-битовый регистр,доступный для чтения и записи. При совпадении значения, записанного в этот регистр созначением счетчика таймера устанавливается соответствующий флаг (OCxF) в регистреTFLG1 (рис. 8.1) и происходит изменение состояния соответствующей выходной линии.
Этоизменение для линий 2 - 5 выходного сравнения кодируется в регистре TCTL1 (см. рис. 8.6).Соответствие между битами OMx и OLx и изменением на соответствующей линии представлено в табл. 8.3.Таблица 8.3.OMx OLxДействие при совпадении00Таймер отключен от выходных линий01Инверсия состояния соответствующей выходной линии OCx10Установить в “0” соответствующую линию OCx11Установить в “1” соответствующую линию OCx$10207OM26OL25OM34OL33OM42OL41OM50OL5Состояниепосле сброса00000000TCTL1Рис.
8.6. Регистр управления таймером TCTL1.$100B7FOC16FOC25FOC34FOC43FOC5201000Состояниепосле сброса00000000CFORCРис. 8.7. Регистр форсирования выходного сравнения CFORC.$100CСостояниепосле сброса76543OC1M7 OC1M6 OC1M5 OC1M4 OC1M300000201000000OC1MРис. 8.8. Регистр маскирования выходного сравнения 1 OC1M.$100DСостояниепосле сброса76543OC1D7 OC1D6 OC1D5 OC1D4 OC1D300000201000000OC1DРис. 8.9. Регистр маскирования выходного сравнения 1 OC1D.При успешном сравнении также может генерироваться прерывание, если установленсоответствующий бит OCxI в регистре TMSK1 (рис.
8.2). Запрограммированное действие налинии выходного сравнения можно форсировать, если записать “1” в соответствующий битрегистра CFORC (рис. 8.7).Система таймера.53Лабораторная работа №8В отличие от остальных каналов выходного сравнения, выходное сравнение 1 может автоматически влиять на любую из пяти выходных линий выходного сравнения (линии 3-7порта A).
При этом задействуются регистры OC1M (рис. 8.8) и OC1D (рис. 8.9). РегистрOC1M определяет какая линия порта A будет подвержена изменению в результате успешногоOC1 сравнения. В регистр OC1D записываются данные, передаваемые на соответствующиелинии в результате успешного сравнения. В случае одновременного воздействия на одну линию двух выходных сравнений выходное сравнение OC1 имеет высший приоритет.Рассмотрим пример программы, реализующей управление скважностью мигания светодиодов.
Задание скважности производится на старшей тетраде переключателей. Период мигания синхронизирован с переполнением таймера. При этом в момент переполнения таймера (происходит с частотой приблизительно 0.5 с) происходит зажигание светодиода PB3, а вмомент совпадения содержимого таймера с содержимым регистра выходного сравнения OC3(старшая тетрада которого совпадает с состоянием старшей тетрады переключателей, амладшие равны 0) светодиод гаснет. И таким образом чем больше число набрано на старшейтетраде переключателей, тем выше длительность вспышки светодиода (за исключением комбинации $00-в этом случае свечение непрерывное). В данной программе не используютсялинии выходного сравнения, а работа осуществляется по прерыванию. Запуск программыдолжен производиться с адреса $D000.cpu6811tmsk1equ$22; регистр маскирования прерываний от; таймера 1tmsk2equ$24; регистр маскирования прерываний от; таймера 2tflg1equ$23; регистр флагов таймера 1tflg2equ$25; регистр флагов таймера 2toc3equ$1a; регистр выходного сравнения 3toorg$00d0jmptoorg$00d9jmpoc3orgldyldaastaa$d000#$1000#%00100001tmsk1,yldaastaa#%10000011tmsk2,yclibrabsetldaastaarti;;;;;;;;;вектор прерывания по переполнениютаймерапереход на подпрограмму обслуживанияпрерываниявектор прерывания по выходномусравнению 3переход на подпрограмму обслуживанияпрерыванияначало основной программы; разрешить прерывания по выходному; сравнению 3; разрешить прерывания по переполнению; таймера; установить входной; коэффициент деления для таймера 16; разрешить I-прерывания*; замкнутый циклtflg2,y,#%10000000; сброс флага переполнения; таймера#$ff$1f04; зажечь светодиоды; возвратСистема таймера.54oc3bsetldaaandastaaclrastaaclrrtiЛабораторная работа №8tflg1,y,#%00100000; сброс флага выходного; сравнения 3$1f03; ввести новое значение; выходного сравнения#$f0; с переключателей (старшая; тетрада)toc3,ytoc3+1,y$1f04; погасить светодиоды; возврат5.
Прерывания реального времениРабота системы прерываний реального времени (RTI) управляется состоянием битовRTR1 и RTR0 регистра PACTL (см. рис. 8.10).76543210$1026DDRA7PAENPAMODPEDGEDDRA3I4/O5RTR1RTR0Состояниепосле сброса00000000PACTLРис. 8.10. Регистр управления аккумулятором пульсаций PACTL.В зависимости от состояния этих битов меняется период возникновения прерыванияреального времени.
Для частоты внешнего кварцевого генератора 8 МГц это соответствиепредставлено в табл. 8.4.Таблица 8.4.RTR1 RTR0 Период RTI004.10 мс018.19 мс1016.38 мс1132.77 мсПосле истечении заданного периода RTI устанавливается флаг RTIF в регистре TMSK2,и если установлен флаг RTII регистра TFLG2, то происходит генерация прерывания.Следующая подпрограмма реализует инверсию состояния светодиодов через каждые 32цикла RTI. Система прерываний реального времени программируется на вывод запроса с периодичностью в 32.77 мс. После каждого запроса происходит увеличение содержимого дополнительного счетчика на 1, после 32 запросов производится инверсия состояния младшегобита порта B и таким образом светодиоды мигают с частотой 0.5 Гц.cpu6811tmsk2equ$24; регистр маскирования прерываний от; таймера 2tflg2equ$25; регистр флагов таймера 2pactlequ$26; регистр управления аккумулятором; пульсацийtmpequ$00; дополнительная ячейкаorg$00ebjmprtorg$d000; вектор прерывания по реальному; времени; переход на подпрограмму обслуживания; прерывания; начало основной программыСистема таймера.55Лабораторная работа №8ldyldaastaa#$1000#%00000011pactl,yldaastaa#%01000000tmsk2,y; установить период прерывания; реального времени 32.77 мс; разрешить прерывания по системе; реального времениcli; разрешить I-прерыванияbra*; замкнутый циклrtbset tflg2,y,#%01000000; сброс флага запроса; прерывания реального времениinctmp; увеличить на 1 содержимое; дополнительного счетчикаldaa tmp; оценка только младших 6 битanda #$1fbnert1; если равен нулю, тоldaa $1f04; инверсия состояния светодиодовeora #%11111111staa $1f04rt1rti; возвратЗапуск программы производится с адреса $D000.6.
Аккумулятор пульсацийАккумулятор пульсаций представляет собой 8-разрядный счетчик доступный для чтения и записи, который может работать в двух режимах (в зависимости от состояния битаPAMOD регистра PACTL): подсчет внешних событий (PAMOD = 1) или управление накоплением частоты E/64 (PAMOD = 0), где E - внутренняя частота синхронизации. Управление аккумулятором пульсаций производится по линии PA7 порта A, причем не имеет значения настроена она на ввод или на вывод (настройка на ввод или вывод осуществляется соответственно сбросом или установкой бита DDRA7 регистра PACTL).
Задание вида воздействия, управляющего аккумулятором производится с помощью битов PAMOD и PEDGEрегистра PACTL. Зависимость между состоянием этих битов и видом воздействия представлено в табл. 8.5.Таблица 8.5.PAMOD PEDGEВид воздействия00Отрицательный фронт на входе инкрементирует счетчик01Положительный фронт на входе инкрементирует счетчик10“0” на входе запрещает счет тактовых импульсов11“1” на входе запрещает счет тактовых импульсовРассмотрим программу управления яркостью горения светодиодов.
При этом прерывание по переполнению счетчика пульсаций используется для управления скважностью импульсов поступающих на светодиоды. Для организации длительности импульса используетсядополнительный счетчик. Скважность импульсов зависит от состояния младшей тетрады переключателей. Поскольку частота сигнала на светодиоде достаточно велика, то при изменении состояния переключателей меняется яркость горения светодиода PB1 (чем больше число, тем больше яркость). Счетчик пульсаций программируется на синхронизацию от внутренней частоты синхронизации E/64. Запуск программы осуществляется с адреса $D000.cpu6811portaequ$00; регистр данных порта Atmsk2equ$24; регистр маскирования прерываний от; таймера 2Система таймера.56Лабораторная работа №8; регистр флагов таймера 2; регистр управления счетчиком; пульсаций; регистр накопления аккумулятора; пульсаций; дополнительная ячейкаtflg2pactlequequ$25$26pacntequ$27tmpequ$00org$00cdjmppaoorgldyldaastaa$d000#$1000#%11100000pactl,yldaastaa#%00100000tmsk2,ybsetporta,y,#%10000000 ; разрешить накопление счетчика; пульсацийclibrapaobsetldaastaadecpao1pao2bneldaastaaсlrrtildaaandacmpabneldaastaarti*;;;;вектор прерывания по переполнениюсчетчика импульсовпереход на подпрограмму обслуживанияпрерывания; начало основной программы;;;;разрешить счетчик пульсаций(внутренняя синхронизация, разрешениесчета по PA7=1), настроить PA7 навывод; разрешить прерывания по переполнению; счетчика пульсаций; разрешить I-прерывания; замкнутый циклtflg2,y,#%00100000 ; сброс флага переполнения; счетчика#$f0pacnt,y; установить 16 циклов до переполненияtmp; уменьшить на 1 значение счетчика; переполненийpao1; если равен 0, то#$10tmp; инициализировать значение счетчика$1f04; погасить светодиоды; и возврат$1f03; иначе ввести состояние переключателей#$0f; выделить младшую тетрадуtmp; сравнить со счетчикомpao2; если совпадение, то#$ff$1f04; зажечь светодиоды; возвратСистема таймера.57Лабораторная работа №87.
Контрольные вопросы1. Какие системы микроконтроллера управляются внутренним таймером?2. Какой элемент лежит в основе таймера?3. Как производится тактирование счетчика таймера? Как управлять частотой тактирования?4. Что происходит при переполнении таймера?5. Опишите функцию входной фиксации.6.