F18-19 (1041602), страница 11
Текст из файла (страница 11)
1.2C8051F018C8051F019МнемоникакомандыJNC relJB bit,relJNB bit,relJBC bit,relACALL addr11LCALL addr16RETRETIAJMP addr11LJMP addr16SJMP relJMP @A+DPTRJZ relJNZ relCJNE A,direct,relCJNE A,#data,relCJNE Rn,#data,relCJNE@Ri,#data,relDJNZ Rn,relDJNZ direct,relNOPОписаниеБайтыЦиклыПереход, если перенос равен нулюПереход, если бит равен единицеПереход, если бит равен нулюПереход, если бит установлен, с последующим сбросом битаПРОГРАММНЫЕ ПЕРЕХОДЫАбсолютный вызов подпрограммы в пределах страницы в 2 КбайтаДлинный вызов подпрограммыВозврат из подпрограммыВозврат из подпрограммы обработки прерыванияАбсолютный переход внутри страницы в 2 КбайтаДлинный переход в полном объеме памяти программКороткий относительный переход внутри страницы в 256 байтКосвенный относительный переходПереход, если аккумулятор равен нулюПереход, если аккумулятор не равен нулюСравнение аккумулятора с прямо-адресуемым байтом и переход, еслине равноСравнение аккумулятора с константой и переход, если не равноСравнение регистра с константой и переход, если не равноСравнение косвенно-адресуемого байта ОЗУ с константой и переход,если не равноДекремент регистра и переход, если не нульДекремент прямо-адресуемого байта и переход, если не нульХолостая команда23332/33/43/43/42311232122345534332/32/333/4333/43/434/52312/33/41Условные обозначения:Rn - Регистр R0-R7 выбранного банка регистров.@Ri – Ячейка ОЗУ данных, адресуемая косвенно через регистры R0-R1rel - 8-битное смещение со знаком (в дополнительном коде) относительно первого байта следующейкоманды.
Используется командой SJMP и всеми командами условных переходов.direct - 8-битный адрес ячейки внутреннего ОЗУ данных. Это может быть ячейка ОЗУ данных прямогодоступа (0x00-0x7F) или регистр специального назначения SFR (0x80-0xFF).#data - 8-битная константа#data 16 - 16-битная константаbit – Прямо-адресуемый бит ячейки ОЗУ данных или регистра специального назначения SFR.addr 11 - 11-битный адрес перехода, используемый командами ACALL и AJMP. Переход долженосуществляться в пределах той 2-Kбайтной страницы памяти программ, в которой расположенпервый байт следующей команды.addr 16 - 16-битный адрес перехода, используемый командами LCALL и LJMP.
Переход можетосуществляться в пределах всего 64-Kбайтного пространства памяти программ.Существует один неиспользуемый код операции (0xA5), который исполняется аналогичнокоманде NOP.На всю мнемонику распространяется авторское право © Intel Corporation 1980.Ред.
1.248C8051F018C8051F0198.2. ОРГАНИЗАЦИЯ ПАМЯТИОрганизация памяти МК с ядром CIP-51 соответствует стандарту 8051. Имеется две отдельных областипамяти, память программ и память данных, которые разделяют одно и то же адресное пространство, но доступк ним осуществляется командами различного типа. Объем внутренней памяти данных составляет 256 байт.Адресное пространство внутренней памяти программ составляет 64 Кбайт. Организация памяти CIP-51показана на рис.8.2.8.2.1. Память программCIP-51 имеет адресное пространство памяти программ 64 Кбайт. В МК физически реализовано 16k +128 байт этой памяти программ, которая является внутрисистемной перепрограммируемой Flash-памятью,занимающей непрерывный блок адресов от 0x0000 до 0x3FFF.
Следует иметь ввиду, что 512 байт (0x3E00 –0x3FFF) этой памяти зарезервированы для целей производителя и не доступны для хранения программпользователя. 128-байтный блок памяти программ занимает адреса от 0x8000 до 0x807F.По умолчанию память программ настраивается только для чтения.
Однако CIP-51 может записыватьданные в память программ (с использованием команды MOVX ), для чего необходимо установить в 1 битразрешения записи памяти программ (PSCTL.0). Эта возможность позволяет CIP-51 обновлять программныйкод и использовать память программ для долговременного хранения данных. Подробная информация о работе сFlash-памятью приведена в разделе 9.8.2.2. Память данныхФизически реализовано 256 байт внутреннего ОЗУ, отображенного в пространстве памяти данных садресами от 0x00 до 0xFF. Младшие 128 байт памяти данных используются для регистров общего назначения(РОН) и сверхоперативного ЗУ (СОЗУ). Для доступа к младшим 128 байтам памяти данных можноиспользовать либо прямую, либо косвенную адресацию.
Ячейки с адресами от 0x00 до 0x1F разбиты на четыребанка РОН, каждый банк состоит из восьми однобайтовых регистра. Следующие 16 байт (0x20 - 0x2F) могутадресоваться побайтно или побитно как 128 бит, доступные в режиме прямой битовой адресации.Старшие 128 байт памяти данных доступны только в режиме косвенной адресации.
Эта область памятизанимает то же самое адресное пространство, что и регистры специального назначения (Special FunctionRegisters - SFR), но физически отделена от них. При обращении к ячейкам памяти с адресами 0x7F - 0xFFиспользующийся в команде режим адресации определяет, к чему осуществляется доступ: к страшим 128 байтампамяти данных или к SFR. Команды, которые используют режим прямой адресации, будут обращаться к SFR.Команды, использующие режим косвенной адресации, будут обращаться к старшим 128 байтам памяти данных.На рис.8.2 показана организация памяти данных CIP-51.МК C8051F018/19 также имеют 1024 байт ОЗУ в пространстве внешней памяти данных, доступ ккоторым осуществляется с использованием команды MOVX.
Подробная информация о работе с внешнейпамятью приведена в разделе 10.8.2.3. Регистры общего назначенияМладшие 32 байта памяти данных (0x00 - 0x1F) разбиты на четыре банка регистров общего назначения.Каждый банк состоит из восьми однобайтовых регистров, обозначаемых R0-R7. В конкретный момент времениможет быть активен лишь один банк, определяемый битами RS0 (PSW.3) и RS1 (PSW.4) в слове состоянияпрограммы (program status word ) PSW (см. описание PSW на рис.8.6). Это позволяет осуществлять быстроепереключение контекста при вызове подпрограмм и процедур обработки прерываний. Режимы косвеннойадресации используют регистры R0 и R1 в качестве индексных регистров.49Ред.
1.2C8051F018C8051F0198.2.4. Ячейки памяти с битовой адресациейКроме прямого (побайтного) доступа к памяти данных 16 ячеек этой памяти с адресами 0x20 - 0x2Fдоступны также как 128 индивидуально адресуемых бит. Каждый бит имеет битовый адрес от 0x00 до 0x7F.Бит 0 байта 0x20 имеет битовый адрес 0x00, а бит 7 байта 0x20 имеет битовый адрес 0x07. Бит 7 байта 0x2Fимеет битовый адрес 0x7F. Битовый доступ можно отличить от байтового доступа по типу используемойкоманды (операнды исходных данных и результата в первом случае являются битами, во втором – байтами).Ассемблер MCS-51™ допускает альтернативную запись для режима битовой адресации в форме ХХ.В,где ХХ – адрес байта, а В – позиция бита внутри этого байта.
Например, команда:MOV C, 22h.3присваивает значение бита 0x13 (бит 3 в ячейке с адресом 0x22) флагу переноса.Рисунок 8.2. Карта распределения памятиПАМЯТЬ ПРОГРАММ0x807F0x80000x7FFF0x3E00128 байт ISP FLASHПАМЯТЬ ДАННЫХВНУТРЕННЯЯ ПАМЯТЬ ДАННЫХ0xFFЗАРЕЗЕРВИРОВАНО0x800x7F0x3DFFСтаршие 128 байт ОЗУ(толькокосвенная адресация)Регистры специальногоназначение (толькопрямая адресация)(Прямой и косвенныйрежимы адресации)FLASH(возможновнутрисистемноепрограммированиесекторамипо 512 байт)0x00000x300x2F0x200x1F0x00Битовая адресацияМладшие 128 байт ОЗУ(Прямой и косвенныйрежимы адресации)Регистры общегоназначенияВНЕШНЯЯ ПАМЯТЬ ДАННЫХ0xFFFF (тот же самый 1024-байтныйблок ОЗУ)0xFC000x0BFF (тот же самый 1024-байтныйблок ОЗУ)0x08000x07FF (тот же самый 1024-байтныйблок ОЗУ)0x04000x03FF0x0000Один и тот же 1024-байтныйблок ОЗУ может адресоватьсякак 1Кбайтная область вовсем диапазоне 64 Кбайтнойвнешней памяти данныхОЗУ - 1024 байт(для доступа можетприменяться команда MOVX)Ред.
1.250C8051F018C8051F0198.2.5. СтекПрограммный стек может быть размещен в любом месте 256-байтной памяти данных. Область стекаопределяется с использованием указателя стека (Stack Pointer - SP, 0x81). SP будет указывать на последнююиспользованную ячейку. Следующее значение, загружаемое в стек, размещается по адресу SP+1, и затем SPинкрементируется. При сбросе SP инициализируется значением 0x07.
Поэтому первое значение, загружаемое встек, размещается по адресу 0x08, которое также является первым регистром (R0) регистрового банка 1. Такимобразом, если требуется использовать более одного банка регистров, SP следует инициализировать адресомячейки ОЗУ, не используемой для хранения данных. Стек может иметь глубину до 256 байт.МК также имеют встроенный аппаратный регистратор стековых операций, который представляет собой32-разрядный сдвиговый регистр. Каждая команда PUSH или инкремент SP загружают один регистрационныйбит в этот регистр, каждая команда CALL или прерывание загружают два регистрационных бита в этот регистр.(Команда POP или декремент SP извлекают один регистрационный бит, а команда RETURN извлекает дварегистрационных бита из этого регистра).
Схема регистратора стековых операций способна определятьпереполнение или опустошение стека и может уведомлять программные средства отладки, даже если МКотлаживается в режиме реального времени.51Ред. 1.2C8051F018C8051F0198.3. РЕГИСТРЫ СПЕЦИАЛЬНОГО НАЗНАЧЕНИЯЯчейки памяти данных с адресами от 0x80 до 0xFF, доступные в режиме прямой адресации, образуютрегистры специального назначения (special function registers - SFR).