Чтение онлайн

на главную

Жанры

Как проектировать электронные схемы
Шрифт:

Использование 16-битных адресов

Восьмибитные микропроцессоры и микроконтроллеры по определению могут оперировать только байтами и не способны использовать более длинные слова. Расширение их возможностей обеспечивает так называемый индексный регистр, который в сочетании с накопителем позволяет осуществлять перемещение по устройству памяти, ограниченному 256 адресами. Иногда этот предел достигается очень быстро, когда необходимо найти одно значение или блок данных в большой таблице. Однако обычно в оперативной памяти существует свободная область. В нее можно записать подпрограмму, один из параметров

которой в нужный момент будет изменяться.

Применение команды Ida table в расширенном виде позволяет считывать содержимое любого адреса размером 16 бит. Для ее записи требуется три байта. Первый байт задает код команды (записанный в регистре А), в данном случае D6H на языке Motorola. Два других байта содержат собственно адрес (в первом указывается старший разряд адреса, во втором — младший или наоборот, согласно стандартам изготовителя). Подпрограмма считывания адреса, расположенного в ячейке с именем Rout, имеет следующую структуру:

Если адресуемая ячейка расположена в ОЗУ, необходимо предварительно заполнить соответствующую область памяти. Данная процедура выполняется следующими командами:

Ida #06

sta Rout

Ida #00

sta Rout+1

sta Rout+2

Ida #81

sta Rout+3

Эти команды записываются в программу инициализации устройства. В дальнейшем их использование сводится к вызову подпрограммы с нужными параметрами. Например, при считывании содержимого адреса 0178Н процедура будет иметь следующий вид:

Ida 01

sta Rout+1

Ida 78

sta Rout+2

jsr Rout

После возврата в основную программу регистр А содержит требуемые данные. При считывании таблицы нужно давать приращение сначала младшему разряду адреса, а затем, если нужно, старшему (при обнулении младшего разряда). Такую процедуру может существенно облегчить использование команды с переменным индексом типа Ida table + х.

Контроль за нажатием клавиши

В электронике при обработке операции нажатия на клавишу обычно принимаются меры против возможных сбоев, связанных с неполным (слишком кратковременным) нажатием. Аналогичный подход используется и в микропроцессорах.

Когда нажатие зафиксировано, запускается временная задержка порядка 20 мс, за которой следует новый тест состояния клавиши. Если она остается нажатой, выполняется соответствующая процедура и устройство «ждет», когда клавиша будет отпущена, чтобы продолжить выполнение программы. Если результат теста оказался противоположным, последующие действия зависят от того, какое нажатие предусмотрено для данной клавиши: длительное или кратковременное. В первом случае процедура, вызываемая нажатием, отменяется. Во втором случае она выполняется (по истечении времени задержки), после чего устанавливается режим ожидания нового нажатия.

В следующем примере по одной из линий коммуникационного порта (бит 0 порта А) выполняется считывание. При отсутствии сигнала линия имеет высокий потенциал. Предполагается, что считывание продолжается, пока не будет нажата клавиша и не выполнится подпрограмма, обеспечивающая заданное время задержки (20 мс).

Подпрограмма

подачи звуковых сигналов

Обычно звуковой сигнал привлекает внимание сильнее, чем зажигание светового индикатора, поэтому звук часто используют для сообщения о сбоях в работе системы или о других событиях.

Простой зуммер (без встроенной электроники) в сочетании с несложной подпрограммой дает возможность генерировать большой набор различных сигналов. Вместо зуммера можно применять динамик, но он сложнее в обращении и занимает больше места. Генератор обеспечивает изменение уровня логического сигнала со звуковой частотой.

Некоторая сложность состоит в обеспечении (при необходимости) постоянной длительности звукового сигнала наряду с изменением частоты следования импульсов. В таком случае нужно задать общее число генерируемых импульсов в зависимости от частоты. Эту проблему можно обойти с помощью специально созданной таблицы длительностей. Если генерируемый сигнал соответствует стандарту RS232, его можно передать другому устройству через один из портов. При этом кроме подачи звукового сигнала появляется возможность предупредить внешнее устройство информационной системы о сбое.

