Ревич, Ю.В. Программирование микроконтроллеров AVR: от Arduino к ассемблеру

364 Часть 1/1. Практическое программирование микроконтроллеров АVR в SRAM с использованием директивы . byte, о котором упоминалось в главе 6. Можно сразу подготовить стандартный формат строки для последующего вывода, содержащий все необходимые символы, в котором потом по ходу дела менять только цифры. Строка должна содержать номера символов в соответствии с масси­ вом кодов под меткой Digits, размещенным в программной памяти (см. текст про­ граммы) . Для цифр от О до 9 эти номера совпадают со значением цифры, номера остальных символов (пробела, знака минус, значка градуса и некоторых букв) при­ ведены в программе. Если хотите дополнить массив своими символами (возможно отображение букв «А», «Ь», «S», «L» и т. п. ), то это можно сделать по образцу закомментированной в тексте программы таблицы, где указано соответствие битов и сегментов (см. также рис . 9.2) . Подготовленную строку вы выводите на дисплей указанной процедурой write_str . Процедура посылает необходимые команды установки режима и потом выводит припасенные десять символов из строки, находящейся в памяти. Если вы при фор­ мировании строки добавите к номеру символа число $ 8 0 (т. е . установите старший бит), то в процедуре write_str это расшифруется как необходимость добавить к выводимому знаку десятичную точку. а б Рис. 1 3.6. Результаты работы тестовой программы на индикаторе МТ- 1 ОТ1 1 . а - вывод 1 О установленных знаков, б - образец вывода отрицательной температуры с десятыми градуса и дополнением в виде символов «0С» Результаты работы тестовой программы с выводом 1 О установленных знаков пока­ заны на рис 1 3 .6, а. А на рис 1 3 .6, б вы видите образец вывода отрицательной тем­ пературы с десятыми градуса и дополнением в виде символов «0С» . Поскольку в любом обращении к дисплею здесь через интерфейс 1 2 С всегда выво­ дится одинаковое количество байтов, то подсчет времени, которое занимает вывод, упрощается. Процедура write_str выводит сначала 6 служебных байтов установки, а потом 1 О байтов символов из строки. Так как вывод одного байта через I 2 C со скоростью 1 00 кГц занимает около 1 00 мкс, то общее время будет равно примерно 1 ,6 мс. В следующей главе мы построим на основе MT- l OT l 1 экономичный термо­ метр на батарейках, где этот параметр пригодится для расчетов энергосбережения .

RkJQdWJsaXNoZXIy MTExODQxMg==