Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
19
Добавлен:
01.05.2014
Размер:
256.58 Кб
Скачать

4-1

4.РАСПРЕДЕЛЕНИЕ ПАМЯТИ

Эта глава описывает адресное

пространство памяти

8XC196KC

è 8XC196KD.

Оба устройства

имеют 64 Кбайт адресного пространства, большая часть

которого

предназначена

для программ или запоминания данных. Каждый элемент памяти - ячейка

памяти - содержит один байт.

 

 

 

 

 

 

 

 

 

8xc196KC

8xc196KD

 

 

 

 

 

 

 

 

 

Adresses

Adresses

 

 

 

 

 

 

 

 

 

0FFFFh

0FFFFh

 

 

 

 

 

 

 

 

 

 

 

 

Extenal

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Memory

 

 

 

 

 

6000h

0A000h

 

 

or

 

 

 

 

 

 

 

I/O

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5FFFh

9FFFh

 

 

Program

 

 

 

 

 

 

 

 

 

 

 

 

Memory

 

 

 

Èëè

 

 

2080h

 

 

 

 

внутренняя

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

OTPROM

207Fh

207Fh

 

 

Special-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

èëè

 

 

 

 

 

 

Purpose

 

 

 

 

 

 

 

 

 

 

 

внешняя

2000h

2000h

 

 

Memory

 

 

память

1FFFh

 

 

 

 

 

 

 

 

 

 

 

 

1FFFh

 

 

Port 4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1FFEh

1FFEh

 

 

Port 3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1FFDh

1FFDh

 

 

Extenal

 

 

 

 

 

 

 

 

 

 

 

 

Memory

 

 

 

 

 

200h

400h

 

 

 

 

 

 

 

 

 

 

1FFh

3FFh

 

 

 

 

 

 

 

 

 

 

 

 

Register

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0h

0h

 

 

File

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Порты 3 и 4 всегда читаются и записываются как одно слово.

Рисунок 4.1. Карта адресов памяти.

Рисунок 4.1 показывает основные разделы памяти. Адреса 8XC196KC и 8XC196KD различаются, так как 8XC196KD имеет вдвое большее ОЗУ и однократно программируемое ПЗУ (OTPROM) чем 8XC196KC.

В таблице 4.1 сравниваются адреса памяти 8XC196KC и 8XC196KD и приводятся начальные и конечные адреса в 16-ричной и 10-тичной системах счисления. В последующих разделах описывается каждый раздел памяти.

Таблица 4.1. Старшие адреса памяти 8XC196KC/KD.

Обозначение

Диапазон адресов 8XC196KC

Диапазон адресов 8XC196KD

 

16-ричные

10-тичные

16-ричные

10-тичные

Внешняя память или

6000h -

24576 - 65635

0A000h0FFFFh

40960-65535

I/O

0FFFFh

 

 

 

Память программ *

2080h - 5FFFh

8320 - 24575

2080h - 9FFFh

8320-40956

Память специального

2000h - 207Fh

8192-8319

2000h - 207Fh

8192-8319

назначения *

 

 

 

 

Порты 3 и 4 **

1FFEh - 1FFFh

8190-8191

1FFEh - 1FFFh

8190-8191

Внешняя память

200h - 1FFDh

512-8189

400h - 1FFDh

1024-8189

Регистровый файл

0h - 1FFh

0-511

0h - 3FFh

0-1023

(включая SFR)

 

 

 

 

4-2

* - Расположены во внутреннем OTPROM или внешней памяти.

**- Порты 3 и 4 только словно-адресуемые.

4.1.РАЗДЕЛЫ ВНЕШНЕЙ ПАМЯТИ

Верхняя часть карты памяти и раздел прямо над Регистровым Файлом всегда назначаются на внешнюю память или порты ввода/вывода (I/O) (смотрите рисунок 4.1 или таблицу 4.1). 8XC196KC/KD может сопрягаться со множеством устройств внешней памяти. Более подробно смотрите главу 13.

