вторник, 25 июня 2013 г.

Урок 2. Глава 1 Устройство памяти


<< Назад к оглавлению


В данном тексте приведены ссылки на книги. "название книги":страница обозначает указатель на определенную страницу книги. "название книги":Гглава - главу. При этом ТО - сокращение для тех. описания контроллера (Datasheet). Например ТО:15 - 15 страница технического описания. ТО:Г3 - третья глава технического описания

Устройство памяти контроллера


Контроллер - это лишь устройство, которое шаг за шагом выполняет команды. Команды записаны в памяти контроллера и выполняются по очереди.
Команды записаны в понятном контроллеру машинном языке - столбик 2 следующего листинга. Cправа приведено, как эти команды записываются в ассемблере
Внутри контроллера
Адрес ячейки Содержимое ячейки     
0x001               0x0e00
0x002               0x6ee0
0x003               0x6a80
0x004               0x6a92
и так далее...
Описание
Соответствующая команда ассемблера    
movlw 0           ;записываем в аккумулятор 0
movwf BSR      ;аккумулятор -> выбор блока
clrf PORTA      ;обнуляем выход порта А
clrf TRISA        ;настраиваем порт А на вывод

Второй столбик - это машинный код, в шестнадцатеричной системе счисления.
Это и есть команды, записанные в памяти программы.

Но кроме памяти программы (PROGRAM MEMORY) есть еще память данных.
В памяти данных во-первых хранятся настройки для нашего контроллера. Собственно, это просто переменные, меняя которые вы меняете какие-то установки. И еще в памяти данных мы будем создавать переменные. То есть, если программе что-либо надо запомнить, она записывает это в память данных (DATA MEMORY).
То, где хранятся настройки контроллера называется регистрами специального назначения - SPECIAL FUNCTIONS REGISTERS (SFR), а то, что мы используем, как переменные - регистры общего назначения - GENERAL PURPOSE REGISTERS (GPR).
стоит еще отметить, что память поделена на 15 банков в каждом по 16x16 ячеек. для того, чтобы выбрать другой банк данных есть регистр выбора банка BANK SELECT REGISTER (BSR).
Для многих команд можно использовать адрес напрямую, с помощью регистра BSR или же с помощью access банка. При обращении в access bank, до адрес 0x60 мы попадаем в 1й банк. В остальных адресах мы попадем в банк 15. Регистры специального назначения. Когда мы задаем команду в ассемблере мы можем поднять флаг A (0) или B (1) для указания будем ли мы использовать BSR или же access bank. Конкретнее смотрите в ТО в главе instruction set.

 Стоит вам записать в него 2, вы тут же начинаете использовать второй банк регистров.
Предлагаю вам самим это посмотреть обратитесь к Тех Описанию. ТО:59 и ТО:65


пример выбора блока регистров
movlw 0x5    ;записываем 5 сначала в аккумулятор
movwf BSR  ;из аккумулятора передаем значение в BSR регистр
Еще есть EEPROM память, которая спользуется для длительного хранения данных. Но об нёй не сейчас.

Пожалуйста, помогите сделать статью лучше. Увидели непонятность, неточность или  ошибку, сообщите в комментарии, или напишите мне. Спасибо. Jasuramme@mail.ru

3 комментария:

  1. Вроде бы говорили, что у PIC18 линейная адресация памяти. Не банки как у PIC16. Можно по-подробнее об этом.

    ОтветитьУдалить
    Ответы
    1. Простите, не заметил комментарий, у меня гугл перенес блог в папку social networks.
      Адресное пространство наверное одно, но с помощью 8битных команд к нему нет возможности адресоваться. (8 бит - число до 255)
      Поэтому существует регистр выбора банка BSR (bank select register). В нем содержится информация, к какой части памяти мы будем адресоваться.

      Удалить
  2. Простите, не заметил комментарий, у меня гугл перенес блог в папку social networks.
    Адресное пространство наверное одно, но с помощью 8битных команд к нему нет возможности адресоваться. (8 бит - число до 255)
    Поэтому существует регистр выбора банка BSR (bank select register). В нем содержится информация, к какой части памяти мы будем адресоваться.

    ОтветитьУдалить