Radiohobby Forum

Интернет конференция журнала "Радиохобби"

Вы не вошли.

Объявление

Подписка на новые материалы от Николая Сухова - ролики, схемы, модели, онлайн конференции, консультации, чат.

Внимание! Почта в доменах Яндекс и Mail.ru не будет работать в профилях форумчан, из-за введённых правительством Украины санкций против этих компаний. Всем, кто ранее использовал подобную почту, для сохранения прежней функциональности форума, рекомендуется её поменять.

Огромная просьба, заливать тематические картинки и файлы в личные файловые каталоги на форуме, чтобы они не потерялись, со временем!

Ссылка "Загрузки" находится справа внизу формы набора сообщения.

Подписка на журнал "Радиохобби" прекращена. Подробности. Форум же - продолжает свою работу.

#1 25.07.2006 00:44:34

Матроскин
Ветеран
Откуда: Краснодар
Здесь с 06.02.2006
Сообщений: 2,022

MCS-51 для "чайников"

Предлагаю в этой ветке вести обсуждение различных вопросов, возникающих у людей, которые начинают "с нуля".
Заранее пригласим Леонида Ивановича (ака Liv, если кто не знает) выступать в качестве эксперта smile

Если кто считает, что 51-м пора на пенсию, милости просим сюда:http://www.atmel.com/dyn/products/param_table.asp?family_id=604&OrderBy=part_no&Direction=ASC

Кроме того, 51-м нынче не нужен программатор. Они тоже поддерживают ISP и прошиваются в схеме незабвенным Альтеровским БайтБластером.
По этому поводу тут:http://www.atmel.com/dyn/products/tools_card.asp?tool_id=2877. Здесь есть распиновка кабеля (стандартная в общем) и халявная софтина для прошивки.

У меня на данный момент  советов никаких, одни вопросы естессьно.
1) Что нужно, чтобы написанный мною код (допустим в текстовом редакторе) стал hex- или obj-файлом для прошивки МК?? Попрошу не смеяться, я в серьезном затруднении по этому поводу. Я накачал цельну кучу разных ассемблеров, и ни в одном толком разобраться не могу. Все они представляют собой некоторые программы, конвертирующие .txt в .hex или .obj, причем каждая со своими требованими, со своим синтаксисом команд и директив. Однако это не наглядно. Есть ли какая-нибудь среда для разработки со своим текстовым редактором, с подсветкой ошибок в самом тексте программы при ассемблировании и самое главное с доступным описанием? (Было б неплохо еще симулятор для отладки).
2) Как описать МК?? Т.е. как сказать асму, что я пишу например для AT89S2051 ?? Я слышал там надо указывать адреса толи каких-то регистров специальных функций, толи вообще всех регистров, портов и прочего. Хотелось бы четко уяснить, с чего надо начинать программу, чем надо заканчивать, и что в ней должно обязательно присутствовать. Может надо как-то обьявлять переменные или каким-то особым образом указывать начала подпрограмм...   
Вот. Хватит пока. Вы уж извините за идиотские вопросы, но у меня уже крышу сносит от обилия разрозненной информации по этому поводу. Хотелось бы все упорядочить и разложить по полочкам.


......There is someone in my head, but it's not me.......

Вне форума

#2 25.07.2006 09:46:05

Dmitry
Забанен
Откуда: Запорожье
Здесь с 03.02.2004
Сообщений: 3,105
Сайт

Re: MCS-51 для "чайников"

1. Компилятор. Можно попытаться поискать IDE (Integrated Development Enviropment) для МС51.

2. Зависит от того, какой компилятор...

ЗІ. Я 51-ми не занимался, больше врядли смогу что-то подсказать...


Почему когда мы нарушаем, нас штрафуют, а когда всё делаем правильно, с нас берут налоги?....

Вне форума

#3 25.07.2006 11:28:44

Maxim
Учаснег
Откуда: Донецк
Здесь с 04.10.2005
Сообщений: 726

Re: MCS-51 для "чайников"

