Ревич, Ю.В. Программирование микроконтроллеров AVR: от Arduino к ассемблеру
Глава 1 б. Некоторые Аrdиiпо-задачи на ассемблере 405 ки у цифр обычно отсутствуют, а восьмой бит второго разряда (разряда номер 1 - и только его) подключен к разделительному двоеточию. Другая особенность ТМ 1 637 - биты семисегментного кода, в отличие от обычного TWI, передаются по последовательному каналу младшим битом вперед, отчего код сегментов прихо дится «переворачивать» относительно показанного на рис . 9.2 в главе 9. ЗАМЕТКИ НА полях Некоторый свет на происхождение особенностей дисплея на основе ТМ1 637 пролива ет тот факт, что он может быть подключен к клавиатуре 2х8 кнопок и непосредственно индицировать на подключенных индикаторах число , набранное на клавиатуре, одно временно передавая его в контроллер. Очень вероятно, что изначально ТМ1 637 пред назначался для электронных замков или других подобных устройств, потому никто не старался приспособить его к стандартному 1 2 С-протоколу. Я ни разу не встречал его использования в этом качестве, но это , конечно, не значит, что такая необходимость не может возникнуть . Управление 4-разрядным цифровым индикатором иллюстрирует простая програм ма, которую можно найти в архиве по адресу, указанному во введении (файл 4-d ig it_display_test . asm ) . Модуль подключается к выводам РВО (CLK) и РВ 1 (DIO) - это крайние выводы 1 4 и 1 5 у ATmega8 (рис . 1 6 .2) и выводы 1 2 и 1 3 у АTtiny23 1 3 (рис . 1 6 .4). Код, рассчитанный на тактовую частоту 4 МГц, без изменений может быть перенесен в любой контроллер, имеющий порт В (для АTtiny23 1 3 нужно уда лить строки, относящиеся к регистру SPH, который в нем отсутствует). А при необ ходимости задействовать другие выводы и порты, надо только заменить номера битов порта CLK и DIO, а также названия регистров Portв и DDRB. Здесь тактовая частота может быть задана как от внутреннего генератора, так и от внешнего кварца. Программа выводит цифры «0 1 23 » и мигает двоеточием. В программе проиллюст рированы оба способа вывода цифр в разряды: подряд все четыре цифры с автоин крементом разрядов, или по одной в заданное знакоместо. В тексте программы раз мещен массив кодов основных знаков, которые могут понадобиться в наших зада чах: цифр 0-9, значка градуса (deg), знака минус, пробела (пустого места для очистки разряда), а также букв «Е» (error, ошибка), «Н» (humidity, влажность) и «Р» (pressure, давление). В этой программе массив не используется, но вы можете по смотреть его применение в более «навороченной» демопрограмме из того же архи ва (файл 4-digit_display_test_ful l . asm ) , где используются все эти символы. Добавление к символу на втором месте кода $ 8 0 (т. е. установка таким способом старшего бита) засвечивает двоеточие. Биты в коде символа тут, в отличие от МТ- 1 ОТ 1 1 , соответ ствуют порядку сегментов «IO> . . . «g» (см. рис . 9 .2), только - в сравнении с представленной там табличкой - идут справа налево . ЗАМЕТКИ НА полях Если вы думаете , что я корпел над рис. 9 . 2 , переворачивая биты в каждом символе для заполнения массива, то ошибаетесь - я просто скопировал кусок массива из файла Агdui по-библиотеки ТМ1367. срр, а потом добавил по образцу несколько тре бующихся мне символов. Мы тут вообще не делаем ничего такого, что бы выходило за рамки этой библиотеки , - только упрощаем и обходимся без излишних «наворотов» и посредников.
Made with FlippingBook
RkJQdWJsaXNoZXIy MTExODQxMg==