Перейти к содержанию

oleg st

Members
  • Постов

    26
  • Зарегистрирован

  • Посещение

Весь контент oleg st

  1. 4.19 глючноватая, писал где-то список багов, которые нашел, а 7-ка тоже с глюками, но привык
  2. согласен, наверное уже ничего и не будет ((
  3. плохо, что аврасм в студии застрял 90х, а этот AVR-AS в комплект WinAVR весьма неплох. на нем можно делать суперские вещи
  4. ну макросы это не панацея, но штука полезная. тоже про стековые вспомнил для авр: pushw Z; - сохр. рег. пару в стеке (r0...r30) popw Z; извлеч
  5. Когда расширяется инструментарий, уже видишь другие подходы написания, алго да и макросы помогают. Век живи век учись ))
  6. да, мы программировали, как могли =) теплые ламповые времена...
  7. я писал под Z80, на телевизоре горизонт 202 в качестве монитора - это было сурово )))
  8. эту проблему я решил и выложил макросы, кто хочет могут пользоваться. спасибо за помощь всем, кто помогал. в самом ассемблере менять ничего не надо, нужно изменить редактор, добавить и улучшить директивы, предпроцессорные команды, функции и тп, по сути, сделать ассемблер V3
  9. много чего можно, тут нет смысла перечислять, в 14 году послал письмо атмелу с улучшениями, так они за это 200$ прислали, но так ничего и не поменялось - стало хуже!
  10. спасибо ))), будет думать, но походу, развитие асма застряло в 90х и тут ничего не сделаешь.
  11. выяснил, что макросы перехода не работают вложенные в другой макрос, при условии, что переход тоже в макросе! упрощенный пример: .macro RJPLO brlo @0 .endm .macro TEST_JP RJPLO sss sss: nop .endm TEST_JP Error Undefined symbol: sss есть идеи?
  12. я перешел на си, писал выше, но на асме пишу под мелкие мк типа тини13/10, и благодаря этому переходу мой асм стал лучше
  13. этим модулем нельзя просто так взять и передать/принять любой сигнал. нужно кодировать сигнал а-ля PWM. скачайте пдф на HCS200, делать нужно так как там написано. если использовать чинский пульт, то нужно писать хитрый алго, который будет синхронизироваться с каждым битом и вычислять % соотношения дутицикла. потому, как при удержании кнопки и передачи сигнала, проседает питание и плывет частота в реальном времени чуть ли не в несколько раз (у меня был похожий пульт от сиги чинской).
  14. Я не говорил, что он уменьшает код, он уменьшает сам текст, это позволяет лучше воспринимать программу. Обычно простые замещалки пишу редко, как правило что-то проверяю ИФами и макрос становится уже типа умным. Это и есть макроассемблер, а непросто асм. з.ы. метки нужно ставить всегда ! ))
  15. Разбирать портянку час, если ее можно описать 5 строками, и решить проблему за 5 мин, взять за это котлету - лучшее удовлетворение , что можно получить. Человек капал поле всю жизнь, а ему дают трактор для работы, а он, - "не, ерунда, лучше с лопатой" Макросы и нужны, чтоб лопатой не махать. Этот инструмент встроен в среду, и не пользоваться им неумно. На дядю нужно быстро писать и прострации не приемлемы, а писать нужно, не то что макросами, а целыми блоками и не своими )))
  16. так эти макросы и нужны, чтоб меньше было ошибок и не зависать на час за монитором в прострации ))
  17. да, можно, и будет подставляться jmp короче.. суть вы уловили ))
  18. ну так макрос это и делает автоматом .macro RJEQ ; Jump == Skip != .if jump_calc breq @0 .else brne lop rjmp @0 lop: .endif .endm
  19. зачем писать 2 строки, когда можно одну? у меня 75% заменено макросами, по опыту скажу, что скорость написания и понимания кода возросла в разы. почти си )) вот еще: STSW ram_addr,reg; любые регистровые пары(WORD) от r0...r30 грузит в ОЗУ или РСН (WORD) LDSW reg,ram_addr; ОЗУ или РСН (WORD) грузит в любые регистровые пары(WORD) от r0...r30 РСН или ОЗУ тоже автоматом. на классике: lds r16,ram_addr lds r17,ram_addr+1 еще сравнение 16-битной константы с ОЗУ 16бит, выглядит так: CPMIW ram_addr,2500; сравнение RJSH loop; переход по >= мне лично так удобно, я просто устал от лапной писанины )))
  20. с вами согласен полностью, я сам на асме пишут давно и перешел на С, как и вы, и спецом придумал кучу С-подобных макросов, не для того чтобы писать дальше на асме, а для ускорения написания и спец задач для таких МК типа тини13,10,24. Хотя, в эпоху стм даже эти тини уже не актуальны, но мы в теме авр, так что это может кому и пригодится. Чтобы макрос не увеличивал выхлоп, лучше его использовать как инструмент автоматизации и передачи параметров.
  21. Смысл макросов заменить и расширить стандартные условные переходы breq и т.п. Эти переходы ограничены относительными прыжками от -63 до +64, если нужно прыгнуть дальше, то эти макросы вам помогут, при дальнем прыжке будет подставлен rjmp, пример: .org 200 cp r16,r17 RJEQ loop1; Jump == Skip != <<-- здесь будет обычный breq loop1 cp r18,r19 RJEQ loop2; Jump == Skip != <<-- тут макрос автоматически подставит конструкцию с дальним переходом brne + rjmp .org 250 loop1: nop .org 1000 loop2: nop названия макросов писал в стиле авр асма, но вы можете придумать свои удобные названия.
  22. может кому пригодится )) ; -- умные условные переходы -- #define jump_calc int(abs(PC-@0)) <= int(64-((PC-@0)<0));условие вычисления прыжка -63...+64 = True .macro RJEQ ; Jump == Skip != .if jump_calc breq @0 .else brne lop rjmp @0 lop: .endif .endm .macro RJNE ; Jump != Skip == .if jump_calc brne @0 .else breq lop rjmp @0 lop: .endif .endm .macro RJHI ; Jump > Skip <= .if jump_calc breq L0 brsh @0 L0: .else brlo lop breq lop rjmp @0 lop: .endif .endm .macro RJSH ; Jump >= Skip < .if jump_calc brsh @0 .else brlo lop rjmp @0 lop: .endif .endm .macro RJLO ; Jump < Skip >= .if jump_calc brlo @0 .else brsh lop rjmp @0 lop: .endif .endm .macro RJSL ; Jump <= Skip > .if jump_calc breq @0 brlo @0 .else breq lup brsh lop lup: rjmp @0 lop: .endif .endm
×
×
  • Создать...