var1_0, var1_1, var1_2 - одна трёхбайтная переменная (в регистрах), var2_0, var2_1, var2_2 - вторая. Сравнение будет выглядеть очень просто: cp var1_0,var2_0 cpc var1_1,var2_1 cpc var1_2,var2_2 ну а дальше в зависимости от флага C переход на метку...
Как в Студии выносить процедуры и функции в отдельный файл (и потом подключать их)? Где и в каком порядке они будут находиться в итоге? Можно ли задать им местоположение? Если у меня в основном файле будет массив данных, не наложатся ли они друг на друга?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Создать файл, вбить в него нужные процедуры, сохранить с именем *.asm, в главном файле проекта подключить директивой .include. Код вставится ровно в то место, где будет стоять директива .include. Все директивы org выполняются также как и в одном файле, так что если с ними не накосячить, то ничего никуда не наложится, в противном случае компилятор все равно ругнется. Если в файле только макросы и определения, то имеет смысл ставить до основного кода (например сразу за .include "[имя контроллера]def.inc".
Последний раз редактировалось Engineer_Keen Чт фев 27, 2014 11:49:44, всего редактировалось 1 раз.
Я смотрю в симуляторе. Сделал новый проект, и то-же мой код (и ваш тоже) перестал выдавать ошибку. В картинке вроде для 168PA третье значение. непонятное мне. Вроде не было варнингов, а появились. AVR Simulator: Invalid opcode 0xffff at address 0x000008
Варнинги исчезли, все в порядке, спасибо. Значения в картинке не совпадают с текстом: The 32 general purpose working registers, 64 I/O Registers, 160 Extended I/O Registers, and the 512/1024/1024/2048 bytes of internal data SRAM in the ATmega48PA/88PA/168PA/328P are all accessible through all these addressing modes. Как узнать, сколько же памяти в моей 168PA?