В приведенной ниже подпрограмме для создания временных задержек в очередной раз используется длительность выполнения команд. Информация хранится в регистрах А и X; выходной сигнал подается на линию, соответствующую биту 1 порта А. Его частота составляет приблизительно 1000 Гц при длительности 250 мс.

Формирование временной задержки

Во многих приложениях в процессе работы используются подпрограммы временной задержки. Выполнение заданной задержки — обычная задача для микропроцессора, обладающего скоростью вычислений, которая значительно превосходит скорость протекания многих физических явлений.

Можно привести много примеров использования этой подпрограммы: задание частоты мигания светодиода, счет времени в часах или генерация калиброванных по длительности импульсов для самых различных целей — от запуска серводвигателя и до создания последовательности двоичных слов. При этом можно задавать различные временные промежутки: от нескольких микросекунд до многих часов.

Однако во всех случаях применяется принцип повторения (нередко многократного) одной или нескольких команд, задающих калиброванную базовую задержку. Таким образом, чтобы обеспечить ожидание в течение 20 мс, нужно 20 раз выполнить подпрограмму задержки на 1 мс или 200 раз повторить подпрограмму задержки на 100 мкс.

Многие процессоры содержат на кристалле таймер, обычно построенный на каскадном соединении делителей частоты. На его вход подается сигнал тактовой частоты. Управление таймером может включать разнообразные опции, например установку заданного начального значения, автоматический запуск по сигналу прерывания в конце счета или при подаче внешнего управляющего сигнала и др. Специальные функции таймера предназначены в основном для фиксации отрезков относительно большой длительности и не всегда просты в реализации. Поэтому разработчику часто приходится искать другие способы для осуществления нужных временных задержек.

Поделиться:
Популярные книги

Свет во мраке

Михайлов Дем Алексеевич
8. Изгой
Фантастика:
фэнтези
7.30
рейтинг книги
Свет во мраке

Целитель. Книга вторая

Первухин Андрей Евгеньевич
2. Целитель
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Целитель. Книга вторая

Мое ускорение

Иванов Дмитрий
5. Девяностые
Фантастика:
попаданцы
альтернативная история
6.33
рейтинг книги
Мое ускорение

Инферно

Кретов Владимир Владимирович
2. Легенда
Фантастика:
фэнтези
8.57
рейтинг книги
Инферно

Тринадцатый

NikL
1. Видящий смерть
Фантастика:
фэнтези
попаданцы
аниме
6.80
рейтинг книги
Тринадцатый

Шведский стол

Ланцов Михаил Алексеевич
3. Сын Петра
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Шведский стол

Объединитель

Астахов Евгений Евгеньевич
8. Сопряжение
Фантастика:
боевая фантастика
постапокалипсис
рпг
5.00
рейтинг книги
Объединитель

Кровь и Пламя

Михайлов Дем Алексеевич
7. Изгой
Фантастика:
фэнтези
8.95
рейтинг книги
Кровь и Пламя

Герцогиня в ссылке

Нова Юлия
2. Магия стихий
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Герцогиня в ссылке

Столичный доктор. Том II

Вязовский Алексей
2. Столичный доктор
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Столичный доктор. Том II

Последний попаданец 11. Финал. Часть 1

Зубов Константин
11. Последний попаданец
Фантастика:
фэнтези
юмористическое фэнтези
рпг
5.00
рейтинг книги
Последний попаданец 11. Финал. Часть 1

Новый Рал

Северный Лис
1. Рал!
Фантастика:
фэнтези
попаданцы
5.70
рейтинг книги
Новый Рал

Горькие ягодки

Вайз Мариэлла
Любовные романы:
современные любовные романы
7.44
рейтинг книги
Горькие ягодки

Разведчик. Заброшенный в 43-й

Корчевский Юрий Григорьевич
Героическая фантастика
Фантастика:
боевая фантастика
попаданцы
альтернативная история
5.93
рейтинг книги
Разведчик. Заброшенный в 43-й