Главная страница Комбинированное использование портов InitTimers
Servicelnterrupts btfsc goto movlw movwf retfie INTCON,RTIF ServiceRTCC В00100000 INTCON Проверка флага прерывания таймера. Да, переход к подпрограмме обработки. Нет, сброс. ServiceRTCC Инициализация RTCC. movlw .96 movwf RTCC bcf INTCON, RTIF call IncTimer call UpdateDisplay ; Индикация, retfie Стирание флага прерывания таймера. Приращение счетчика времени. Значение счетчика увеличивается один раз в секунду. IncTimer DoIncTime
IncSecondLsd incThirdLsd IncMsd UpdateDisplay JpdateLsd
Меняем местами полубайты. Маскирование старшего полубайта. Инкрементируем значение. Снова меняем местами полубайты. = 10? Нет, тогда переход. Приращение третьей цифры. Пробное приращение байта старших цифр. Маскирование старшего полубайта. = 10? Нет, тогда переход. Да, приращение четвертой цифры. Приращение третьей цифры. Маскирование старшего полубайта. Инкрементируем значение. = 10? Нет, тогда выход. Сброс байта старших цифр. Выключение всех цифр. Сохранение номера цифры в TempC Подготовка индикации. Определяем следующую цифру с = 1? Нет, тогда сброс Lsd. Пересылка Lsd в регистр W. Маскирование старшего байта. Переход к индикации. Update2nciLsc! Updates rdLsd UpdateHsd DisplayOut Ledtable Chk2LsdZero
ChkNsdZero
В противном случае возвращаем 10. Пересылка Msd в W. = О? Тогда продолжаем. В противном случае возврат. Возвращаем 10. Если нужно управлять многоразрядными индикаторами при помощи небольшого числа выходных портов, то существует два решения. Первое - использовать внешний декодер, а второе - микросхему спещализированного контроллера индикации. В первом случае применяют схему, представленную на рис. 3.11. Микроконтроллеру не нужно формировать и передавать семи-сегментный код на индикатор, что требовало бы семи или восьми выводов, достаточно передать только двоично-десятичный код (BCD) цифры, для чего хватает всего четырех выводов. Поскольку Декодер дбоично-десятичново (BCD) коде Ь семисегментньО 2N2907A return Испо пьзование внешнего декодера микроконтроллер управляет светодиодами не напрямую, то обеспечить необходимый ток нетрудно. Остальная часть схемы аналогична той, что приведена на рис. 3.9, единственное отличие - здесь применен индикатор с общим анодом. Алгоритм работы микроконтроллера сходен с алгоритмом работы предьщущей схемы. Изменения сведены к замене семисегмент-ного кода кодом BCD и увеличению числа шагов программь, что связано с управлением большим числом цифровых разрядов через соответств}тощие транзисторы. Если их число слишком велико, то из-за увеличения цикла работы динамической индикации переключения могут стать заметными для глаз. Тогда лучше обратиться к решению, которое будет описано ниже. Это решение использует микросхему специализированного контроллера индикации, который осуществляет не только декодирование двоично-десятичного кода в семисегментный, но и реализует циклограммы необходимых при динамической индикации переключений. На рынке представлено множество микросхем контроллеров для светодиодных индикаторов. Мы выбрали в качестве примера контроллер МС14499 фирмы Motorola, достаточно распространенный и недорогой. Его внутренняя структура показана на рис. 3.12. Как видите, эта микросхема может управлять четырьмя семисегментными индикаторами через последовательный интерфейс, включающий три линии: DATA, CLOCK и EN. Обратите внимание, что передача информации по интерфейсу происходит в синхронном режиме и скорость обмена, определяющаяся частотой тактовых импульсов на линии CLOCK, может быть произвольной и даже переменной. Это значительно упрощает программирование. Микросхема реализует принцип динамического управления индикаторами, что предполагает матричный дост\т1 к каждому сегменту: Это сокращает общее число необходимых линий и соответственно выводов микросхемы, используемых для управления индикатором. Упрощается и программное обеспечение микроконтроллера: его задача, в части поддержки индикации, сводится к посылке на микросхему последовательности цифр, которые надо вывести на индикатор. Если приложение требует более четырех индикаторов, можно использовать несколько ИС МС14499, как это показано на рис. 3.13. Рис. 3.12 i i i I I Точко i I Ццфро IV j Ццфро III I Цифра II I Цифро I j (DP) j 20-разряднаС регистр сдбига Заиделка Генератор j Буферный I У регистр I 4> <4> <4> Мультиплексора Декодер Vl сегментов Vcujiume/iu сегментоб Декодер иифр Усилители цифр Суктурная аема контроллера динамической индикации МС14499
|
© 2000 - 2024 ULTRASONEX-AMFODENT.RU.
Копирование материалов разрешено исключительно при условии цититирования. |