Рябов В.Т. - Устройство и программирование однокристальных микроконтроллеров (1041592), страница 6
Текст из файла (страница 6)
Здесь также необходим дешифратор адреса, активизирующийвыводы ОЕ` буфера.Рис. 3.7. Подключение к внешней шине: а) буфера для дискретного контроля;б) дешифратора адреса; в) регистра для дискретного управления.Устройство такого дешифратора приведено на рис. 3.7, б).
За основу взят уже знакомый нам дешифратор ИД7 3х8. Дешифратор реализует неполную дешифрацию, выделяякаждому регистру или буферу не один, а целую группу адресов. Это конечно не экономнос точки зрения расходования адресного пространства, но вполне приемлемо для локальных контроллеров. Здесь мы под 8 регистров или буферов использовали старшие 32 кБ адресов внешней памяти данных и можем проводить до 64 ДУ или ДК, что для локальногоконтроллера более чем достаточно, как, скорее всего, будет достаточно и оставшихсямладших 32 кБ адресов. Предложенный дешифратор уже стробируется сигналами чтенияи записи, поэтому ячейки ИЛИ на рис.
3.7 а) и в) можно (и лучше) исключить и сигнал сдешифратора подавать непосредственно на входы синхронизации регистров или разрешения выдачи буферов. Так задержка сигнала будет короче.18На рис. 3.7, в) показано подключение к внешней шине регистра, служащего для выдачи сигналов дискретного управления. Этот регистр будет иметь некоторый адрес или зонуадресов в адресном пространстве внешних данных. Для активации регистра необходим дешифратор адреса, выделяющий его при проведении операций чтения-записи во внешнююпамять MOVX. Сигнал разрешения, подаваемый на вывод OE запрещает выдачу сигналов срегистра сразу после включения микроконтроллера. После включения питания содержимоерегистра неопределенно. Если подключить его вывод OE к порту общего назначения Р1, товсе биты этого порта при сбросе МК будут на высоком уровне и содержимое регистра наобъект выставлено не будет.
Выводы регистра будут в Z-состоянии. После завершения программы установки начального состояния объекта управления, соответствующий бит портаР1 можно обнулить и выдать содержимое регистра на объект управления.Таймеры-счетчики МКМК содержит два шестнадцати разрядных таймера-счетчика: нулевой Т/С0 и первыйТ/С1. Они предназначены для счета времени (машинных циклов) либо внешних импульсовчерез выводы Т0 и Т1 микроконтроллера и способны работать в различных режимах параллельно с МК, не отвлекая его от выполнения предписанных инструкций. В пространстве RSFс таймерами счетчиками связано шесть регистров специальных функций:- TMOD – регистр режимов работы таймеров-счетчиков (MODe);- TCON - регистр управления работой таймеров-счетчиков (CONtrol);- TL0 – младший байт нулевого таймера-счетчика;- TH0 – старший байт нулевого таймера-счетчика;- TL1 – младший байт первого таймера-счетчика;- TH1 – старший байт первого таймера-счетчика.В соответствующих регистрах TL и TH и производится счет.
Они инкрементируются иреализуют предписанные таймеру-счетчику режимы работы. Доступны для чтения и записииз программы пользователя.Регистр TMOD функционально разделяется на две одинаковые тетрады, относящиесяк первому и нулевому таймеру счетчику, поэтому опишем назначение только младших четырех битов.Бит Gate0 – предназначен для управления таймером-счетчиком от вывода прерываний (INT0 – для нулевого таймера-счетчика, INT1 – для первого таймера-счетчика) и позволяет запускать и останавливать соответствующий Т/С.Бит C/T0` - назначает счет или машинных циклов (1 машинный цикл – двенадцатьтактов осциллятора) или внешних импульсов с вывода Т0 (Т1 для С/Т1).
При установке вединицу считает циклы, в нуль – внешние импульсы.Биты M0.0, М1.0 – устанавливают один из четырех режимов работы (см. далее).Старшие четыре бита аналогичны по функциям, но относятся к первому таймерусчетчику.В таблице 3.3. обобщено краткое описание битов регистра TMOD.Таблица 3.3Биты ОбознаНазначение битовПримечаниечение0-1Определяет один из 4-х режимовБиты устанавливаМ0 – М14-5работы, отдельно для Т/С1 и Т/С0ются программно:- биты 0-3 опредеРежимМ1 М0ляют режим рабо000ты Т/С0.011биты 4-7 опреде102ляют режим рабо113ты Т/С1 .192,6C/T0,C/T13, 7GATE0,GATE1Продолжение таблицы 3.3Определяют работу в качестве:С/Т0, С/Т1 = 0 - таймераС/Т0, С/Т1 = 1 - счетчикаРазрешает управлять таймером от вывода МК(INT0 - для Т/С0, INT1- для Т/С1).GATE = 0- управление запрещеноGATE = 1- управление разрешеноРегистр TCON – управление таймером счетчиком.Биты TF1, TF0 – 7-ой и 5-ый биты - флаги переполнения первого и нулевого таймерасчетчика.
Устанавливаются в единицу аппаратно при переполнении. Могут вызывать прерывания, доступны для чтения.Биты TR1, TR0 - 6-ой и 4-ый биты – разрешают управление счетом от вывода INT1 иINT0 для первого и нулевого таймера-счетчика соответственно.Остальные четыре бита регистра TCON управляют внешними прерываниями и будутподробно рассмотрены в соответствующем разделе.В таблице 3.4.
обобщено краткое описание битов регистра TCON.Биты6475ОбознаНазначение битовчениеБиты включения - выключенияTR1Т/С, отдельно для Т/С0 и Т/С1.TR0TR=0 - выключен,TR=1 - включен.Флаги переполнения Т/С.ТF1ТF020IT1IT031IE1IE0Биты, определяющие вид прерывания по входам INT0, INT1:IТ=0 - прерывание по уровнюIТ=1 - прерывание по спаду(переход из "1" в "0") .Флаги запроса внешних прерываний по входам INT0, INT1Таблица 3.4.ПримечаниеБиты устанавливаются и сбрасываются программно.
Доступны по чтению.Биты сбрасываются и устанавливаются аппаратно и программно. Доступны по чтению.Биты устанавливаются и сбрасываются программно. Доступны по чтению.Биты сбрасываются и устанавливаются аппаратно и программно. Доступны по чтению.Режимы работы таймеров-счетчиков устанавливаются битами М0 и М1 регистраTMOD и пояснены далее функциональными схемами, на которых прямоугольной рамкойобозначен какой-либо аппаратный ресурс (устройство) микроконтроллера, рамкой со скругленными краями – бит какого либо управляющего регистра.
Я думаю, по очертаниям Вы узнаете на этих схемах и внешние выводы МК. Всего возможно четыре режима, от нуля дотрех. Нулевой, первый и второй режимы одинаковы для обоих ТС. В этих режимах таймерысчетчики независимы в своей работе, каждому счетчику может быть определен свой режим.Последний, третий режим предназначен только для работы нулевого таймера счетчика. Установка ТС1 в третий режим просто блокирует его работу.Режим 0 (рис.
3.8) устанавливается сбросом битов М0 и М1 соответствующего ТС(см. первую строку табл. 3.3). Этот режим достался микроконтроллеру 51-ой серии в наследство от предыдущей 48-ой. Это были МК, выпущенные фирмой Intel впервые в мире. Семейство MCS-48 имело восьмиразрядные таймеры-счетчики, считавшие не машинные циклы, апорции по 32 цикла, иначе счетчик слишком быстро бы переполнялся. Для имитации этогорежима в случае замены МК на 51-ю серию и был введен нулевой режим.20Импульсы осциллятора OSCделятся на 12, т.е. формируется последовательность машинных циклов.
Переключатель, управляемыйбитом С/Т0`, подключает счетныерегистры TL и TH либо к делителютактов осциллятора на 12, либо квнешнему выводу Т.Далее в цепочке, передающей импульсы на счетные регистРис. 3.8. Работа нулевого таймера в режиме 0.ры стоит переключатель, управляемый логической комбинациейбитов Gate, TR и состоянием вывода INT. Установка бита разрешения TR в ноль запрещаетсчет независимо от состояния других элементов цепочки. Если бит TR установлен в единицу,то бит Gate может разрешать (Gate=1) или запрещать (Gate=0) управление счетом от выводаINT. При Gate=1, TR=1 и INT=1 счет разрешен, при Gate=1, TR=1 и INT=0 – запрещен. Пример практического использования комбинации битов Gate, TR и состояния вывода INT будетпоказан при описании первого режима ТС.При переполнении регистра ТН устанавливается соответствующий бит (флаг) ТF в регистре TCON и будет вызвано прерывание по вектору 000Bh для нулевого таймера-счетчикаи 001Bh для первого.Режим 1 (рис.
3.9) отличается от нулевого тем, что счет идет в двух восьмиразрядныхрегистрах и переполнение будет наступать в 8 раз реже. Длительность отсчета таймера отпереполнения до переполнения составит уже 65536 мкс, а не 8192мкс, как в нулевом режиме.Это соответствует 122 «тикам» в секунду. Все остальное аналогично.Оба регистра TR и TH доступны для записи, возможно также«чтение на лету», т.е. без приостановки счета. Поскольку инкрементирование регистра ТН в режиметаймера происходит раз в микросекунду, первый режим удобно использовать для определения длительности положительных импульРис.
3.9. Работа нулевого таймера в режиме 1.сов. Для этого нужно разрешитьуправление от вывода INT (Gate=1,TR=1) и подать исследуемый сигнал на этот вывод. Ниже приведен текст программы на ассемблере, настраивающей таймер 0 микроконтроллера на эту операцию. К выводу INT0 присоединен исследуемый сигнал, кнопка «СТАРТ», присоединенная к нулевому биту первогопорта, запускает измерение.LJMPOVER; по адресу вектора прерываний Т/С0 записан……………….; переход к подпрограмме обработки……………….; переполнения таймераTMR: ORL TMOD,#00001001B; установить бит Gate0 и первый режим Т/С0SET TMOD.2; сбросить бит T/C0, установить состояние «таймер»ORL TCON,#00010000B; установить бит TR0 не изменяя остальныхMOV TH0, #0; обнулить старший байт Т/С0MOV TL0, #0; обнулить младший байт Т/С0ORL IE, #10000010B; разрешить прерывания от Т/С0MOV TICK,#0; обнулить счетчик переполнений таймераWAIT:JBР1.0,WAIT; ждать, пока единица на выводе Р1.0,0B:21………………………………OVER: INC TICKRTI; это кнопка «СТАРТ»; здесь нужна подпрограмма вывода результата из; ячеек TICK, TH0 и TL0 и возврата на метку TMR; увеличить число переполнений; возврат из прерыванияРежим 2 иллюстрирован рис.
3.10. Это режим с автоперезагрузкой и доступен он, также, как и два предыдущие любому из двух таймеров МК. Здесь TL и TH выступают, как два автономных регистра, счет идет в TL, причем, как только он обнуляется, содержимое ТН переписывается в него. Режим удобен для непрерывного отсчета временных интервалов, период которых определяется ТН.При необходимости, сигнал соответствующий этим временным интерваламможно подать на какой-либо вывод порта МК. Попробуйте написать соответствующую программу. Этот режим частоиспользуют для Т/С1, задавая частотуприема и передачи встроенного приемоРис. 3.10.