…беру свои слова обратно.
Сегодня ко дню программиста на EasyElectronics был выложен замечательный пример использования возможностей C++ применительно к микроконтролерам. В общем, must read.
Сомневаюсь, что на «чистом» Си можно написать такой же эффективный код — точнее, «написать» можно, но используя какой-нибудь транслятор из C++ в C (и в итоге получив мешанину из хитрых макросов, недоступную для понимания человеком :) ).
Кто способен понять написанное там — с профессиональным праздником!
Йа фшоке ;)
Опасный в своей тупости код! Изменение битов портов не защищено критическими секциями. Получилось как всегда программирование ради примера. Никакой пракьтческой пользы.
А это и есть пример. Может, аффтар прерываниями не пользуется? А добавить их совсем несложно.
Примеры чисто учебные и совершенно неприспособленные к работе. Несложно исправить? Попробуйте (на основе приведенной методы) и, если не трудно, покажите насколько оптимально получилось в Асме. Скажем, на простом примере набора бит на портах AVR:
0-D.0,
1-D.1,
2-D.2,
3-G.0,
4-G.1,
5-E.2
А потом посмотрим как это сделать вручную или с помощью «мешанины хитроумных макросов».
Конечно, с позициями бит наврал, да и не договорились что куда писать, простите, предновогоднее утро :) Вот посмотрел реальный пример реального проекта.
0-D.0, <— давайте запишем сюда "0"
1-D.1, <— давайте запишем сюда "1"
2-E.0, <— давайте запишем сюда "0"
3-G.0, <— давайте запишем сюда "1"
4-G.1, <— давайте запишем сюда "0"
5-E.2 <— давайте запишем сюда "1"
PS. «Автор прерываниями не пользуется» — шедевр! Он предлагает и нам не пользоваться?