Ревич, Ю.В. Программирование микроконтроллеров AVR: от Arduino к ассемблеру
ГЛ А В А 6 Основы программирован ия МК AVR В ассемблере, как ни в каком другом языке программирования, важно различать основу - средства, которые абсолютно необходимы для создания работающей программы, - от всяческих надстроек, призванных сделать жизнь программиста удобнее . Вряд ли вас сочтут грамотным программистом, если вы не знаете, что такое макросы и как их употреблять, но для электронщика это совершенно нор мально. Поскольку мы тут не пишем учебник по языку ассемблера, а всего только показываем элементарные способы его применения в приложении к реальным за дачам, то в дальнейшем изложении мы постараемся ограничиваться минимумом необходимых средств, а об остальном упоминать лишь для общего образования . Концептуальная особенность, отличающая ассемблерные программы, которые вы встретите в этой книге, от программ для АVR, написанных на любом языке высо кого уровня, заключается в том, что мы здесь будем пользоваться памятью данных SRAM (аналогом оперативной памяти обычного микропроцессора) только в от дельных случаях, строго по необходимости. Как мы уже знаем, в ядре АVR присут ствуют 32 байтовых регистра общего назначения, которые мы преимущественно и станем использовать для хранения текущих переменных. Этим мы, во-первых, из бавляемся от многочисленных операций чтения/записи в память, которые занимают много процессорного времени, во-вторых, делаем программу более компактной и читаемой. Уменьшается также опасность залезть в область стека или, наоборот, в область регистров РВВ и РОИ, потому что они тоже размещаются в линейном пространстве общей памяти, и запись в них может осуществляться теми же коман дами, что и в область памяти данных SRAМ. А память данных можно использовать строго по ее назначению, вытекающему из названия : для хранения именно оперативных данных, т. е. величин, которые в про цессе выполнения программы могут меняться, но достаточно редко (например, зна чение даты: числа, дня недели, месяца и года в часах реального времени). Хранить в оперативной памяти неизменные константы - варварство даже в среде Arduino, причем среди программистов, если судить по примерам на официальном сайте arduino.cc , это весьма распространенное заболевание. Константы, которые вообще не изменяются, нужно хранить вместе с программой, для чего любой язык дает достаточно возможностей, - примером могут служить адреса регистров конкрет ного контроллера, хранящиеся в отдельном подключаемом include-фaйлe. Констан-
Made with FlippingBook
RkJQdWJsaXNoZXIy MTExODQxMg==