Показано с 1 по 7 из 7
  1. #1
    High Power
    Регистрация
    30.04.2002
    Адрес
    Липецк, Россия
    Возраст
    54
    Сообщений
    935
    Записей в дневнике
    16
    Поблагодарили
    64
    Поблагодарил
    4

    Стою на асфальте в лыжи обутый...

    Коллеги радиолюбители подскажите полному ламмеру в контроллерах...

    В первоисточнике был hex-файл и asm-файл.
    Дописал свой кусок кода , скомпиллировал --- "родной, авторский" hex-файл был 6 кБ (ну так FAR показывает) , с моими дописками стал 4 кБ ... Это как понимать?
    Главное , что дописанный мной кусок кода (как и вся остальная программа) работает... Чего-то я не понимаю...

    Вернее, вообще ничего не понимаю --- контроллер "вмещает в себя" только 1 кБ.

    Разжуйте идиоту какие кБ к чему относятся... И как понять при написании программы, что мол, "все, больше не уместится"...


  2. #2
    DMJ
    DMJ вне форума
    Без позывного
    Регистрация
    09.07.2003
    Адрес
    Москва
    Возраст
    55
    Сообщений
    375
    Поблагодарили
    13
    Поблагодарил
    2
    Длина HEX-файла всегда больше длины программного кода хотя бы потому, что каждый байт программы изображается в нем двумя шестнадцатиричными цифрами, каждая из которых сама по себе байт занимает. А есть еще довольно много служебных байтов, удельный вес которых в HEX-файле может быть самым разным. Например, в его конце может быть сколько угодно пустых строк, которые пользы не приносят, а объем файла увеличивают. Кроме того в "авторском" файле могла быть отображена вся память контроллера, в том числе неиспользуемая, а в Вашем - только занятая программой часть.

    Объем памяти контроллера может быть указан в словах, а не байтах. А длина слова тоже разной бывает, но всегда больше байта.

    Умный ассемблер должен ругнуться, если превышен имеющийся у контроллера объем памяти. А не ругается - откройте файл листинга (*.lst), там есть специальная колонка, в которой указаны адреса, и посмотрите адрес последней команды. Можно и в HEX-файле адреса посмотреть, если знаете его формат (двоеточие, следующие два знака - длина строки, далее четыре - адрес).

  3. #3
    High Power
    Регистрация
    30.04.2002
    Адрес
    Липецк, Россия
    Возраст
    54
    Сообщений
    935
    Записей в дневнике
    16
    Поблагодарили
    64
    Поблагодарил
    4
    Спасибо, в общих чертах ясно.

  4. #4
    Standart Power
    Регистрация
    10.10.2003
    Адрес
    Калуга
    Возраст
    49
    Сообщений
    440
    Поблагодарили
    12
    Поблагодарил
    7
    Честно говоря, мне это все равно не понятно. Всегда считал, что НЕХ-файл отображает непосредственно команды, уже понятные процессору. Ниже только двоичное представление, его уже тестером померять можно!

  5. #5
    Very High Power Аватар для LY1CE
    Регистрация
    07.06.2002
    Адрес
    Каунас
    Возраст
    74
    Сообщений
    1,616
    Поблагодарили
    184
    Поблагодарил
    166
    В принципе так и есть.
    Напр. комманда в двоичном коде 11001001
    В hex файле она будет отображена двумя печатными символами С9
    Любой hex файл можно открыть текстовым редактором.

  6. #6
    High Power
    Регистрация
    30.04.2002
    Адрес
    Липецк, Россия
    Возраст
    54
    Сообщений
    935
    Записей в дневнике
    16
    Поблагодарили
    64
    Поблагодарил
    4

    Регистр FSR

    Не могу никак разобраться с регистром косвенной адресации FSR в PIC16F84A. Для чего он и как его применять?
    Изучал тут один код --- FSR используется , но никакого отличия его о регистров общего назначения так и не увидел. так почему же он выделен как регистр специального назначения? В каком случае его использование дает преимущества?

  7. #7
    Без позывного Аватар для Bioname
    Регистрация
    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. мож чё не ясно или не верно?

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •  
Похоже, что вы используете блокировщик рекламы :(
Форум QRZ.RU существует только за счет рекламы, поэтому мы были бы Вам благодарны если Вы внесете сайт в список исключений!
как отключить
×
Рейтинг@Mail.ru
eXTReMe Tracker


Похоже, что вы используете блокировщик рекламы :(
Форум QRZ.RU существует только за счет рекламы, поэтому мы были бы Вам благодарны если Вы внесете сайт в список исключений!
как отключить
×