реклама на сайте
подробности

 
 
7 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> MCS-51, Первые шаги
bragol
сообщение Aug 15 2011, 11:45
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 15-08-11
Пользователь №: 66 729



Доброго времени суток.
Я программист, учусь в аспирантуре, долго не мог найти работу по специальности и сейчас попал в один НИИ на испытательный срок.
Суть работы программирование микроконтроллеров семейства MCS-51 на Си.
До этого писал всю жизнь под винду, сейчас надо в кратчайшие сроки, а именно 2 недели получить базовые знания и навыки в новой для меня отрасли для успешного попадания в штат.
Задачи поставили следующие:
Ознакомиться с архитектурой данного семейства, найти бесплатный компилятор, научиться писать простейшие программы на СИ, например мигание светодиодов и т.д..
С первыми пунктами все более менее понятно.
Пока я остановился на следующем:
В качестве компилятора я выбрал SDCC
В качестве IDE Code::Blocks
В качестве симулятора выбрал EdSim51, но пока не успел опробовать, все еще впереди.

Далее куча вопросов. Что посоветуете делать дальше?
Прочел уже страниц 30 родной документации к компилятру, не впечатлило, как-то скудно описано и не очень понятно, может-быть из-за отсутствия опыта...
Какую литературу посоветуете желательно русскоязычную для начинающих, именно Си и именно данное семейство микроконтроллеров.
Может быть есть исходники простейшие, желательно с комментами...

Не побрезгаю любыми советами
Go to the top of the page
 
+Quote Post
vladec
сообщение Aug 16 2011, 05:35
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 167
Регистрация: 3-10-05
Из: Москва
Пользователь №: 9 158



Для 51-х лучше, наверное, работать в среде Keil (www.keil.com), с ограничением по памяти он бесплатный.
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Aug 16 2011, 05:55
Сообщение #3


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



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

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

Сообщение отредактировал _Pasha - Aug 16 2011, 05:56
Go to the top of the page
 
+Quote Post
bragol
сообщение Aug 16 2011, 05:55
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 15-08-11
Пользователь №: 66 729



Все бы хорошо, но начальству нужен полноценный бесплатный компилятор, вот почему свой выбор остановил на описанном выше.
Кстати один из МК, с которыми придется работать это 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 фалы?
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Aug 16 2011, 06:03
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Есть нюанс между Keil и SDCC. Они по разному упаковывают многобайтные переменные типа int. Если память не изменяет, SDCC - little-endian, Кeil - big-endian. Будете прикручивать заголовки - учтите.
Go to the top of the page
 
+Quote Post
bragol
сообщение Aug 16 2011, 06:18
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 15-08-11
Пользователь №: 66 729



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

Я правильно понял, что 8051.h ADuC84x.h не подойдут?
Плохо, что у SDCC нет своих заголовочных файлов
Go to the top of the page
 
+Quote Post
zovsilab
сообщение Aug 16 2011, 06:28
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 17
Регистрация: 3-04-09
Из: УССР
Пользователь №: 47 140



На мой взгляд самая лучшая книга по MCS-51 это Фрунзе А. В. "Микроконтроллеры? Это же просто!"1,2,3 тома.
- Также рекомендую поискать "Микроконтроллеры серии 8051: практический подход." Магда Ю. С.
- Гладштейн М.А. "Микроконтроллеры смешанного сигнала C8051Fxxx фирмы Silicon Laboratories и их применение." - тоже MCS-51 но другой фирмы производителя.


--------------------
Многие вещи нам непонятны не потому, что наши понятия слабы,
а лишь потому, что сии вещи не входят в круг наших понятий.
Go to the top of the page
 
+Quote Post
bragol
сообщение Aug 16 2011, 06:37
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 15-08-11
Пользователь №: 66 729



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

вот например вот этот код заставит мигать светодиоды? И вообще какие особенности построения Си программы для МК, необходимы ли какие-то преднастройки частоты, мощности или чего-то еще?
Цитата
#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;
}
Go to the top of the page
 
+Quote Post
zovsilab
сообщение Aug 16 2011, 06:48
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 17
Регистрация: 3-04-09
Из: УССР
Пользователь №: 47 140



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

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


--------------------
Многие вещи нам непонятны не потому, что наши понятия слабы,
а лишь потому, что сии вещи не входят в круг наших понятий.
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Aug 16 2011, 06:52
Сообщение #10


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(zovsilab @ Aug 16 2011, 09:48) *
По поводу выше приведенного кода - светодиод будет моргать. Но через N промежуток времени перестанет моргать.

А это уже зависит от стартапа - идет ли там переход на сброс после main() или нет laughing.gif
Go to the top of the page
 
+Quote Post
bragol
сообщение Aug 16 2011, 07:47
Сообщение #11


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 15-08-11
Пользователь №: 66 729



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

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

Спасибо, что обратили внимание на книгу "Микроконтроллеры серии 8051: практический подход." Магда Ю.С. Уже скачал, думаю для начала будет достаточно, а если возьмут можно будет проштудировать и 4 тома Фрунзе
Go to the top of the page
 
+Quote Post
kolobok0
сообщение Aug 16 2011, 10:00
Сообщение #12


практикующий тех. волшебник
*****

Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417



Цитата(_Pasha @ Aug 16 2011, 09:55) *
...Кейл корректный на 100%...


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

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

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


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

(круглый)

Сообщение отредактировал kolobok0 - Aug 16 2011, 10:04
Go to the top of the page
 
+Quote Post
zltigo
сообщение Aug 16 2011, 12:08
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (kolobok0 @ Aug 16 2011, 12:00) *
По теме:

Еще по теме sm.gif - не использовать 51 вообще, за двумя исключениями
1) 51 ядро является интегрированным с узкоспециализированной периферией.
2) Нужен контроллер ценой в полбакса и устраивает один из китайских чипов.

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


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
bragol
сообщение Aug 16 2011, 12:25
Сообщение #14


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 15-08-11
Пользователь №: 66 729



Цитата
Еще по теме - не использовать 51 вообще, за двумя исключениями
1) 51 ядро является интегрированным с узкоспециализированной периферией.
2) Нужен контроллер ценой в полбакса и устраивает один из китайских чипов.

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


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

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

Поставил кейл, разбираюсь с ним для начала подойдет, а когда придется писать что-то большее 2 кб, то и буду думать, что делать...
Вот и вопрос появился, в книге Магда Ю.С. прочел что можно интегрировать SDCC в кейл, при этом ограничения на размер кода исчезнут? И получается, что можно будет совершенно легально использовать среду кейл со всеми ее удобными наворотами и компилировать код любого размера с помощью SDCC?
Go to the top of the page
 
+Quote Post
zltigo
сообщение Aug 16 2011, 12:32
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (bragol @ Aug 16 2011, 14:25) *
1) Что использует НИИ, то использую я, выбор не от меня зависит

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

Это, как я понял, в этом НИИ спустя 30 лет после того, как узнали про "51" узнали о 'C' sad.gif
QUOTE
Чем Вам Си не угодил и чем не угодил SDCC?

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



--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post

7 страниц V   1 2 3 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 27th July 2025 - 14:51
Рейтинг@Mail.ru


Страница сгенерированна за 0.01478 секунд с 7
ELECTRONIX ©2004-2016