Сб апр 15, 2017 14:48:25
Это как раз и имелось ввиду, т.к. ещё не встречал архитектуры с порядком следования байт отличным от формата младший-старший. Например, код команды LPM Load Program Memory 0x95C8 в листинге видится как 0xC895.Alek Lem писал(а):...
Сб апр 15, 2017 14:48:49
Я и не писал, что он что-то считывает...Он считает -- поэтому и "счетчик"Z_h_e писал(а):Счетчик команд ничего не считывает, он хранит адрес для выборки команд.Alek Lem писал(а):Ведь адрес ROM умеет отсчитывать, на сколько я знаю, только счетчик команд (регистр адреса).
Ок, не буду морочить голову. Теперь вопрос более прикладной. Командой .db заносится массив чисел, который в процессе работы программы, выгружается, например, в порты. Но с тем же успехом, я мог бы занести этот массив в ячейки ОЗУ (которые идут после адресов РОН и РВВ) и считывать массив оттуда.Z_h_e писал(а):Но это вопросы архитектуры камня, известные лишь разрабам и программиста в принципе волновать не должно.
Сб апр 15, 2017 14:52:05
Сб апр 15, 2017 14:57:02
Сб апр 15, 2017 15:08:04
Сб апр 15, 2017 15:11:39
Сб апр 15, 2017 15:36:06
Сб апр 15, 2017 16:01:18
Сб апр 15, 2017 16:15:51
Сб апр 15, 2017 16:40:40
не надо путать счетчик команд и указатель адреса (в данном случае регистровую пару Z).Alek Lem писал(а):Я спрашивал, как именно происходит отсчет адреса в ROM побайтно командой plm ? Ведь адрес ROM умеет отсчитывать, на сколько я знаю, только счетчик команд (регистр адреса).
Сб апр 15, 2017 17:51:01
Я не соглашусь с такой формулировкой. Организация памяти программ в AVR n*16. Я не видел подробной схемы организации памяти и шин AVR, но все указывает на то (по моему разумению) что шина данных для памяти программ 16 битная, возможность (физическая) чтения данных побайтно отсутствует. Считайте что ячейки памяти 16 битные. Записи побайтной тоже нет.Starichok51 писал(а):тем более, что есть команды длиной больше 1 слова. поэтому счетчик команд считает команды, а не слова.
Сб апр 15, 2017 20:16:46
присутствует.Z_h_e писал(а):возможность (физическая) чтения данных побайтно отсутствует.
Сб апр 15, 2017 21:45:08
То что программиста не должен волновать этот вопрос, я обозначал. В ДШ указано что организация памяти программ 16 битная. Равно как при 8ми битной организации, не читает ядро ниблами, так и тут не читает байтами. Кроме того, не кажется странным, что МК выбирает 16битную команду за один такт, а один байт данных читает аж за три? Точно также биториентированные команды не работают с битами по факту. Выборка байта из СОЗУ и модификация бита, запись байта обратно или Вы думаете для каждого бита есть свой адрес ? Это ж какая шина адреса должна быть?Starichok51 писал(а):присутствует.
меня не волнует, как команда lpm выбирает всего один байт из программной памяти. скорее всего, точно также, как из ОЗУ - побайтно, а не из слова.
Счетчик ничего не выбирает, это всего-лишь указаетель. Этим занимается декодер команд и значение программного счетчика тоже меняет декодер команд, в зависимости от команды и ее результата.Starichok51 писал(а):да, счетчик команд выбирает слова. но сколько слов он выберет, зависит от длины команды. именно поэтому он считает КОМАНДЫ, а не слова.
Конечно нельзя, первый раз вижу что такое можно даже обсуджать.Starichok51 писал(а):отладчике ты НИКОГДА не сможешь сделать точку останова внутри двухсловной команды
Есть, но только по словно, опять же из-за 16 битной организации флеш, перед этим стирая страницы.Starichok51 писал(а):а что нет записи в программную память - это всем известно.
Вс апр 16, 2017 07:45:23
Ср апр 19, 2017 04:29:36
Ср апр 19, 2017 05:16:38
Ср апр 19, 2017 05:53:02
Вс апр 30, 2017 19:22:24
akl писал(а):Директива .DB позволяет нарушить этот формат, в отличие от директивы .DW Можете попробовать.
//----------
#define tab_h(x) HIGH(x), LOW(x)
#define tab_l(x) LOW(x), HIGH(x)
//----------
Tab_Jmp_KBD_DRV:
.equ MAX_FSM_KBD_DRV_STATES = 5 // Êîëè÷åñòâî ñîñòîÿíèé àâòîìàòà.
.equ _KEYS_INIT = 0
.db tab_h(Keys_Init)
.equ _KEYS_NONE = 1
.db tab_h(Keys_None)
.equ _KEYS_DOWN = 2
.db tab_h(Keys_Down)
.equ _KEYS_WAIT_UP = 3
.db tab_h(Keys_Wait_Up)
.equ _KEYS_UP = 4
.db tab_h(Keys_Up)
Вс май 14, 2017 14:00:20
Вс май 14, 2017 16:13:27