ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
23 ноября
736283 Топик полностью
maik-vs (14.02.2017 13:31, просмотров: 203) ответил maleon на Знатоки Atmel-AVR-ассемблера, подскажите! Как правильно описывать (если это вообще возможно) структуры данных, чтобы потом обращаться к их полям при помощи имён (возможно из этих структур будут сформированы массивы)? А также как правильно
Я так делаю  .dseg //; CMD structure структура, описывающая команду и служебные поля .equ CMDFLAG = 0 .equ CMDANSWTOUT = 1 .equ CMDLEN = 2 .equ CMDMASK = 5 .equ CMDVALUE = 6 // таблица структур .equ CMDITEMLENGTH = 9 .equ CMDTABLELENGTH = 5*CMDITEMLENGTH + 1 ; 5 commands by 9 bytes + FF EOTable CmdTable: .byte CMDTABLELENGTH CmdPtr: .byte 2 ; pointer to last sended cmd .equ CMDX = CmdTable+CMDITEMLENGTH*0 .equ CMDLEFT = CmdTable+CMDITEMLENGTH*1 .equ CMDRIGHT = CmdTable+CMDITEMLENGTH*2 .equ CMDPOW = CmdTable+CMDITEMLENGTH*3 .equ CMDSYN = CmdTable+CMDITEMLENGTH*4 .equ CMDEOT = CmdTable+CMDITEMLENGTH*5 // заготовка таблицы команд для инициализации .cseg C_CmdTable: .Db 0,$ff, 6,'S','V', 00,00,00,00,\ 0,$ff, 6,'B','L', 00,00,00,00,\ 0,$ff, 6,'B','R', 00,00,00,00,\ 0,$ff, 6,'B','W', 00,00,00,00,\ 0,$ff, 4,'C','I',$A5,00,00,00,\ $FF // обращение к полю в команде LDADDR Y,CMDLEFT std Y+CMDVALUE,r15 ; запись в CMDLEFT.CMDVALUE adiw Y,CMDITEMLENGTH ; переход к следующей команде .MACRO LDADDR /// LDADDR Y,k ldi @0h,high(@1) ldi @0l,low(@1) .ENDMACRO