4.2.ПОРТЫ 3 И 4

Порты 3 и 4 читаются и записываются как слово по адресу 1FFEh ( Порт 3- младший байт; Порт 4-старший байт). Эти порты работают либо как порты ввода-вывода, либо как мультиплексированная шина адрес/данные, либо их комбинация, в зависимости от EA# сигнала при сбросе. Для получения более подробной информации смотрите главу 6 .

4.3.ПРОГРАММНАЯ ПАМЯТЬ И ПАМЯТЬ СПЕЦИАЛЬНОГО НАЗНАЧЕНИЯ

Программная память и память специального назначения занимают раздел памяти 16 Кбайт в 8XC196KC и 32 Кбайт в 8XC196KD (смотрите рисунок 4.1 или таблицу 4.1). Эти разделы могут постоянно располагаться либо во внутреннем OTPROM, либо во внешней памяти. В главе 14 приведена информация о программировании OTPROM.

4.3.1.Выбор Внутренней или Внешней Памяти

Доступ к адресам программной памяти и адресам памяти специального назначения осуществляется в зависимости от того, где находится данный раздел: во внутреннем OTPROM или во внешней памяти, прич¸м он не может находиться там и там. Значение вывода Внешнего Доступа (EA#) во время переднего фронта сигнала RESET# определяет вид доступа: внутренний или внешний. Это значение запоминается в устройстве и не может быть изменено до сброса устройства. Если EA# имеет низкий уровень, то внутреннее OTPROM недоступно, и все обращения к этому адресному диапазону направляются прямо во внешнюю память. Если EA# имеет высокий уровень, то обращение к этому адресному диапазону осуществляется во внутреннее OTPROM.

ПРИМЕЧАНИЯ. Вывод EA# должен иметь низкий уровень для надежного функционирования CPU без внешней памяти .

4.3.2.Программная Память

Программная память располагается по адресам 2080h - 5FFFh в 8XC196KC и по адресам 2080h - 9FFFh в 8XC196KD. После сброса устройства CPU выбирает и выполняет команду, находящуюся по адресу 2080h (смотрите главу 11 для получения более подробной информации о сбросе).

ПРИМЕЧАНИЕ. Так как исходное значение ячеек ROM/OTPROM равно 0FFh, то мы рекомендуем записывать 0FFh в неиспользуемые ячейки программной памяти.

4.3.3. Память Специального Назначения

Память специального назначения расположена по адресам 2000h - 207Fh (смотрите рисунок 4.2). Она содержит несколько зарезервированных ячеек памяти, вектора для Периферийного Сервера Обмена (PTS) и стандартных прерываний, ключ

4-3

защиты и Байт Конфигурации Кристалла (ССВ). Таблица 4.2 да¸т список адресов памяти специального назначения и начальные и конечные адреса в 16-ричной и 10-тичной системах.

8xc196KC

8xc196KD

 

 

 

 

 

 

 

 

 

Adresses

Adresses

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0FFFFh

0FFFFh

 

Extenal

 

 

 

 

 

 

 

 

Memory

 

 

 

 

6000h

 

 

 

or

 

 

 

 

0A000h

 

I/O

 

 

 

 

5FFFh

9FFFh

 

Programm

 

 

 

8xc196KC/KD

 

 

 

 

 

 

 

Adresses

 

2080h

 

Memory

 

Reserved(FFh)

 

205Eh

207Fh

 

 

 

 

 

 

 

 

207Fh

 

Special

 

 

 

 

PTS Vectors

 

2040h

 

 

 

 

 

 

 

 

 

 

 

Purpose

 

 

 

 

 

 

 

 

Upper Interrupt

 

 

 

 

 

 

Memory

 

 

 

2000h

2000h

 

 

Vectors

 

2030h

 

 

 

 

 

 

 

1FFFh

1FFFh

 

Port 4

 

Security Key

 

2020h

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1FFEh

1FFEh

 

Port 3

 

Reserved(FFh)

 

201Ah

 

 

 

 

 

 

Reserved(20h)

 

 

1FFDh

1FFDh

 

Extenal

 

 

2019h

 

 

 

 

 

400h

 

Memory

 

CCB

 

2018h

200h

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Reserved(FFh)

 

2014h

 

 

 

 

 

 

 

 

 

 

1FFh

3FFh

 

Register

 

 

 

Lower Interrupt

 

 

 

 

 

 

 

 

 

 

 

 

 

File

 

 

 

0h

0h

 

 

Vectors

 

2000h

 

 

 

 

 

 

 

 

Рисунок 4.2. Карта памяти специального назначения.

4.3.3.1.Зарезервированные Ячейки Памяти

Несколько ячеек памяти зарезервировано для тестирования или будущего использования. Пользователь не может читать или записывать в эти зарезервированные ячейки памяти. Содержимое и/или функции этих ячеек могут меняться в будущих версиях, поэтому не гарантируется работа программного обеспечения при использовании зарезервированных ячеек

При программировании OTPROM всегда записывают 20h по адресу 2019h и 0FFh по всем другим зарезервированным адресам.

4.3.3.2.Вектора Прерываний

Верхняя и нижняя области Векторов Прерываний содержат адреса подпрограмм обслуживания прерываний. PTS-вектора содержат адреса управляющих блоков PTS. Для получения более подробной информации смотрите главу 5 .

Таблица 4.2. Адреса памяти специального назначения 8XC196KC/KD.

Обозначения

Адресный диапазон 8XC196KC/KD

 

16-ричные

10-ричные

Зарезервировано ( должен содержать 0FFh)

205Eh - 207Fh

8286-8319

Вектора PTS

2040h - 205Dh

8256-8285

Старшие вектора прерывания

2030h - 203Fh

8240-8255

Ключ безопасности

2020h - 202Fh

8224-8239

Зарезервировано ( должен содержать 0FFh)

201Ah - 201Fh

8218-8223

Зарезервировано ( должен содержать 20h )

2019h

8217

4-4

CCB

2018h

8216

Зарезервировано ( должен содержать 0FFh)

2014h - 2017h

8212-8215

Младшие вектора прерывания

2000h - 2013h

8192-8211

4-5

4.3.3.3.Ключ Защиты

Ключ безопасности защищает 8XC196KC/KD от несанкционированного чтения и записи в OPTROM. Если security lock bits (блокировочные биты) в Регистре Конфигурации Кристалла (ССR.6 и CCR.7) очищаются, то каждый байт 16-байтного программируемого кода защиты сравнивается с соответствующими байтами во внешней памяти. Если внешние данные не совпадают с ключом защиты, устройство не входит в запрашиваемый режим программирования. Для получения более подробной информации о ключе защиты смотрите главу 14 .

4.3.3.4.Байт Конфигурации Кристалла ( CCB )

Байт Конфигурации Кристалла (CCB) - первый байт, выбранный из памяти после сброса устройства. Последовательность сброса загружает CCB во внутренний регистр, называемый Регистром Конфигурации Кристалла (CCR). CCR управляет защитой внутренней памяти, режимом READY, сигналом управления шиной, разрядностью шины и режимом Powerdown (Режимом пониженного энергопотребления ). Смотрите Приложение С.

4.4.РЕГИСТРОВЫЙ ФАЙЛ

Регистровый Файл раздел¸н на верхний и нижний Регистровые Файлы (смотрите рисунок 4.3). Верхний Регистровый Файл содержит регистровое RAM (ОЗУ) общего

назначения. Нижний Регистровый Файл содержит регистровое ОЗУ общего назначения, Указатель Стека (SP) и Специальные Функциональные Регистры (SFR). Таблица 4.3

сравнивает адреса Регистрового

Файла

8XC196KC и 8XC196KD и да¸т начальные и

конечные адреса в 16-ричной и 10-тичной системах.

 

 

8xc196KC

8xc196KD

 

 

 

 

 

 

 

 

 

 

 

 

 

Adresses

Adresses

 

 

 

 

 

 

 

 

 

 

 

 

 

0FFFFh

0FFFFh

 

Extenal

 

 

 

 

 

 

 

 

 

6000h

0A000h

 

Memory

 

 

 

 

 

 

 

 

 

 

or

I/O

 

 

 

 

 

 

 

8xc196KD

8xc196KC

 

9FFFh

 

 

 

 

 

 

 

 

5FFFh

 

 

 

 

 

 

 

 

 

 

 

 

Program

 

 

 

 

 

 

 

Adresses

Adresses

 

2080h

 

Memory

 

 

 

 

 

 

Register RAM

3FFh

1FFh

 

 

 

 

 

 

 

 

 

 

 

 

(Upper

 

 

207Fh

207Fh

 

Special-

 

100h

100h

 

 

 

 

 

 

 

Register File)

2000h

2000h

 

Purpose

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Memory

 

 

 

 

 

 

Register*

 

 

1FFFh

1FFFh

 

Port 4

 

 

 

 

 

 

 

RAM

1Ah

1Ah

1FFEh

1FFEh

 

Port 3

 

 

 

 

 

 

SP(HI)*

 

19h

1FFDh

1FFDh

 

Extenal

 

 

 

 

 

 

19h

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

200h

400h

 

Memory

 

 

 

 

 

 

SP(LO)*

18h

18h

1FFh

3FFh

 

Register

 

 

 

 

 

 

 

 

 

 

 

 

 

 

CPU SFRs*

 

 

 

 

 

 

 

 

 

 

 

 

 

0h

0h

 

 

File

 

 

 

 

 

 

0h

0h

 

 

 

 

 

 

 

 

 

Нижний регистровый файл

Рисунок 4.3. Карта памяти Регистрового Файла.

ПРИМЕЧАНИЕ. Регистровый Файл не должен содержать коды команд. Попытка выполнить команду из Регистрового Файла (0h - 01FFh в 8XC196KC или 0h - 03FFh в 8XC196KD) вед¸т к автоматической выборке контроллером команды из внешней памяти. Эта секция внешней памяти зарезервирована для использования средствами разработки фирмы Intel.

4-6

Таблица 4.3. Адреса памяти Регистрового Файла 8XC196KC/KD.

Обозначение

Адресный

диапазон

Адресный

диапазон

 

8XC196KC

8XC196KD

 

16-ричные

10-ричные

16-ричные

10-ричные

Старший Регистровый Файл

100h - 1FFh

256-511

100h3FFh

256-1023

*

 

 

 

 

Регистровое RAM (ОЗУ)

1Ah - 0FFh

26-255

1Ah - 0FFh

26-255

Общего назначения **

 

 

 

 

Указатель Стека (SP) **

18h - 19h

24-25

18h - 19h

24-25

Регистры специального

0h - 17h

0-23

0h - 17h

0-23

назначения (SFR) **

 

 

 

 

* - Содержит регистровое RAM (ОЗУ) общего назначения (доступно с помощью косвенной или индексной адресации, если только нет использования вертикальных окон). ** - Расположены в нижнем Регистровом Файле (доступны с помощью прямой регистровой, косвенной или индексной адресации).

4.4.1.Регистровое ОЗУ Общего Назначения

Ячейки 1Ah - 0FFh содержат регистровое RAM (ОЗУ) общего назначения. Ячейки указателя стека, 18h - 19h, могут также использоваться в качестве регистрового RAM общего назначения, когда операции со стеком не проводятся. RALU может прямо обращаться к этой памяти, используя прямую регистровую адресацию. Верхний Регистровый Файл также содержит регистровое RAM общего назначения (100h - 1FFh в 8XC196KC и 100h - 3FFh в 8XC196KD). Обычно RALU обращается к этой памяти, используя косвенную или индексную адресацию. Технология Vertical windowing (создание вертикальных окон) позволяет RALU использовать прямую регистровую адресацию для доступа к RAM в верхнем Регистровом Файле (смотрите главу 3, где описаны различия между прямой регистровой и индексной адресациями). Создание вертикальных окон обеспечивает быстрое переключение на задачи по прерываниям и ускоряет выполнение программ (смотрите раздел 4.6.).

4.4.2.Указатель Стека (SP)

Ячейки памяти 18h и 19h содержат указатель стека (SP). SP содержит адрес вершины стека. SP должен указывать на адрес слова (четный), который на два байта больше, чем желаемый стартовый адрес. Перед тем, как CPU выполнит вызов подпрограммы или программы обслуживания прерывания, оно дважды декрементирует содержимое SP и копирует (PUSH) адрес следующей команды из программного сч¸тчика в стек. Затем загружает адрес подпрограммы или программы обслуживания прерываний в программный сч¸тчик. После завершения выполнения подпрограммы или программы обслуживания прерывания, CPU возвращается из подпрограммы (командой RET) и загружает (командой POP) содержимое вершины стека (т.е. адрес возврата) в программный сч¸тчик.

Подпрограммы могут быть вложенными. Это значит, что каждая подпрограмма может вызывать другую подпрограмму. CPU засылает содержимое программного сч¸тчика в стек каждый раз при выполнении вызова подпрограммы. Стек раст¸т вниз по мере добавления содержимого. Глубину стека ограничивает только величина доступной памяти. Каждый раз при возврате из подпрограммы CPU выгружает адрес из вершины стека, и потом вершина стека перемещает-ся на следующий адрес возврата. Когда операции со стеком не проводятся, ячейки SP могут использоваться в качестве регистрового RAM общего назначения.

4.4.2.1. Инициализация Указателя Стека

4-7

Пользователь программ должен загрузить двухбайтный адрес в указатель стека. Выбор адреса, на два байта большего, чем желаемый стартовый адрес, делается потому, что указатель стека автоматически декрементируется перед тем, как CPU засылает первый байт адреса возврата в стек. Помните, что стек раст¸т вниз, что требует достаточного количества ячеек для максимального числа адресов, занес¸нных в стек. Стек может находиться либо во внутреннем Регистровом Файле, либо во внешнем RAM (ОЗУ).

 

 

4-8

Пример: инициализации

верхушки стека верхнего Регистрового Файла 8XC196KD.

LD

SP, #400h

; Load stack pointer (загрузка указателя стека)

4.4.3.СПЕЦИАЛЬНЫЕ ФУНКЦИОНАЛЬНЫЕ РЕГИСТРЫ (SFR)

Ячейки 00h - 17h обеспечивают доступ к Специальным Функциональным Регистрам (SFR) CPU через три горизонтальных окна (HWindow 0, 1 и 15, смотрите раздел 4.5.). RALU осуществляет прямое управление всеми периферийными модулями, кроме Портов 3 и 4, через SFR. Каждый SFR подробно описан в Приложении С, “Регистры 8XC196KC/KD”.

При использовании SFR в качестве базового или индексного регистра при косвенной или индексной адресациях отдавайте себе отч¸т в том, что содержимое SFR непредсказуемо. Внешние события могут менять содержимое SFR, и некоторые SFR очищаются при считывании.

Функции многих SFR различны в зависимости от того, считывается ли из них или записывается в них информация. По этой причине никогда не используйте SFR в качестве операнда в команде чтение-модификация-запись. Не используйте зарезервированные SFR; запишите в них 0 или оставьте их в исходном состоянии. При считывании зарезервированные биты и SFR могут возвращать неопредел¸нные значения.

4.5.СОЗДАНИЕ ГОРИЗОНТАЛЬНЫХ ОКОН

8XC196KC/KD использует технологию horizontal windowing (создания горизонтальных окон), которая переключает три 24-байтных блока памяти (HWindow 0, 1 и 15) внутри младших 24 байтов в нижнем Регистровом Файле (смотрите рисунок 4.4). Каждое HWindow (горизонталь-ное окно) обеспечивает чтение или запись в определенные SFR. Некоторые регистры доступны как отдельный байт; другие как слово (два байта). Некоторые регистры, такие как Регистр Выбора Окна (WSR, 14h), доступны во всех 3-х окнах, другие могут быть доступны для записи в одном окне, а для считывания в другом. Подробное описание каждого регистра приведено в Приложении С.

Рисунок 4.4. Создание горизонтальных окон.

4.5.1. Выбор Горизонтального Окна

4-9

Регистр Выбора Окна (WSR,14h) обеспечивает доступ к горизонтальным и вертикальным окнам (смотрите раздел 4.6.). Для выбора HWindow занесите номер желаемого окна в WSR.0 - WSR.3 и очистите WSR.4 - WSR.6. Доступны только окна HWindows 0, 1 и 15. Все другие HWindow зарезервированы. Таблица 4.4 показывает необходимое содержимое WSR для выбора каждого HWimdow. Смотрите Приложение С, где подробно описаны WSR.

Таблица 4.4. Выбор горизонтальных окон.

HWindow

Содержимое WSR

0

X000 0000B = 00h

1

X000 0001B = 01h

15

X000 1111B = 0Fh

4.5.2.Горизонтальное Окно 0 (HWindow 0)

HWindow 0 - начальное окно. Оно обеспечивает доступ к чтению из 19 регистров и записи в 21 регистр (смотрите рисунок 4.5). Некоторые регистры (например, INT_MASK1) доступны для чтения и для записи внутри HWindow 0. Другие (например, IOS1) могут быть доступны или только для чтения, или только для записи внутри HWindow 0. Для проведения недостающих функций в этих регистрах выбирайте Hwindow 15.

4.5.3.Горизонтальное Окно 1 (HWindow 1)

HWindow 1 обеспечивает доступ для чтения и для записи в 12 регистров (смотрите рисунок 4.5). Эти свойства отличают 8XC196KC и 8XC196KD от других, ранее созданных членов семейства MCS96. Некоторые регистры также доступны в обоих окнах - HWindow 0 и HWindow 15.

Адрес регистра в

HWindow 0

HWindow 0 запись

HWindow 1

îêíå

чтение

 

чтение/запись

17h

IOS2

 

 

16h

IOS1

IOC1

 

15h

IOS0

IOC0

Reserved

14h

WSR

WSR

WSR

13h

 

 

 

12h

 

 

 

11h

 

 

Reserved

10h

IOPORT2

IOPORT2

Reserved

0Fh

IOPORT1

IOPORT1

Reserved

0Eh

IOPORT0

 

Reserved

0Dh

TIMER2(HI)

TIMER2(HI)

Reserved

0Ch

TIMER2(LO)

TIMER2(LO)

IOC3

0Bh

TIMER1(HI)

IOC2

Reserved

0Ah

TIMER1(LO)

WATCHDOG

Reserved

09h

 

 

 

08h

 

 

 

07h

SBUF(RX)

SBUF(TX)

PTSSRV(HI)

06h

 

 

PTSSRV(LO)

05h

 

 

PTSSEL (HI)

04h

 

 

PTSSEL (LO)

03h

 

 

 

02h

 

 

Reserved

01h

 

 

 

00h

 

 

 

Рисунок 4.5. HWindow 0 и HWindow 1.

4-10

4.5.4.Горизонтальное Окно 15 (HWindow 15)

HWindow 15 обеспечивает доступ к тем же регистрам, что и HWindow 0, кроме байтов 0Ch - 10h. Через байты 0Ch - 0Dh в HWindow 0 осуществляется доступ к 16битному регистру Timer 2, а в Hwindow 15 к 16-битному регистру T2CAPTURE. Через байты 0Eh - 10h в Hwindow 0 осуществляется доступ к регистрам IOPORT0, IOPORT1, IOPORT2, а в HWindow 15 они зарезервированы. Регистры, доступные только для чтения в HWindow 0, доступны только для записи в HWindow 15, и наоборот.

Соседние файлы в папке MPS_shprots