1. Обычно программатору нужен именно hex-файл
2. Сам пользуюсь и могу рекомендовать IDE Projekt-52 от "Фитона". Рабочая версия (без ограничений) с симулятором свободно доступна у них на сайте www.phyton.ru/cp1251/renevals/8051.shtml. Нормальный интерфейс (русский/аглицкий), хорошая интеграция разных инструментов, возможность работы с разными ассемблерами (в комплекте идёт свой) - очень приятный коммерческий продукт. В самой среде найдёте ответы на все Ваши вопросы. Успехов..


Учите матчасть!

Вне форума

#4 25.07.2006 12:58:05

Liv
Ветеран
Откуда: Минск
Здесь с 08.02.2004
Сообщений: 1,233

Re: MCS-51 для "чайников"

Ядро MCS-51 было разработано в 1980 году. В настоящее время выпускается огромное количество клонов 51-го, такими фирмами как Atmel, Silabs, Philips, Winbond и другими. Ядро на свое время было хорошее, но современные процессоры с RISC-архитектурой его существенно превзошли. Основным недостатком ядра является его аккумуляторная архитектура и бедный набор операций с указателями. Сильной стороной ядра является очень удобный битовый процессор. Периферия на сегодняшний день выглядит бедной, за исключением, пожалуй, клонов от Silabs, но они дорогие. На сегодняшний день оптимальным выбором на изучение среди 8-разрядных микроконтроллеров является AVR. Они дешевые, производительные, на борту хорошая периферия (АЦП, таймеры с захватом/сравнением, ШИМ, EEPROM, WATCHDOG, BOD и т.д.).

Насчет прошивки. Atmel сейчас делает несколько моделей 51-х с последовательным программированием (они содержат букву S в названии). Ну а все Silab-овские изначально имели последовательное программирование. Атмеловские AT89Sxxx хоть и дешевые, но это тормоза (на порядок медленнее AVR) и имеют очень бедную периферию. Я их использую только при повторении старых разработок. Для программирования AT89Sxxx использую стандартный Altera ByteBlaster MV и программу spi.exe, которую можно взять здесь: spiprog.chat.ru/
Програматорам обычно нужен или двоичный файл (.bin), или файл в формате Intel HEX (.hex). Этот файл получается при трансляции программы. Трансляторы обычно имеют опцию получать на выходе тот или другой файл. Существует и конвертор bin <-> hex.

Для того, чтобы начать работать с MCS-51, нужна какая-то среда разработки. Есть очень хорошая среда Keil uVision, она даже лучше аналогичных сред для других микроконтроллеров. Версия 7.08 весит примерно 16 Мб. Среда позволяет работать на Си и Ассемблере, содержит симулятор для отладки. Но в Keil мне довелось поработать мало, так как пересел на AVR. А в давние времена для 51-х я использовал табличный ассемблер TASM (весит менее 1 Мб), подключив его к Borland C++ 3.0 под DOS, который использовался в качестве оболочки. Хотя можно использовать любой другой редактор, MultiEdit, например. Вообще, трансляторов для 51-х - море. Когда-то очень давно я даже сам писал транслятор Ассемблера для 48-х и 51-х, который работал на компьютерах на базе 8080 ("Орион", "Специалист").

51-е хороши тем, что большинство из них способны работать с внешней памятью программ, а некотрые для этого имеют отдельные порты (остальные порты остаются свободными). Это позволяет сделать самодельный эмулятор для 51-х, который, в отличие от симулятора, позволяет отлаживать программы прямо в "железе"!!! Я сделал такой эмулятор на базе SIEMENS SAB80C535 (хотя "урезанные" версии типа 2051 и 4051 можно эмулировать обычным 51-м). Посмотреть можно по ссылке: www.telesys.ru/projects/proj046/index.shtml

