-
29.01.2004, 20:59 #1
- Регистрация
- 30.04.2002
- Адрес
- Липецк, Россия
- Возраст
- 55
- Сообщений
- 935
- Записей в дневнике
- 16
- Поблагодарили
- 64
- Поблагодарил
- 4
Стою на асфальте в лыжи обутый...
Коллеги радиолюбители подскажите полному ламмеру в контроллерах...
В первоисточнике был hex-файл и asm-файл.
Дописал свой кусок кода , скомпиллировал --- "родной, авторский" hex-файл был 6 кБ (ну так FAR показывает) , с моими дописками стал 4 кБ ... Это как понимать?
Главное , что дописанный мной кусок кода (как и вся остальная программа) работает... Чего-то я не понимаю...
Вернее, вообще ничего не понимаю --- контроллер "вмещает в себя" только 1 кБ.
Разжуйте идиоту какие кБ к чему относятся... И как понять при написании программы, что мол, "все, больше не уместится"...
-
30.01.2004, 11:03 #2
- Регистрация
- 09.07.2003
- Адрес
- Москва
- Возраст
- 55
- Сообщений
- 375
- Поблагодарили
- 13
- Поблагодарил
- 2
Длина HEX-файла всегда больше длины программного кода хотя бы потому, что каждый байт программы изображается в нем двумя шестнадцатиричными цифрами, каждая из которых сама по себе байт занимает. А есть еще довольно много служебных байтов, удельный вес которых в HEX-файле может быть самым разным. Например, в его конце может быть сколько угодно пустых строк, которые пользы не приносят, а объем файла увеличивают. Кроме того в "авторском" файле могла быть отображена вся память контроллера, в том числе неиспользуемая, а в Вашем - только занятая программой часть.
Объем памяти контроллера может быть указан в словах, а не байтах. А длина слова тоже разной бывает, но всегда больше байта.
Умный ассемблер должен ругнуться, если превышен имеющийся у контроллера объем памяти. А не ругается - откройте файл листинга (*.lst), там есть специальная колонка, в которой указаны адреса, и посмотрите адрес последней команды. Можно и в HEX-файле адреса посмотреть, если знаете его формат (двоеточие, следующие два знака - длина строки, далее четыре - адрес).Последний раз редактировалось DMJ; 30.01.2004 в 11:20.
-
30.01.2004, 13:02 #3
- Регистрация
- 30.04.2002
- Адрес
- Липецк, Россия
- Возраст
- 55
- Сообщений
- 935
- Записей в дневнике
- 16
- Поблагодарили
- 64
- Поблагодарил
- 4
Спасибо, в общих чертах ясно.
-
31.01.2004, 17:56 #4
- Регистрация
- 10.10.2003
- Адрес
- Калуга
- Возраст
- 49
- Сообщений
- 440
- Поблагодарили
- 12
- Поблагодарил
- 7
Честно говоря, мне это все равно не понятно. Всегда считал, что НЕХ-файл отображает непосредственно команды, уже понятные процессору. Ниже только двоичное представление, его уже тестером померять можно!
-
31.01.2004, 18:49 #5
- Регистрация
- 07.06.2002
- Адрес
- Каунас
- Возраст
- 74
- Сообщений
- 1,616
- Поблагодарили
- 184
- Поблагодарил
- 166
В принципе так и есть.
Напр. комманда в двоичном коде 11001001
В hex файле она будет отображена двумя печатными символами С9
Любой hex файл можно открыть текстовым редактором.
-
01.02.2004, 10:03 #6
- Регистрация
- 30.04.2002
- Адрес
- Липецк, Россия
- Возраст
- 55
- Сообщений
- 935
- Записей в дневнике
- 16
- Поблагодарили
- 64
- Поблагодарил
- 4
Регистр FSR
Не могу никак разобраться с регистром косвенной адресации FSR в PIC16F84A. Для чего он и как его применять?
Изучал тут один код --- FSR используется , но никакого отличия его о регистров общего назначения так и не увидел. так почему же он выделен как регистр специального назначения? В каком случае его использование дает преимущества?
-
08.02.2004, 20:37 #7
- Регистрация
- 12.04.2003
- Адрес
- Житомир, Украина
- Возраст
- 43
- Сообщений
- 655
- Поблагодарили
- 12
- Поблагодарил
- 1
Задав значение регистра FSR в регистре INDF можно считать значение из памяти по адресу FSR.
т.е. если представить доступ к памяти в виде массива INDF[ x ], где x есть адрес ячейки, то здесь x и является значением FSR.
Назначение - обработка значений последовательности ячеек памяти. например вывод информации на LCD дисплей. пускай например "область дисплея" начинается с адреса 0x26 длиной 10 регистров то загрузив в FSR значение 0x26 получаем в INDF значение ячейки по этому адресу, "выводим" значение, далее будем инкрементировать FSR переходя к следующей ячейке.
Код работы с LCD придумал не я. Я тока разобрался в нём и применил где мне было нужно. он является хорошим примером работы с регистрами FSR и INDF
P.S. мож чё не ясно или не верно?
|
Социальные закладки