Перейти к содержанию
    

Доброго времени суток.

Я программист, учусь в аспирантуре, долго не мог найти работу по специальности и сейчас попал в один НИИ на испытательный срок.

Суть работы программирование микроконтроллеров семейства MCS-51 на Си.

До этого писал всю жизнь под винду, сейчас надо в кратчайшие сроки, а именно 2 недели получить базовые знания и навыки в новой для меня отрасли для успешного попадания в штат.

Задачи поставили следующие:

Ознакомиться с архитектурой данного семейства, найти бесплатный компилятор, научиться писать простейшие программы на СИ, например мигание светодиодов и т.д..

С первыми пунктами все более менее понятно.

Пока я остановился на следующем:

В качестве компилятора я выбрал SDCC

В качестве IDE Code::Blocks

В качестве симулятора выбрал EdSim51, но пока не успел опробовать, все еще впереди.

 

Далее куча вопросов. Что посоветуете делать дальше?

Прочел уже страниц 30 родной документации к компилятру, не впечатлило, как-то скудно описано и не очень понятно, может-быть из-за отсутствия опыта...

Какую литературу посоветуете желательно русскоязычную для начинающих, именно Си и именно данное семейство микроконтроллеров.

Может быть есть исходники простейшие, желательно с комментами...

 

Не побрезгаю любыми советами

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для 51-х лучше, наверное, работать в среде Keil (www.keil.com), с ограничением по памяти он бесплатный.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сташин Урусов - это книга для быстрого вкуривания архитектуры 51. Современная периферия - это уже по ДШ

 

Кейл корректный на 100%, про EdSim51 ничего не знаю. Если не хочется лишних рюшечек от кейловского компилера (SDCC, правда, тоже с особенностями, хоть и на GCC построен) и хочется удобной отладки - попробуйте в протеусе.

Изменено пользователем _Pasha

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Все бы хорошо, но начальству нужен полноценный бесплатный компилятор, вот почему свой выбор остановил на описанном выше.

Кстати один из МК, с которыми придется работать это 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 фалы?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть нюанс между Keil и SDCC. Они по разному упаковывают многобайтные переменные типа int. Если память не изменяет, SDCC - little-endian, Кeil - big-endian. Будете прикручивать заголовки - учтите.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть нюанс между Keil и SDCC. Они по разному упаковывают многобайтные переменные типа int. Если память не изменяет, SDCC - little-endian, Кeil - big-endian. Будете прикручивать заголовки - учтите.

Я правильно понял, что 8051.h ADuC84x.h не подойдут?

Плохо, что у SDCC нет своих заголовочных файлов

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На мой взгляд самая лучшая книга по MCS-51 это Фрунзе А. В. "Микроконтроллеры? Это же просто!"1,2,3 тома.

- Также рекомендую поискать "Микроконтроллеры серии 8051: практический подход." Магда Ю. С.

- Гладштейн М.А. "Микроконтроллеры смешанного сигнала C8051Fxxx фирмы Silicon Laboratories и их применение." - тоже MCS-51 но другой фирмы производителя.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо большое. С книгами по архитектуре МК проблем нет, я в НИИ работаю тут все полки подобными книгами завалены. Меня больше всего нюансы программирования на Си беспокоят, т.к. С программистов тут нет, а значит и спросить не у кого. Задача минимум научиться писать простые программы, найти компилятор и ознакомиться с архитектурой иначе не возьмут в штат

 

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

#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;

}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Запомните! Перед тем как писать программу для используемого МК(любого) - будь-то тело основной программы и обработчик прерывания - всегда сначала настраивается периферия. НУ может конечно такое случиться что вам подойдут все настройки по умолчанию - но это редкость, такого не встречал и не сталкивался. Вы скажите, на каком МК вы остановились? 51-й 51-му немного рознь(в плане периферии и как следствие его настройки ).

в той книге "Микроконтроллеры серии 8051: практический подход." Магда Ю. С. как-раз приводятся примеры написания программы на С с хорошим описанием и примерами.

 

По поводу выше приведенного кода - светодиод будет моргать. Но через N промежуток времени перестанет моргать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

По поводу выше приведенного кода - светодиод будет моргать. Но через N промежуток времени перестанет моргать.

А это уже зависит от стартапа - идет ли там переход на сброс после main() или нет :laughing:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

По поводу выше приведенного кода - светодиод будет моргать. Но через N промежуток времени перестанет моргать.

Этот код писал я, естественно перестанет, я же не зацикливал, моргнет 1000 раз и перестанет

 

Спасибо, что обратили внимание на книгу "Микроконтроллеры серии 8051: практический подход." Магда Ю.С. Уже скачал, думаю для начала будет достаточно, а если возьмут можно будет проштудировать и 4 тома Фрунзе

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

...Кейл корректный на 100%...

 

лет 5 назад давал порой бяку в хексе из азма. сразу скажу

1) не последняя версия кейла и

2) программа не хэйлохты мир - не 2 и даже не 10 кб на выходе.

 

лажался и тока в путь. обидно было, что ерунда плавающая кстати.

с выходом более свежей версии - актуальность померла, но осадочек остался :)

 

во всём остальном замечен не был. не плохой компилятор и не плохая среда.

 

 

По теме:

Помимо сей рекомендую копать азм. Если конечно же Вы хотите писать под 51 стоющие программы, а не только курсовые.

И ещё. Схемотехнику придёться копать. Без неё - так же, далеко не уедете.

 

(круглый)

Изменено пользователем kolobok0

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

По теме:

Еще по теме :) - не использовать 51 вообще, за двумя исключениями

1) 51 ядро является интегрированным с узкоспециализированной периферией.

2) Нужен контроллер ценой в полбакса и устраивает один из китайских чипов.

 

Если и использовать, то не использовать 'C'. Если использовать 'C', то уж по крайней мере не использовать "бесплатные" компиляторы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Еще по теме - не использовать 51 вообще, за двумя исключениями

1) 51 ядро является интегрированным с узкоспециализированной периферией.

2) Нужен контроллер ценой в полбакса и устраивает один из китайских чипов.

 

Если и использовать, то не использовать 'C'. Если использовать 'C', то уж по крайней мере не использовать "бесплатные" компиляторы.

 

1) Что использует НИИ, то использую я, выбор не от меня зависит

2)Опять же конторе нужен был программист Си, ну и надо будет все равно асм осваивать и использовать и то, и то

 

Чем Вам Си не угодил и чем не угодил SDCC?

 

Поставил кейл, разбираюсь с ним для начала подойдет, а когда придется писать что-то большее 2 кб, то и буду думать, что делать...

Вот и вопрос появился, в книге Магда Ю.С. прочел что можно интегрировать SDCC в кейл, при этом ограничения на размер кода исчезнут? И получается, что можно будет совершенно легально использовать среду кейл со всеми ее удобными наворотами и компилировать код любого размера с помощью SDCC?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1) Что использует НИИ, то использую я, выбор не от меня зависит

От Вас, как минимум, зависит выбор НИИ.

2)Опять же конторе нужен был программист Си, ну и надо будет все равно асм осваивать и использовать и то, и то

Это, как я понял, в этом НИИ спустя 30 лет после того, как узнали про "51" узнали о 'C' :(

Чем Вам Си не угодил и чем не угодил SDCC?

Си мне всем угодил, а вот 51 Си не угодил, это точно. По этой причине, если уж дурью маяться, то по крайней мере с максимально приличным инструметом, но не поделками под компиляторы.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...