Почитать о программировании 51-х можно книгу Фрунзе "Микроконтроллеры? Это же просто!", или классику: Проектирование цифровых устройств на однокристальных микроконтроллерах. /В.В.Сташин, А.В.Урусов, О.Ф.Мологонцева. -М.: Энергоатомиздат, 1990, - 324 с. Если хорошо поискать, всё это можно скачать из Тырнета smile
Очень хороший курс: "Ваша первая программа для микроконтроллера Intel8051"
www.reis.ustu.ru/Docs/MPlab1.pdf
www.reis.ustu.ru/Docs/MPlab2.pdf
www.reis.ustu.ru/Docs/MPlab3.pdf
www.reis.ustu.ru/Docs/MPlab4.pdf

Что касается вопроса "Как описать МК". Все микроконтроллеры 51-го семейства имеют одинаковую систему команд. Отличаются они только регистрами специальных функций (SFR) - это адреса в пространстве данных МК, по которым можно "достучаться" до той или иной периферии (или ресурсов ядра). Для универсальных трансляторов, таких как TASM, файл описания SFR нужно писать самим. Он нужен для того, чтобы в программе мы могли обращаться к SFR по именам, а не по адресам. Какой набор SFR опишите, с таким процессором и будете работать. Компиляторы, специально "заточенные" под 51-е, сами знают наборы SFR, у них обычно есть специальная директива, которая позволяет выбрать нужный набор SFR для желаемого процессора.

Не знаю, что еще сказать. Эта тема погрузила меня в воспоминания о молодости smile

P.S. Совет: прочтите это: avr123.nm.ru/02.htm
сходите на сайт Atmel, скачайте AVR Studio и посмотрите вначале эту среду.
Если понравится, возможно, переименуем ветку в "AVR для "чайников" smile
Все-таки 21-й век на дворе...

Вне форума

#5 25.07.2006 14:10:01

Матроскин
Ветеран
Откуда: Краснодар
Здесь с 06.02.2006
Сообщений: 2,022

Re: MCS-51 для "чайников"

Maxim пишет:

1. Обычно программатору нужен именно hex-файл
2. Сам пользуюсь и могу рекомендовать IDE Projekt-52 от "Фитона". Рабочая версия (без ограничений) с симулятором свободно доступна у них на сайте www.phyton.ru/cp1251/renevals/8051.shtml. Нормальный интерфейс (русский/аглицкий), хорошая интеграция разных инструментов, возможность работы с разными ассемблерами (в комплекте идёт свой) - очень приятный коммерческий продукт. В самой среде найдёте ответы на все Ваши вопросы. Успехов..

Спасибо за ссылку!! Скачал, установил, работает. Честно прочитал почти весь хелп. Но вперед не продвинулся ни на миллиметр!! Ну, хоть убейте непонимаю и все!! Наверно это не для слабых умов...
Вот, к примеру, хочу я заставить AT89C2051 выполнить следующую малюсенькую программку (типа "Hello, World!!") smile :
В соотвествии с книгой "Микроконтроллеры? Это же просто!" пишу:
   
    .ORG    0             ;Нижеследующая команда с адреса 0
;
    LJMP    START       ;Переход на метку START
;
    .ORG    100H        ;нижеследующая команда с адреса 100Н
;
START:
    MOV     R2,#10     ;Заносим 10 в R2
    MOV     A,#5        ;Заносим в аккумулятор 5
    ADD     R2,A        ;прибавляем к R2 содержимое А
    MOV     R2,A        ;Возвращаем сумму в R2
    .END

Я создаю новый проект, набираю этот код, и при запуске получаю 5 ошибок "Error   #82 Incompatible segment allocation"
Ничего не понимаю....  В хелпе немало написано про сегменты, но как использовать, куда прикручивать, в какое место программы вставлять и главное что вставлять совершенно не ясно...
2 Liv: мож и правда стоит посмотреть AVR.. тока вот боюсь остануться теже вопросы.


......There is someone in my head, but it's not me.......

Вне форума

#6 25.07.2006 14:47:06

Maxim
Учаснег
Откуда: Донецк
Здесь с 04.10.2005
Сообщений: 726

