Главная » Микроконтроллеры
Призовой фонд
на май 2017 г.
1. Тестер компонентов MG328
Паяльник
2. Осциллограф DSO138
Паяльник
3. Регулируемый паяльник 60 Вт
Паяльник
4. 100 руб.
От пользователей

Предисловие

Приветствую всех любителей, специалистов и просто людей интересующихся микропроцессорной техникой!

За последние годы у меня скопилось большое количество самых разных наработок по программированию микроконтроллеров AVR. Немного сгруппировав уже готовый материал, я решил оформить его в виде одной цельной книги. В самом начале я не знал, что у меня получится, но теперь, последний раз просматривая материал, решил, что ее формат - это учебник/справочник по программированию на языке ассемблера в соотношении примерно 40/60 %. В книге освещено множество различных аспектов программирования и, так или иначе, затронуты все без исключения внутренние модули AVR. Но самое главное это то, что подавляющее большинство программ позаимствованы из реально работающих и проверенных временем программ.

Работа над книгой не вызвала у меня ни каких затруднений и прошла очень легко. Странно, но только теперь, когда пришло время написать предисловие, я не знаю что сказать… В доступной литературе про AVR написано очень много и мне не хотелось бы повторятся. Вопрос прямого сравнения микроконтроллеров различных типов я (не без усилий воли) также хочу обойти стороной. Тогда что же остается? Думаю объяснить, а почему же именно ассемблер?

Ведь всем понятно, что основным инструментом современного разработчика является, конечно, “Си”. Тем более, когда имеется в виду большой объем памяти и, тем более, если речь идет об AVR, где поддержка компиляторов языков высокого уровня была положена в основу архитектуры. При сравнении ассемблера и “Си”, лично у меня всегда возникают образы лопаты и экскаватора. Экскаватор выполняет огромные объемы однотипной работы, он быстро выроет любой котлован. Но есть места, куда экскаватор элементарно не может заехать, не говоря уже о небольших траншеях сложной формы. Вот здесь то и нужна лопата. Не стоит забывать также, что экскаватор не всегда имеется в наличии, а вот лопата всегда под рукой и она ничего не стоит.

Сейчас я хочу обратиться в первую очередь к тем, кто только начинает делать первые шаги и на кого, в целом, и рассчитана данная книга. Существует мнение, что к изучению микроконтроллеров можно подходить с позиций рассмотрения “черного ящика”. Я категорически против такой модели! Можно успешно заниматься программированием компьютерной техники и не знать ни одной команды процессора, но нельзя вести разработку на основе 8-разрядных микроконтроллеров досконально не зная их внутреннюю структуру. Именно поэтому в самом начале необходимо создать как минимум пару-тройку проектов на ассемблере и только потом уже переходить на “Си”. Обещаю, что в этом случае успеха вам не избежать.

И буквально несколько слов, о соглашениях принятых в этой книге. Все примеры, если это отдельно не оговорено в тексте, для единообразия привязаны к модели AVR ATmega8-16PU. Числовая система, принятая по умолчанию, – десятичная. Заголовки всех подпрограмм имеют однотипное оформление, где находится описание используемых регистров и других параметров. Подпрограммы  имеют подробные комментарии, начинающиеся с символа “;”. Метки, пользовательские имена регистров и ячеек памяти, а также мнемоники команд, директивы ассемблера и встроенные функции состоят из прописных букв. Числовые константы, имена регистров общего назначения, регистров ввода-вывода и их битов написаны заглавными буквами. Например:

;  	  Имена из прописных букв:
;  initial - метка
;  temp – пользовательское имя регистра
;  ldi, out, cbi, sbi – мнемоники команд
;  .equ, .def, .cseg, .org – директивы ассемблера
;  low(), high() – встроенные функции
;
;     Имена из заглавных букв:
;  LED, RAMEND – числовые константа
;  R16 – имя регистра общего назначения
;  SPH, SPL, PORTB, DDRB – регистры ввода-вывода
;  PB2 – бит регистра ввода-вывода


        .equ  LED  = PB2   
        .def  temp = R16  
            
        .cseg
        .org 0
        rjmp  initial 
        .......                                          

        .org 0x20
 initial: ldi   temp,low(RAMEND)                                 
        out   SPL,
        ldi   temp,high(RAMEND)                                
        out   SPH,
        cbi   PORTB,LED                                        
        sbi   DDRB,LED  
        .......  

Все программы на ассемблере могут быть оттранслированы в среде IDE AVR Studio любых версии, вплоть до самых ранних. Для разработки программного обеспечения высокого уровня был использован компилятор Delphi 2007 for Win32, но исходные тексты должны быть распознаны и более ранними версиями начиная с Delphi 6.

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

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

Искренне желаю всем счастья и успехов во всех ваших начинаниях!

Перейти к следующей части:

Теги:

Котов Игорь Юрьевич Опубликована: 2012 г. 0 0
Я собрал 0 0
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 0 Проголосовало: 0 чел.

Комментарии (2) | Я собрал (0) | Подписаться

0
Димас #
Много теории очень мало практики, лучше было бы наоборот
Ответить
0
Володя #
sbi   PORTD,PD2     ;настраиваем на ввод линию 2 порта D (альтернативная   
sbi   DDRD,PD2      ;функция INT0) и подключаем к ней внутренний резистор
А разве на ввод, это когда sbi DDRD? Это же единица в порт д, или нет?
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется напряжение?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

Программатор Pickit3
Программатор Pickit3
USB осциллограф DSO-2090 Набор начинающего радиолюбителя
вверх