Программирование микропроцессорных систем

Методическое пособие - Компьютеры, программирование

Другие методички по предмету Компьютеры, программирование

°ть в любой из трех описанных выше ролей: либо как делители, либо как счетчики, либо как таймеры.

Существуют и специализированные микросхемы-таймеры. Например, микросхема К580ВИ53 - это универсальный программируемый трехканальный счетчик-таймер. Такая микросхема имеет множество режимов работы, которые должны выбираться программным путем при помощи микропроцессора.

Современные микроконтроллеры, или, как их еще называют, однокристальные микроЭВМ, обычно всегда содержат в своем составе один или несколько встроенных таймеров-счетчиков.

Пример. Микроконтроллеры серии AVR имеют от одного (в микросхеме AT90S1200) до четырех (в микросхеме ATmegal28) встроенных таймеров/счетчиков. Это позволяет при формировании временных интервалов обойтись без внешних таймеров.

 

1.9 Дешифраторы

 

Устройство и принцип действия дешифратора

Еще один элемент, без которого не обойтись при изучении микропроцессорной техники, - это дешифратор цифровых сигналов. Существует много разных типов дешифраторов. В общем случае дешифратор - это устройство, преобразующее цифровой сигнал, представленный в какой-либо одной из кодировок, в другую, незакодированную форму. Нас в данном случае будет интересовать классический линейный дешифратор. Схемное обозначение одного из вариантов такого дешифратора приведено на рис. 8.1. Описываемый дешифратор имеет три входа данных DO, D1 и D2, вход выбора микросхемы CS, а также восемь выходов, обозначенных цифрами от 0 до 7.

Логика работы микросхемы такова: на входы данных микросхемы подается цифровой код. В данном случае - это любое трехразрядное двоичное число. Смысл работы такого дешифратора - выдать активный сигнал только на одном из своих выходов. На том выходе, номер которого соответствует двоичному коду, присутствующему на его входах D0-D2.

В большинстве современных дешифраторов активным сигналом на выходе считается низкий логический уровень. Это значит, что при поступлении на входы D0-D1 сигнала 0002, на выходе 0 будет логический ноль, а на всех остальных выходах - единица.

 

 

 

2. Лабораторная № 2

 

.1 Общие положения

 

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

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

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

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

В качестве слов в языке программирования выступают:

команды (операторы);

специальные управляющие слова;

названия регистров;

числовые выражения.

Главная задача языка - однозначно описать последовательность действий, которую должен выполнить ваш микроконтроллер. В то же время язык должен быть удобен и понятен человеку.

В процессе создания программы программист просто пишет ее текст на компьютере точно так же, как он пишет любой другой текст. Затем программист запускает специальную программу - транслятор.

Определение. Транслятор - это специальная программа, которая переводит текст, написанный программистом, в машинные коды, то есть в форму, понятную для микроконтроллера.

Написанный программистом текст программы называется исходным или объектным кодом. Код, полученный в результате трансляции, называется результирующим или машинным кодом. Именно этот код записывается в программную память микроконтроллера. Для записи результирующего кода в программную память применяются специальные устройства - программаторы.

Все языки программирования делятся на две группы: языки низкого уровня (машиноориентированные); языки высокого уровня.

Типичным примером машиноориентированного языка программирования является язык Ассемблер. Этот язык максимально приближен к системе команд микроконтроллера. Каждый оператор этого языка - это, по сути, словесное название какой-либо конкретной команды.

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

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

В недавнем прошлом язык Ассемблер был единственным языком программирования для микроконтроллеров. Только он позволял эффективно использовать скудные ресурсы самых первых микросхем. Однако в настоящее время, ког