Цитата(Starsystem @ Apr 7 2007, 19:47)

[font=Tahoma]
Имеется микроконтролер AT89C51 писал программки на ассемблере, решил перейти на Си. Скажите с чего начать и если можно дать ссылочки на комплект с программами:
Размещение ссылочек на комплект с ворованным KEIL C51...
Цитата
1)Сама программа в чем писать
Очевидно, в текстовом редакторе. В том, который больше нравится. Разумеется не
в notepad, а в чём-то приспособленом для программных текстов. Лично я использую Vim.
Кому-то нравится multi-edit или emacs. Или в "IDE". Но приличных IDE сильно меньше,
чем разнообразных компиляторов. А microchip так вообще выбора не оставляет.
Редактор должен уметь подсветку синтаксиса, автодополнение, навигацию по исходникам,
"фолдинг" (свёртку строк текста), поиск по группе файлов, поиск и замену с использованием регулярных выражений, операции над блоками текста, множественные буферы обмена,
возможность разделения экрана на множество окон, закладки, отмену редактирования и другие функции присущие современным редакторам "для программиста"
Цитата
2)Компилятор чтобы из файла допустим test.c компилировал в test.hex
Компилятор -- это несколько обобщённое понятие, ПРОГРАММНЫЙ КОМПЛЕКС, если по-русски. Непосредственно компилятор, cc (c51) выполняет лишь функцию разбота опций командной строки и вызова соответствующих программ в соответствующем порядке (C-препроцессора, кодогенератора, ассемблера, компоновщика...) Впринципе, если бы компоновщик из состава KEIL C умел непосредственно генерировать hex было бы достаточно задания соответствующей
командной строки компилятору.
Проблема в том, что преобразованиями форматов компилятор, типично, не занимается. Для этого, обычно, используется отдельная программа. obj2hex у hitech, oh51 у keil, objcopy у FSF (GNU)... Из программы-компилятора (cc) не управляемая. Поэтому *.hex из *.c получается, обычно, как минимум в 2 этапа -- вначале появляется объектный файл (*.omf), потом из него генерируется hex.
Кроме того, часто более-менее серьёзный проект размещается более чем в одном файле,
для разных файлов применяются разные правила компиляции, отдельно задаётся список
аргументов (опций) для компоновщика... В итоге процесс сборки программы одной командой вряд ли может быть выражен. Для чего больше подходит запись правил или сценария сборки программы на каком-либо высокоуровневом ЯП. Впринципе, можно обойтись и *.bat-файлом, задав в нём полную последовательность сборки всех частей программы. При этом обнаружится пара неудобств: при запуске сценария будут пересобираться все модули программы (даже если они не изменялись), и правила сборки на столь примитивном языке будет записать сложно. Практически есть специализированные ЯП. Классикой является использование make, где сценарий сборки записываются не в императивном виде, в виде последовательности инструкций, а в виде правил преобразований одних типов файлов в других, make же самостоятельно решает какие из них применять. Может показаться излишне сложным, но на практике это сильно упрощает описание сценария сборки.
Цитата(Slug @ May 8 2007, 07:49)

К тем кто пользовал Silabs IDE + SDCC. Если можно то по-подробнее, какие есть недостатки?
У SDCC? Ну -- поделки финских студентов...
У Silabs IDE? Тоже вобщем ещё та поделка. С другой стороны, альтернативы
ей как ОТЛАДЧИКУ-МОНИТОРУ для работы с MCU фирмы silabs (cygnal) -- нет.
Т.е. просто нет. Но как редактор (IDE) её использовать никакого смысла нет.
Она просто нефункциональна. В итоге у меня пишется в Vim, собирается с
помощью make и keil c51, а отлаживается, если надо, в silabs IDE.
Цитата
Хочу попробовать вместо Keil. Жизнь заставляет идти в бедные джедаи

Вместо -- не получится. Это не более чем редактор с функцией вызова компилятора и встроенный монитор-отладчик. Собственно компилятор ещё нужен, как минимум.
Цитата(Kolia @ May 11 2007, 09:54)

1. Нет симулятора.
А симулятора C8051Fxxxx ВООБЩЕ НЕТ... (и в keil uvision тоже).
Цитата
2. Отсутствует галочка для генерирования hex.
Я даже догадываюсь почему. Получить hex из 4-х банок для загрузки в 128 килобайт FLASH нетривиально, мягко выражаясь. И, догадываюсь, тот же keil без применения рук по месту этого не умеет. hex -- он принципиально ограничен в 64кб. Да и зачем нужен hex? Эта IDE прямо из *.omf и символы берёт и программу зашивает. Разве что программатором ихним (flashutil) если. Тот только *.hex понимает. Я вобщем мучался с ним, с банками. Итог такой: сейчас программатором раз и навсегда загружается 2-кбайтный загрузчик (bootloader). Который через COM-порт принимает остальной код в виде зашифрованного *.bin. И с защитой программы всё в порядке, и с банками никаких мучений. *.bin получается из того же hex, hex из omf...
Цитата
3. В режима отладки регистры периферии отображаются как есть ( в кейле все наглядно

) приходится постоянно смотреть в datasheet.
В gdb оно тоже так же отображается. Разве, что можно конкретный бит подглядеть... Другое дело, что gdb умеет структуры, массивы и т.п. нормально показывать. Отладчик, да, противный, совсем. Скорей -- монитор. Дамп регистров выдаёт и ладно.