Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
13.03.2011, 14:14
|
|
Частый гость
Регистрация: 23.05.2009
Сообщений: 46
Сказал спасибо: 1
Сказали Спасибо 4 раз(а) в 2 сообщении(ях)
|
Re: Keil С51 - связка asm и С кода
Сообщение от OlegNZH
|
а почему? всё равно?
|
потому что не важно, где находится сам обработчик - ведь вызов происходит аппаратно, т.е. важно лишь правильно расположить ljmp xx в нужных ячейках. Короче С-код трогать не надо - а в asm-файле налепить CSEG AT 00ххH и org и скормить компоновщику....
|
|
|
|
13.03.2011, 14:19
|
|
Почётный гражданин KAZUS.RU
Регистрация: 28.02.2010
Сообщений: 2,297
Сказал спасибо: 53
Сказали Спасибо 461 раз(а) в 392 сообщении(ях)
|
Re: Keil С51 - связка asm и С кода
ВОТ! Вот и я про это - ручками!!!Но автоматизации- никакой!
тут интересная дискуссия была, старо правда...но на безрыбье..
http://forum.ru-board.com:9000/topic...=22728&start=0
Последний раз редактировалось OlegNZH; 13.03.2011 в 14:29.
|
|
|
|
13.03.2011, 14:28
|
|
Частый гость
Регистрация: 23.05.2009
Сообщений: 46
Сказал спасибо: 1
Сказали Спасибо 4 раз(а) в 2 сообщении(ях)
|
Re: Keil С51 - связка asm и С кода
да хрен с ней с автоматизацией - беда в другом ... весь код на ассемблере полностью рабочий, а переделка на С пока добавляет больше проблем, чем их решений
|
|
|
|
13.03.2011, 14:30
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
|
Re: Keil С51 - связка asm и С кода
Ну вы блин даёте...
Декларация, как обычно в хидере. Имя подпрограммы по правилам Си, а дальше #ASM или #include
|
|
|
|
13.03.2011, 14:37
|
|
Почётный гражданин KAZUS.RU
Регистрация: 28.02.2010
Сообщений: 2,297
Сказал спасибо: 53
Сказали Спасибо 461 раз(а) в 392 сообщении(ях)
|
Re: Keil С51 - связка asm и С кода
И куда она синклюдит?В хвосте- самое место...или ещё куда ...( в кейле - #pragma asm endasm) inсlude - хрен вставит, на нужное место (вставит-то где поставили, но не вектор)
Последний раз редактировалось OlegNZH; 13.03.2011 в 14:50.
|
|
|
|
13.03.2011, 14:38
|
|
Частый гость
Регистрация: 23.05.2009
Сообщений: 46
Сказал спасибо: 1
Сказали Спасибо 4 раз(а) в 2 сообщении(ях)
|
Re: Keil С51 - связка asm и С кода
Сообщение от omercury
|
Декларация, как обычно в хидере. Имя подпрограммы по правилам Си, а дальше #ASM или #include
|
asm-обработчик прерывания будет правильно работать даже, если С-программа не знает о его существовании - вызов происходит аппаратно, а не программно.
|
|
|
|
15.03.2011, 01:31
|
|
Частый гость
Регистрация: 23.05.2009
Сообщений: 46
Сказал спасибо: 1
Сказали Спасибо 4 раз(а) в 2 сообщении(ях)
|
Re: Keil С51 - связка asm и С кода
Дальнейшие поиски привели на сайт Keil. Для всякого "самоуправства" можно применить следующий подход. Создаем проект с С и asm файлами.В С-файле основная логика, в asm - обработчики прерываний и другие подпрограммы, критичные к времени исполнения. Далее копируем в папку с проектом из папки C51\LIB два файла - init.a51 и startup.a51. Урезаем их содержимое до необходимого минимума и подключаем к проекту. После описанных действий в вашем коде будет гораздо меньше всякого хлама ....
Чтобы склеить все это лезем в свойства проекта на вкладку BL51 Locate и в строке code пишем где размещаться сегментам ....
PS может это кому-нибудь поможет меньше наступать на грабли, а для меня, очевидно, их еще будет предостаточно
|
|
|
|
15.03.2011, 08:39
|
|
Почётный гражданин KAZUS.RU
Регистрация: 28.02.2010
Сообщений: 2,297
Сказал спасибо: 53
Сказали Спасибо 461 раз(а) в 392 сообщении(ях)
|
Re: Keil С51 - связка asm и С кода
Чем ненавистны такие рюшечки- вместо того, чтобы заниматься основной целью- отлаживать Логику Программы , приходится заниматься программированием- ради программирования ... что-то куда-то втыкать ..склеивать , а потом ждать - что-же линк вычудит... как Изделие будет работать- уже вторично.. как-то ...хм (глупо- обижу может кого) ....нелогично для эмбеддера, которому заказ требуется отдавать. ;(
|
|
|
|
15.03.2011, 10:16
|
|
Частый гость
Регистрация: 23.05.2009
Сообщений: 46
Сказал спасибо: 1
Сказали Спасибо 4 раз(а) в 2 сообщении(ях)
|
Re: Keil С51 - связка asm и С кода
Сообщение от OlegNZH
|
Чем ненавистны такие рюшечки- вместо того, чтобы заниматься основной целью- отлаживать Логику Программы , приходится заниматься программированием- ради программирования ... что-то куда-то втыкать ..склеивать , а потом ждать - что-же линк вычудит...
|
все начинается с того, что в отлаженный код, который исправно работает, надо что-то добавить. Если переписать всю логику на С, то в данный дивайс код не влезет и едва-ли будет работать с теми характеристиками, как раньше. На ассемблере все сделать гораздо проще и удобней, но вот вспоминать все "нюансы" спустя даже пару месяцев - уже тяжело. Хотя С и кроссплатформенный, но вот для каждого, проца ввиду особенностей последнего, эффективность кода весьма различна.
Сообщение от OlegNZH
|
... как Изделие будет работать- уже вторично..
|
изделие прекрасно работает и менять его заказчик не хочет. Собственно все "извращения" начались после просмотра листинга С-компилятора. Прерывания и другие критичные по времени участки программы, которые написаны на ассемблере - работают с запасом. На С такое уже не прокатит - компилятор заботливо вставляет столько хлама, что время исполнения увеличивается раза в 2 .... и больше
Собственно как еще один вариант - пишем все на С, потом чистим промежуточный *asm-файл и далее линкуем его, то же из разряда "фокусов"
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 21:25.
|
|