Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
24.07.2007, 21:03
|
|
Почётный гражданин KAZUS.RU
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 106 раз(а) в 66 сообщении(ях)
|
Млин, тыщу раз эта тема полымалась. Все упирается в одно - цену вопроса. Код в 100 строчек на ассемблере и на си программист напишет приблизительно за одно и то же в ремя. Но это РАЗНЫЕ 100 строчек. И поэтому работодателю выгодно, чтобы его программист писал ему на Си. А не на асме. Больше напишет.
|
|
|
|
24.07.2007, 21:07
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
|
и когда уволится, другому програмеру легче будет в кракозябре разобраться.
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
|
|
|
|
24.07.2007, 21:30
|
|
Частый гость
Регистрация: 09.05.2006
Сообщений: 19
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Тема то про АСМ, а не про то, что лучше/хуже или нравится/ненравится. Для Си есть другие темы, там обсуждают только Си и ничего кроме Си, всем любителям АСМа сюда, а любителям Си туда. Кто хочет обсудить что лучше - создайте соответствующую тему и вперед и с песней
|
|
|
|
24.07.2007, 22:03
|
|
Почётный гражданин KAZUS.RU
Регистрация: 22.06.2004
Адрес: Харьков
Сообщений: 1,488
Сказал спасибо: 3,207
Сказали Спасибо 3,010 раз(а) в 686 сообщении(ях)
|
Сообщение от avr123-nm-ru
|
и когда уволится, другому програмеру легче будет в кракозябре разобраться.
|
Несколько лет назад появилась серия статей по устройствам на базе AT89C2051.
Автор Ридико Леонид Иванович.
Исходники на асме с отличными пояснениями в листинге.
Так эти исходники понятны даже тем, кто совсем "Войдите"...
Главное как человек делает работу.
Если делает кракозябры, то там и разбиратся нечего.
Внизу пример комментариев от Леонида Ивановича.
Подробный и понятный.
Новые разработки он делает на АВР.
-- Прилагается рисунок: --
![](https://kazus.ru/nuke/users_images/24072007/3843081.png)
|
|
|
|
24.07.2007, 22:27
|
|
Прописка
Регистрация: 08.06.2006
Сообщений: 215
Сказал спасибо: 4
Сказали Спасибо 3 раз(а) в 2 сообщении(ях)
|
Спасибо всем! Информации более чем достаточно, поможет не только мне.
Мне нужно было увидеть только структуру программ на ASM для AVR.
В программировании не новичок, на ЯВУ под PC программирую начиная с далёкого 1988г. Но для AVR в си есть отличия в структуре программ чем в си для PC.
В принципе все языки отличаются только структурой, синтаксисом, а в основном всё так же.
До этого для 51 писал на асемблере, вполне для всех задач хватало до недавнего времени. Начинал с него, когда AVR ещё не было, а переходишь когда уже совсем подожмёт, время на обучения нет и есть куча наработок для старой платформы. ![Весело](images/smilies/icon_laugh.gif) ))
Столкнулся с нехваткой ОЗУ. Для страничной записи 24С512 нужен буфер 128 байт.
Можно было бы писать побайтно, но ресурс 100 000 раз циклов записи, не важно побайтно или постранично. А записывать надо часто. Выход, писать постранично.
Хочу добавить, что объёма для памяти программ всегда хватало.
Кто знает ассемблер, тот точно знает, что происходит, контролирует каждый такт,
Компактней код уже не сделаешь, конечно если всё продуманно правильно. И ресурсы используешь экономно.
А в си, вызываешь функцию и не знаешь, как и что происходит.
Когда знаешь ассемблер, можно делать всё что угодно.
Для себя считаю что Си+ Ассемблер когда это необходимо.
Си- для быстроты и удобства написания, ассемблер- для гибкости, когда не можешь что-то реализовать на си.
Нужно правильно использовать ресурсы МК, а не так как учит avr123, к примеру в своём курсе предлагает использовать в качестве флага символьную переменную.
Нужен один бит, нет, будем использовать байт. А если флаг нужен не один, а десять, двадцать? Следуя его советам взять контроллер с большей памятью. Получается с пушки стрелять по воробьям. Стандартное написание в битовом выражении, предлагает использовать так как он это видит используя его хидеры, и т.д.
Тот кто начинает с нуля, следуя этим правилам сразу принимает неправильный стиль программирования.
Если неправ поправьте, ответы avr123 не комментирую.
|
|
|
|
25.07.2007, 00:54
|
|
Прописка
Регистрация: 16.04.2007
Сообщений: 146
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Цитата:
|
А в си, вызываешь функцию и не знаешь, как и что происходит
|
Ну не знаю как у вас, а я точно знаю, что происходит. Ибо происходит всегда одинаково и оптимально. Частенько смотрю, что компилятор там наделал. Кстати хороший способ поучить ассемблер. Могу поспорить с кем угодно, хоть плюйтесь, проект больше световых гирлянд за НОРМАЛЬНОЕ!!!! время не напишите оптимальное на асме, чем на С. Почему? Да потому что, компилятор в автомате делает одну очень геморройную работу, которую вручную заебё… делать. Он выносит одинаковые куски кода в подпрограммы. Откройте какой нибудь асм скомпилированный компилятором и убедитесь какое огромное количество этих кусков. Или сложные процедуры. Ну фанаты асма, давайте на скорось напишем программу деления два 32 битных числа с плавающей точкой. Я не против асм. Сам когдато писал всё на чистом асме. Просто очнитесь, где вы живёте. На дворе уже век роботов! Уже С считается асмом, а в почёте языки типа VisualBasik или Java которые всякими framevorke-ми пользуются. Я не против асма. Просто уже тошнит доказывать истину всяким упрямым… Я за С с асм вставками где необходима max скорость, и поверте таких случаев настолько мало (в смысле где лучше самому написать ибо компилятор сделает на N тактов больше) что не стоит заморачиватся на чистом asme.
Цитата:
|
Нужно правильно использовать ресурсы МК, а не так как учит avr123,
|
Ну 123 это особая личность. Ему много раз говорили что он использует, мягко говоря не совсем типичный стиль на своём сайте. Видимо с таким понятием как нейролингвистика он не знаком, но бог с ним это его проблемы. А что по поводу
Цитата:
|
предлагает использовать в качестве флага символьную переменную.
|
То на этот вопрос могу ответить только из своего опыта. Я практически всегда использую целый байт, т.к. работа с ним занимает меньше кода. У современных контроллеров всегда остаётся лишнее ОЗУ, поэтому это не накладно, а с битами я работаю, когда есть группы сходных битов, и их удобно с помощью битовых масок выдирать из байта.
__________________
Если хочешь вбить гвоздь, не ищи обходных путей, просто бери молоток и бей по этому чёртову гвоздю!
|
|
|
|
25.07.2007, 01:00
|
|
Почётный гражданин KAZUS.RU
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 106 раз(а) в 66 сообщении(ях)
|
Лично я считаю, что Вы не правы в отношению к avr123. Да, его курс можно обвинить (да, собственно, и обвиняют) -в поверхностности, в чем угодно,... в подробности не лезу - хотите, закиньте в поиск - да и сам я учился программированию не по его сайту - это было во времена "Очакова и покоренья Крыма". Но ! Человек, несмотря на раздражающе навязчивую рекламу своего сайта, действительно привлек десятки, если не сотни человек к миру микроконтроллеров. Все остальное - вторично...
Противопоставьте его сайту свой... Тогда и претензии будут к месту.
|
|
|
|
25.07.2007, 08:12
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
|
Сообщение от lsa
|
Подробный и понятный.
|
Вы правда считаете что:
Код:
|
MOV R3,#58
DJNZ R3,$ ; delay 120 us |
проще и НАГЛЯДНЕЙ чем:
А ![Вопрос](images/smilies/icon_question.gif) Ну тады - ОЙ !
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
|
|
|
|
25.07.2007, 09:40
|
|
Почётный гражданин KAZUS.RU
Регистрация: 22.06.2004
Адрес: Харьков
Сообщений: 1,488
Сказал спасибо: 3,207
Сказали Спасибо 3,010 раз(а) в 686 сообщении(ях)
|
Сообщение от avr123-nm-ru
|
Вы правда считаете что:
MOV R3,#58
DJNZ R3,$ ; delay 120 us
проще и НАГЛЯДНЕЙ чем:
delay_us(120);
А Ну тады - ОЙ !
|
Ну эт Вы придираетесь.
Для меня ясно, что по первой конструкции процессор будет стоять не месте и ничего не делать.
Со второй не все так просто.
Если б там было
delay_ms(120);
и еще включена собака,
то нормальный компилятор в цикл включил не просто стояние, а еще сброс сторожевого таймера.
А ненормальный не включит сброс - пройдет много времени пока эти бока выплывут и найдется причина несанционированного сброса.
|
|
|
|
25.07.2007, 09:41
|
|
Прописка
Регистрация: 08.06.2006
Сообщений: 215
Сказал спасибо: 4
Сказали Спасибо 3 раз(а) в 2 сообщении(ях)
|
Асемблер это букварь, в си пишешь фразами. Это образно.
В данном примере всё элементарно.
MOV R3,#58 ; (загрузить в регистр R3 десятичное значение 5 ![Горд собой](images/smilies/icon_dovl.gif)
DJNZ R3,$ ; delay 120 us (декремент и если R3 не равно 0 переход на метку $, если равно выполняем код ниже.) Даже без комментариев всё понятно.
Главное конечный результат.
Если это единичный экземпляр, можно код особо не вылизывать и взять контроллер подороже. (разработка программы обойдётся дешевле). А если коммерческий продукт и предполагается выпускать большое количество, нужна надёжность и быстродействие, то здесь лучше потратить больше времени на программу и взять контроллер подешевле. И при выпуске к примеру даже 1000 шт. разница будет очевидна.
Нет такого, что что-то одно лучше, другое хуже. Для достижения результата для каждого случая требуется или ассемблер, или си, или в совокупности вместе.
Каждый пишет так как ему удобно. И каждый останется при своём мнении.
У каждого свои задачи.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 00:14.
|
|