Re: MCS-51 для "чайников"

Алексей пишет:

Я создаю новый проект, набираю этот код, и при запуске получаю 5 ошибок "Error   #82 Incompatible segment allocation"
Ничего не понимаю....  В хелпе немало написано про сегменты, но как использовать, куда прикручивать, в какое место программы вставлять и главное что вставлять совершенно не ясно...

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

.ASEG CodeSegment, code ; объявляется абсолютный сегмент в памяти программ
    .ORG    0             ;
;
    LJMP    START       ;
;
    .ORG    100H        ;
;
START:
    MOV     R2,#10     ;
    MOV     A,#5        ;
    ADD     A,R2        ; тут поменял местами операнды  - иначе компилятор ругаться будет
    MOV     R2,A        ;
.ENDSEG                 ; закрываем наш сегмент (можно новый создавать)
.END

Дополнительно прояснить вопрос можно в докуменнации Proj_52\4_30_38\MCA51\DOC\mca51.hlp

Кстати, если по совету Liv решите осваивать AVR-ы, то за средОй можно сходить опять-таки на Фитон, преемственность 98% (как и для PIC-ов и прочих)
Удачи..


Учите матчасть!

Вне форума

#7 25.07.2006 15:05:20

Liv
Ветеран
Откуда: Минск
Здесь с 08.02.2004
Сообщений: 1,233

Re: MCS-51 для "чайников"

Алексей пишет:

2 Liv: мож и правда стоит посмотреть AVR.. тока вот боюсь остануться теже вопросы.

В начале возникают одинаковые вопросы по любой из платформ. Но мне легче было бы отвечать на вопросы по AVR, с ними постоянно работаю, а MCS-51 для меня уже история, даже никакой IDE для них сейчас не стоит. И Вам, думаю, было бы полезнее изучать более современную архитектуру.

Вне форума

#8 25.07.2006 16:05:39

Матроскин
Ветеран
Откуда: Краснодар
Здесь с 06.02.2006
Сообщений: 2,022

Re: MCS-51 для "чайников"

2 Maxim ок! Спасибо!!  Я сам бы не догадался никогда. Хелп я смотрел и все это читал, тока зачем нужно не понял. Я думал это опционально. Можно делать а можно нет. Попробую.

2 Liv: Лазил на атмел, смотрел про AVR Studio. Есть одна проблема. Пока ни как не могу скачать 45 МБ. Никакой карточки не хватит. У меня 7 метров качается минут сорок. Придется наверно на работе у шефа трафик просить. Но тут не знаю получиться или нет. Так что пока ой.


......There is someone in my head, but it's not me.......

Вне форума

#9 25.07.2006 16:15:37

Maxim
Учаснег
Откуда: Донецк
Здесь с 04.10.2005
Сообщений: 726

Re: MCS-51 для "чайников"

Алексей пишет:

2 Liv: Лазил на атмел, смотрел про AVR Studio. Есть одна проблема. Пока ни как не могу скачать 45 МБ. Никакой карточки не хватит. У меня 7 метров качается минут сорок. Придется наверно на работе у шефа трафик просить. Но тут не знаю получиться или нет. Так что пока ой.

Попробуйте взять среду на Фитоне..


Учите матчасть!

Вне форума

#10 25.07.2006 16:22:58

Jaxon
радиолюбовник
Откуда: Николаев
Здесь с 22.01.2004
Сообщений: 3,018

Re: MCS-51 для "чайников"

Можно начать как я.
ассм мне было влом учить, поэтому я поставил С, подключил его к АВР студио.
и пишу проги на С....
редко чета вставляю на ассме.- ума мало.

Вне форума

Сейчас в этой теме пользователей: 0, гостей: 1
[Bot] ClaudeBot

Подвал форума

Под управлением FluxBB
Модифицировал Visman

[ Сгенерировано за 0.040 сек, 8 запросов выполнено - Использовано памяти: 642.62 Кбайт (Пик: 692.98 Кбайт) ]