Я долго думал, как бы получше завершить начатый мною цикл. У меня было несколько вариантов. Сначала я планировал написать очередную рядовую программу, потом хотел сотворить какой-то большой и фееричный проект. Но в итоге остановился на том, что собственно вы сейчас и прочтете.
А решил я на этот раз заняться просто разговорами без всяких программ. Будем считать, что мы одолели хоть и маленькую, но вершину и можем теперь немного передохнуть и расслабиться. Все дело в том, что возможности используемой нами платы уже почти полностью исчерпаны, а высасывать из пальца никому не нужные задачи тоже неохота.
На протяжении всех девяти шагов я потихоньку сообщал вам новые директивы ассемблера, описывал необходимые нам команды. Настало время узнать вам ВСЁ. На самом деле полное описание всех команд и директив ассемблера с примерами занимает всего несколько страниц текста. Чтобы вам долго не искать это описание на просторах интернета, я выкладываю его здесь. Вы можете ознакомиться с ним, перейдя по
этой ссылке.
Возможно, оно покажется вам слишком сокращенным либо наоборот более понятным, чем мои многословные и пространные описания - тут дело зависит от субъективного восприятия.
Давайте же оглянемся назад и подытожим то, что мы уже изучили за это время.
Во-первых, несмотря на мое изначальное намерение не останавливаться на рассмотрении модулей и узлов контроллера, я не удержался и довольно немалую часть времени уделил описанию работы с ними. Хочу заметить, что все вышесказанное на 100% соответствует только контроллеру ATtiny13. В других контроллерах названия регистров или расположение битов в них может отличаться, поэтому перед использованием их необходимо свериться либо с даташитом, либо с рекомендованными мною книгами Евстифеева.
Во-вторых, мы рассмотрели довольно большое количество команд ассемблера, которых будет достаточно в 70-80 процентах случаев для написания программ.
Команды эти охватывают:
- работу с битами регистров ввода-вывода (cbi, sbi, cbis, sbis, sei);
- работу с битами регистров общего назначения (clr, ser, sbrc, sbrs);
- обмен информацией между РВВ и РОН (mov, in, out);
- безусловный и условный переход (rjmp, rcall, ret, reti; brcc, brlo, brsh, brne, breq);
- логические и математические операции между РОН (eor, lsl, inc, dec, add, adc, sub, sbc, cp, cpc);
- логические и математические операции между РОН и константам (ldi, subi, sbci, cpi);
- чтение данных из памяти программ (lpm).
Не рассмотренными оказались команды косвенного чтения и записи в память данных, команды установки и сброса битов статусного регистра, большинство команд логических операций. С ними вы можете ознакомиться в упомянутом выше описании.
Там же вы можете прочитать и об оставленных за пределами нашего внимания директивах ассемблера.
Что же ожидает нас в будущем? Если данный цикл покажется интересным читателям, у меня уже есть задумки по его продолжению, но уже на другом контроллере (ATmega8) и с рассмотрением более продвинутых алгоритмов, таких как: динамическая индикация с использованием 7-сегментых светодиодных индикаторов, работа с цифровыми интерфейсами 1-wire, I2C, SPI, UART, работа с ЖК-дисплеем. Кроме того, есть задумка написать похожие циклы статйе, только для контроллеров PIC и MSP430.
Поэтому, не ленитесь оставлять комментарии, задавать вопросы и писать замечания - от этого будет зависеть, появятся ли последующие статьи или нет, потому как тратить уйму и без того краткого свободного времени на написание никому не нужных статей как-то печально.
Но не будем слишком пессимистичными. Если хоть кому-то этот цикл помог приобщиться к программированию микроконтроллеров, значит моя цель достигнута и время потрачено не зря.
Вот, собственно, и все, что я хотел поведать в этот раз. Что-то я сегодня немногословен вопреки обыкновению, но отсутствие обратной связи как-то сильно поубавило энтузиазма.
Желаю успехов в конструкторской деятельности!
До скорой, надеюсь, встречи!