bragol 0 15 августа, 2011 Опубликовано 15 августа, 2011 · Жалоба Доброго времени суток. Я программист, учусь в аспирантуре, долго не мог найти работу по специальности и сейчас попал в один НИИ на испытательный срок. Суть работы программирование микроконтроллеров семейства MCS-51 на Си. До этого писал всю жизнь под винду, сейчас надо в кратчайшие сроки, а именно 2 недели получить базовые знания и навыки в новой для меня отрасли для успешного попадания в штат. Задачи поставили следующие: Ознакомиться с архитектурой данного семейства, найти бесплатный компилятор, научиться писать простейшие программы на СИ, например мигание светодиодов и т.д.. С первыми пунктами все более менее понятно. Пока я остановился на следующем: В качестве компилятора я выбрал SDCC В качестве IDE Code::Blocks В качестве симулятора выбрал EdSim51, но пока не успел опробовать, все еще впереди. Далее куча вопросов. Что посоветуете делать дальше? Прочел уже страниц 30 родной документации к компилятру, не впечатлило, как-то скудно описано и не очень понятно, может-быть из-за отсутствия опыта... Какую литературу посоветуете желательно русскоязычную для начинающих, именно Си и именно данное семейство микроконтроллеров. Может быть есть исходники простейшие, желательно с комментами... Не побрезгаю любыми советами Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vladec 7 16 августа, 2011 Опубликовано 16 августа, 2011 · Жалоба Для 51-х лучше, наверное, работать в среде Keil (www.keil.com), с ограничением по памяти он бесплатный. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Pasha 0 16 августа, 2011 Опубликовано 16 августа, 2011 (изменено) · Жалоба Сташин Урусов - это книга для быстрого вкуривания архитектуры 51. Современная периферия - это уже по ДШ Кейл корректный на 100%, про EdSim51 ничего не знаю. Если не хочется лишних рюшечек от кейловского компилера (SDCC, правда, тоже с особенностями, хоть и на GCC построен) и хочется удобной отладки - попробуйте в протеусе. Изменено 16 августа, 2011 пользователем _Pasha Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bragol 0 16 августа, 2011 Опубликовано 16 августа, 2011 · Жалоба Все бы хорошо, но начальству нужен полноценный бесплатный компилятор, вот почему свой выбор остановил на описанном выше. Кстати один из МК, с которыми придется работать это ADuC812/814 в директории include у моего компилятора из более мене подходящих файлов есть только 8051.h ADuC84x.h, подключив эти заголовочные файлы можно будет писать для более старых МК, как 812 и 814? Или надо создать и подключить вот это: http://www.keil.com/dd/docs/c51/adi/aduc812.h http://www.keil.com/dd/docs/c51/adi/aduc814.h И будет ли этого достаточно для работы с этими МК или нужны еще и другие header фалы? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sergeeff 1 16 августа, 2011 Опубликовано 16 августа, 2011 · Жалоба Есть нюанс между Keil и SDCC. Они по разному упаковывают многобайтные переменные типа int. Если память не изменяет, SDCC - little-endian, Кeil - big-endian. Будете прикручивать заголовки - учтите. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bragol 0 16 августа, 2011 Опубликовано 16 августа, 2011 · Жалоба Есть нюанс между Keil и SDCC. Они по разному упаковывают многобайтные переменные типа int. Если память не изменяет, SDCC - little-endian, Кeil - big-endian. Будете прикручивать заголовки - учтите. Я правильно понял, что 8051.h ADuC84x.h не подойдут? Плохо, что у SDCC нет своих заголовочных файлов Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zovsilab 0 16 августа, 2011 Опубликовано 16 августа, 2011 · Жалоба На мой взгляд самая лучшая книга по MCS-51 это Фрунзе А. В. "Микроконтроллеры? Это же просто!"1,2,3 тома. - Также рекомендую поискать "Микроконтроллеры серии 8051: практический подход." Магда Ю. С. - Гладштейн М.А. "Микроконтроллеры смешанного сигнала C8051Fxxx фирмы Silicon Laboratories и их применение." - тоже MCS-51 но другой фирмы производителя. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bragol 0 16 августа, 2011 Опубликовано 16 августа, 2011 · Жалоба Спасибо большое. С книгами по архитектуре МК проблем нет, я в НИИ работаю тут все полки подобными книгами завалены. Меня больше всего нюансы программирования на Си беспокоят, т.к. С программистов тут нет, а значит и спросить не у кого. Задача минимум научиться писать простые программы, найти компилятор и ознакомиться с архитектурой иначе не возьмут в штат вот например вот этот код заставит мигать светодиоды? И вообще какие особенности построения Си программы для МК, необходимы ли какие-то преднастройки частоты, мощности или чего-то еще? #include <stdint.h> #include <stdbool.h> #include <8051.h> /*онопнанбюрэ мюохяюрэ йюкэйскърнп ян яберндхндюлх*/ void paus( int16_t ); void blinc(); void main() { int16_t some_size = 1000, i; P0 = 0; for( i = 0; i < some_size; ++i ) { blinc(); } } void blinc() { P0 = 1; paus( 100 ); P0 = 0; } void paus( int16_t p ) { int16_t i = 0; while( i <= p ) ++i; } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zovsilab 0 16 августа, 2011 Опубликовано 16 августа, 2011 · Жалоба Запомните! Перед тем как писать программу для используемого МК(любого) - будь-то тело основной программы и обработчик прерывания - всегда сначала настраивается периферия. НУ может конечно такое случиться что вам подойдут все настройки по умолчанию - но это редкость, такого не встречал и не сталкивался. Вы скажите, на каком МК вы остановились? 51-й 51-му немного рознь(в плане периферии и как следствие его настройки ). в той книге "Микроконтроллеры серии 8051: практический подход." Магда Ю. С. как-раз приводятся примеры написания программы на С с хорошим описанием и примерами. По поводу выше приведенного кода - светодиод будет моргать. Но через N промежуток времени перестанет моргать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Pasha 0 16 августа, 2011 Опубликовано 16 августа, 2011 · Жалоба По поводу выше приведенного кода - светодиод будет моргать. Но через N промежуток времени перестанет моргать. А это уже зависит от стартапа - идет ли там переход на сброс после main() или нет :laughing: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bragol 0 16 августа, 2011 Опубликовано 16 августа, 2011 · Жалоба По поводу выше приведенного кода - светодиод будет моргать. Но через N промежуток времени перестанет моргать. Этот код писал я, естественно перестанет, я же не зацикливал, моргнет 1000 раз и перестанет Спасибо, что обратили внимание на книгу "Микроконтроллеры серии 8051: практический подход." Магда Ю.С. Уже скачал, думаю для начала будет достаточно, а если возьмут можно будет проштудировать и 4 тома Фрунзе Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kolobok0 0 16 августа, 2011 Опубликовано 16 августа, 2011 (изменено) · Жалоба ...Кейл корректный на 100%... лет 5 назад давал порой бяку в хексе из азма. сразу скажу 1) не последняя версия кейла и 2) программа не хэйлохты мир - не 2 и даже не 10 кб на выходе. лажался и тока в путь. обидно было, что ерунда плавающая кстати. с выходом более свежей версии - актуальность померла, но осадочек остался :) во всём остальном замечен не был. не плохой компилятор и не плохая среда. По теме: Помимо сей рекомендую копать азм. Если конечно же Вы хотите писать под 51 стоющие программы, а не только курсовые. И ещё. Схемотехнику придёться копать. Без неё - так же, далеко не уедете. (круглый) Изменено 16 августа, 2011 пользователем kolobok0 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 0 16 августа, 2011 Опубликовано 16 августа, 2011 · Жалоба По теме: Еще по теме :) - не использовать 51 вообще, за двумя исключениями 1) 51 ядро является интегрированным с узкоспециализированной периферией. 2) Нужен контроллер ценой в полбакса и устраивает один из китайских чипов. Если и использовать, то не использовать 'C'. Если использовать 'C', то уж по крайней мере не использовать "бесплатные" компиляторы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bragol 0 16 августа, 2011 Опубликовано 16 августа, 2011 · Жалоба Еще по теме - не использовать 51 вообще, за двумя исключениями 1) 51 ядро является интегрированным с узкоспециализированной периферией. 2) Нужен контроллер ценой в полбакса и устраивает один из китайских чипов. Если и использовать, то не использовать 'C'. Если использовать 'C', то уж по крайней мере не использовать "бесплатные" компиляторы. 1) Что использует НИИ, то использую я, выбор не от меня зависит 2)Опять же конторе нужен был программист Си, ну и надо будет все равно асм осваивать и использовать и то, и то Чем Вам Си не угодил и чем не угодил SDCC? Поставил кейл, разбираюсь с ним для начала подойдет, а когда придется писать что-то большее 2 кб, то и буду думать, что делать... Вот и вопрос появился, в книге Магда Ю.С. прочел что можно интегрировать SDCC в кейл, при этом ограничения на размер кода исчезнут? И получается, что можно будет совершенно легально использовать среду кейл со всеми ее удобными наворотами и компилировать код любого размера с помощью SDCC? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 0 16 августа, 2011 Опубликовано 16 августа, 2011 · Жалоба 1) Что использует НИИ, то использую я, выбор не от меня зависит От Вас, как минимум, зависит выбор НИИ. 2)Опять же конторе нужен был программист Си, ну и надо будет все равно асм осваивать и использовать и то, и то Это, как я понял, в этом НИИ спустя 30 лет после того, как узнали про "51" узнали о 'C' :( Чем Вам Си не угодил и чем не угодил SDCC? Си мне всем угодил, а вот 51 Си не угодил, это точно. По этой причине, если уж дурью маяться, то по крайней мере с максимально приличным инструметом, но не поделками под компиляторы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться