кстати, как то давно постил макросы для MPLAB для выделения переменных
(«Телесистемы»: «Конференция «Микроконтроллеры и их применение»»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Romario 23 апреля 2003 г. 16:08
В ответ на: Если я потратил время, то пару слов скажу все же здесь(+) отправлено abivan 23 апреля 2003 г. 15:53


а теперь для 18 пика для 1 банка
__DAvail1 set 0x0100 ; first RAM location
__RAMTop1 set 0x01FF ; last RAM location


New1 macro Name,Lenght
NoExpand
if __DAvail1 > __RAMTop1
Error "Out of available RAM1 (bank 1) / File registers"
endif
Name equ __DAvail1
__DAvail1 = __DAvail1 + Lenght
if Lenght > 1
if __DAvail1 > (__RAMTop1+1)
Error Error "Out of available RAM (bank 1) / File registers"
endif
endif
Expand
endm

очень удобно и не надо за ними следить, достаточно
обозвать переменную в каком банке она сидит
например
New1 b1Variable,1
просто видя в ассемблерной проге
такую запись как

Variable1 equ 0x0104
Variable2 equ 0x0105
и т.д. всегда прихожу в недоумение -
в данном случае за памятью _сложно_ уследить в случае добаления/удаления или перемещения по банкам
переменных в процессе написание ПО. А попробовал я IAR компильнуть
простеший алгоритм для 18 и пришел в ужас. Тот алгоритм который у меня
не влез на 877 не влезет на С и в 18f452..ну если только на 18f8720
но это уже совсем другая история.

p.s. это я так...к слову.
а насчет статьи неплохо было бы добавить что она для "тощих"
контроллеров:) а то я бы наверное с ума сошел при кодировании
алгоритма держа в уме все ньансы приведенные ув.Bill'ом на своем любимом ColdFire. О том,что переведет
компилятор как то _не_ задумываешься лишь бы перевел правильно.

Составить ответ ||| Конференция ||| Архив

Ответы



Перейти к списку ответов ||| Конференция ||| Архив ||| Главная страница ||| Содержание

E-mail: info@telesys.ru