F20-23 (1041603), страница 21
Текст из файла (страница 21)
Это может быть ячейка ОЗУ данных прямогодоступа (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.4106C8051F020/1/2/312.2.
ОРГАНИЗАЦИЯ ПАМЯТИОрганизация памяти МК с ядром CIP-51 соответствует стандарту 8051. Имеется две отдельных областипамяти, память программ и память данных, которые разделяют одно и то же адресное пространство, но доступк ним осуществляется командами различного типа. Имеется 256 байт внутренней памяти данных и 64 Кбайтадресного пространства внутренней памяти программ, реализованных в CIP-51. Организация памяти CIP-51показана на рис.12.2.Рисунок 12.2. Карта распределения памятиПАМЯТЬ ПРОГРАММ/ДАННЫХ(FLASH)Свехвоперативная0x10000 память (только данные)0xFFFFЗАРЕЗЕРВИРОВАНО0xFE000x1007FПАМЯТЬ ДАННЫХ (ОЗУ)АДРЕСНОЕ ПРОСТРАНСТВОВНУТРЕННЕЙ ПАМЯТИ ДАННЫХ0xFF0x800x7FСтаршие 128 байт ОЗУ(толькокосвенная адресация)Регистры специальногоназначение (толькопрямая адресация)(Прямой и косвенныйрежимы адресации)0xFDFFFLASH(возможновнутрисистемноепрограммированиесекторамипо 512 байт)0x00000x300x2F0x200x1F0x00Битовая адресацияМладшие 128 байт ОЗУ(Прямой и косвенныйрежимы адресации)Регистры общегоназначенияАДРЕСНОЕ ПРОСТРАНСТВОВНЕШНЕЙ ПАМЯТИ ДАННЫХ0xFFFFАдресное пространствовнешней (не встроенной)памяти XRAM0x10000x0FFFXRAM – 4096 байт0x0000(доступ осуществляетсяс помощью командыMOVX)12.2.1.
Память программCIP-51 имеет адресное пространство памяти программ 64 Кбайт. В МК физически реализовано 65536байт этой памяти программ, которая является внутрисистемной перепрограммируемой Flash-памятью,занимающей непрерывный блок адресов от 0x0000 до 0xFFFF. Следует иметь ввиду, что 512 байт (0xEE00 –0xFFFF) этой памяти зарезервированы для целей производителя и не доступны для хранения программпользователя.По умолчанию память программ настраивается только для чтения.
Однако CIP-51 может записыватьданные в память программ (с использованием команды MOVX ), для чего необходимо установить в 1 битразрешения записи памяти программ (PSCTL.0). Эта возможность позволяет CIP-51 обновлять программныйкод и использовать память программ для долговременного хранения данных. Подробная информация о работе сFlash-памятью приведена в разделе 15.107Ред. 1.4C8051F020/1/2/312.2.2. Память данныхФизически реализовано 256 байт внутреннего ОЗУ, отображенного в пространстве памяти данных садресами от 0x00 до 0xFF. Младшие 128 байт памяти данных используются для регистров общего назначения(РОН) и сверхоперативного ЗУ (СОЗУ).
Для доступа к младшим 128 байтам памяти данных можноиспользовать либо прямую, либо косвенную адресацию. Ячейки с адресами от 0x00 до 0x1F разбиты на четыребанка РОН, каждый банк состоит из восьми однобайтовых регистров. Следующие 16 байт (0x20 - 0x2F) могутадресоваться побайтно или побитно как 128 бит, доступные в режиме прямой битовой адресации.Старшие 128 байт памяти данных доступны только в режиме косвенной адресации. Эта область памятизанимает то же самое адресное пространство, что и регистры специального назначения (Special FunctionRegisters - SFR), но физически отделена от них. При обращении к ячейкам памяти с адресами 0x7F - 0xFFиспользующийся в команде режим адресации определяет, к чему осуществляется доступ: к страшим 128 байтампамяти данных или к SFR.
Команды, которые используют режим прямой адресации, будут обращаться к SFR.Команды, использующие режим косвенной адресации, будут обращаться к старшим 128 байтам памяти данных.На рис.12.2 показана организация памяти данных CIP-51.12.2.3. Регистры общего назначенияМладшие 32 байта памяти данных (0x00 - 0x1F) разбиты на четыре банка регистров общего назначения.Каждый банк состоит из восьми однобайтовых регистров, обозначаемых R0-R7. В конкретный момент времениможет быть активен лишь один банк, определяемый битами RS0 (PSW.3) и RS1 (PSW.4) в слове состоянияпрограммы (program status word ) PSW (см.
описание PSW на рис.12.6). Это позволяет осуществлять быстроепереключение контекста при вызове подпрограмм и процедур обработки прерываний. Режимы косвеннойадресации используют регистры R0 и R1 в качестве индексных регистров.12.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) флагу переноса.12.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 извлекает дварегистрационных бита из этого регистра).
Схема регистратора стековых операций способна определятьпереполнение или опустошение стека и может уведомлять программные средства отладки, даже если МКотлаживается в режиме реального времени.Ред. 1.4108C8051F020/1/2/312.2.6. Регистры специального назначенияЯчейки памяти данных с адресами от 0x80 до 0xFF, доступные в режиме прямой адресации, образуютрегистры специального назначения (special function registers - SFR). SFR позволяют управлять ресурсами ядраCIP-51 и периферийными модулями, а также осуществлять обмен данными с ними. CIP-51 дублирует SFR,типичные для архитектуры 8051, и содержит дополнительные SFR, используемые для настройки подсистем,уникальных для данного семейства МК, и доступа к ним.
Это позволяет реализовать новые возможности присохранении совместимости с системой команд MCS-51™. В таблице 12.2 перечислены все SFR МК на основеCIP-51.Регистры SFR доступны в любое время, когда для доступа к ячейкам памяти с адресами от 0x80 до0xFF используется режим прямой адресации. SFR с адресами, оканчивающимися на 0x0 или 0x8 (т.е. P0, TCON,P1, SCON, IE, и т.д.), адресуются как побайтно, так и побитно. Все другие SFR адресуются только побайтно.Незанятые адреса в области SFR зарезервированы для дальнейшего использования.
Обращение к ячейкам изэтой области даст неопределенный результат и должно быть исключено. Подробное описание каждого регистраприведено на соответствующей странице данного руководства (см. табл. 12.3).Таблица 8.2. Распределение регистров специального назначения в памятиF8F0E8E0D8D0C8C0B8B0A8A098908880SPI0CNPCA0HPCA0CPH0PCA0CPH1PCA0CPH2PCA0CPH3PCA0CPH4WDTCNBSCON1SBUF1SADDR1TL4TH4EIP1EIP2ADC0CNPCA0LPCA0CPL0PCA0CPL1PCA0CPL2PCA0CPL3PCA0CPL4RSTSRCACCXBR0XBR1XBR2PCAP4LPCAP4HEIE1EIE2PCA0CNPCA0MDPCA0CPM0PCA0CPM1PCA0CPM2PCA0CPM3PCA0CPM4PSWREF0CNDAC0LDAC0HDAC0CNDAC1LDAC1HDAC1CNT2CONT4CONRCAP2LRCAP2HTL2TH2SMB0CNSMB0STASMB0DATSMB0ADRADC0GTLADC0GTHADC0LTLADC0LTHIPSADEN0AMX0CFAMX0SLADC0CFP1MDINADC0LADC0HSMB0CR+P3OSCXCNOSCICNFLSCLFLACLIESADDR0ADC1CNADC1CFAMX1SLP3IFSADEN1EMI0CNP2EMI0TCEMI0CFP0MDOUTP1MDOUTP2MDOUTP3MDOUTSCON0SBUF0SPI0CFGSPI0DATADC1SPI0CKRCPT0CNCPT1CNP74OUT+P1TMR3CNTMR3RLLTMR3RLHTMR3LTMR3HP7TCONP0TMODTL0TL1TH0TH1CKCONSPDPLDPHP40(8)1(9)2(A)3(B)4(C)+P5+5(D)PSCTL+PCON6(E)7(F)P6Доступны в режиме побитной адресацииТаблица 12.3.