Глава 3. Программирование MK 8051GB
3.1. Программная модель (рис. 3.1, рис. 3.2)
Рис. 3.1. Структура внутренней памяти данных и РСФ
Рис. 3.2. Структура внешней памяти данных.
Внутренняя память данных представляет собой 128 восьмиразрядных ячеек, с адресами от 000h до 07Fh. Первые 32 байта организованы в четыре банка регистров общего назначения, обозначаемых соответственно банк 0 — банк 3. Каждый из них состоит из восьми регистров R0 — R7. В любой момент программе доступен только один банк регистров, номер которого содержится в третьем и четвертом битах слова состояния программы PSW .
Оставшееся адресное пространство может конфигурироваться разработчиком по своему усмотрению: в нем располагаются стек, системные и пользовательские области данных. Обращение к ячейкам памяти данных возможно двумя способами. Первый способ — прямая адресация ячейки памяти. В этом случае адрес ячейки является операндом соответствующей команды. Второй способ — косвенная адресация с помощью регистров R0 или R1: перед выполнением соответствующей команды в один из них должен быть занесен адрес ячейки, к которой необходимо обратиться.
Часть памяти данных представляет собой так называемую битовую область, в ней имеется возможность при помощи специальных битовых команд адресоваться к каждому разряду ячеек памяти. Адрес прямо адресуемых битов может быть записан либо в виде (Адрес Байта).(Разряд), например выражение 21.3 означает третий разряд ячейки памяти с адресом 21H, либо в виде абсолютного битового адреса. Соответствие этих двух способов адресации можно определить по табл. 3.1.
Для регистров специальных функций адрес прямо адресуемых битов может быть записан либо в виде выражения (Название Регистра).(Разряд), например, выражение SCON.3 означает адрес третьего разряда регистра SCON, либо в виде абсолютного битового адреса, который для данного бита равен (табл.3.1) 9B. Кроме того, некоторые биты управляющих регистров имеют собственные названия, так например данный бит имеет название TB8.
Адресация битов регистров специальных функций
Таблица 3.1.
Прямой адрес байта−− | Адреса битов по разрядам | Имя рег-ра | |||||||
(D7) | (D0) | ||||||||
0FFH | |||||||||
0F8H | FF | FE | FD | FC | FB | FA | F9 | F8 | P5 |
0F7H | - | - | - | - | - | SEPFWR | SEPFRD | SEPIF | SEPSTAT |
0F0H | F7 | F6 | F5 | F4 | F3 | F2 | F1 | F0 | B |
0E8H | EF | EE | ED | EC | EB | EA | E9 | E8 | CICON |
0E0H | E7 | E6 | E5 | E4 | E3 | E2 | E1 | E0 | ACC |
0DEH | - | ECOM4 | CAPP4 | CAPN4 | MAT4 | TOG4 | PWM4 | ECCF4 | CCAPM4 |
0DDH | - | ECOM3 | CAPP3 | CAPN3 | MAT3 | TOG3 | PWM3 | ECCF3 | CCAPM3 |
0DCH | - | ECOM2 | CAPP2 | CAPN2 | MAT2 | TOG2 | PWM2 | ECCF2 | CCAPM2 |
0DBH | - | ECOM1 | CAPP1 | CAPN1 | MAT1 | TOG1 | PWM1 | ECCF1 | CCAPM1 |
0DAH | - | ECOM0 | CAPP0 | CAPN0 | MAT0 | TOG0 | PWM0 | ECCF0 | CCAPM0 |
0D9H | CIDL | WDTE | - | - | - | CPS1 | CPS0 | ECF | CMOD |
0D8H | CF | CR | - | CCF4 | CCF3 | CCF2 | CCF1 | CCF0 | CCON |
0D7H | - | - | SEPE | SEPREN | CLKPOL | CLKPH | SEPSI | SEPSO | SEPCON |
0D0H | CY | AC | FO | RS1 | RS0 | V | - | P | PSW |
0C9H | - | - | - | - | - | - | T2OE | DCEN | T2MOD |
0C8H | TF2 | EXF2 | RCLK | TCLK | EXEN2 | TR2 | C/T2 | CP/RL2 | T2CON |
0C7H | CMP0 | CMP1 | CMP2 | CMP3 | CMP4 | CMP5 | CMP6 | CMP7 | ACMP |
0C6H | - | IE6 | IE5 | IE4 | IE3 | IE2 | IT3 | IT2 | EXICON |
0C0H | C7 | C6 | C5 | C4 | C3 | C2 | C1 | C0 | P4 |
0B8H | - | PPC | PT2 | PS | РT1 | РХ1 | РТ0 | РХ0 | IP |
0B7H | - | PPCH | PT2H | PSH | PT1H | PX1H | PT0H | PX0H | IPH |
0B6H | PAD | PX6 | PX5 | PX4 | PX3 | PX2 | PC1 | PSEP | IPA |
0B5H | PADH | PX6H | PX5H | PX4H | PX3H | PX2H | PC1H | PSEPH | IPAH |
0B0H | B7 | B6 | B5 | B4 | B3 | B2 | B1 | B0 | P3 |
0A8H | EA | EC | ET2 | ES | ET1 | EX1 | ET0 | EX0 | IE |
0A7H | EAD | EX6 | EX5 | EX4 | EX3 | EX2 | EC1 | ESEP | IEA |
0A0H | A7 | A6 | A5 | A4 | A3 | A2 | A1 | A0 | P2 |
98H | FE | SM1 | SM2 | REN | TB8 | RB8 | T1 | R1 | SCON |
97H | - | - | AIF | ACE | ACS1 | ACS0 | AIM | ATM | ACON |
90H | P1 | ||||||||
89H | GATE1 | C/T1 | M11 | M01 | GATE0 | C/T0 | M10 | TM00 | TMOD |
88H | TF1 | TR1 | TF0 | TR0 | IE1 | IT1 | IE0 | IT0 | TCON |
87H | SMOD1 | SMOD0 | - | POF | GF1 | GF0 | PD | IDL | PCON |
80H | P0 |
`-` − бит не используется
` IE0` − бит устанавливается/сбрасывается аппаратно
Для обращения к внешней памяти данных используется только косвенная адресация с помощью регистров R0 и R1 или с помощью 16-разрядного регистра-указателя DPTR. Последний относится к группе регистров специальных функций и с его помощью можно адресовать все 64 Кбайта внешней памяти.
Типы данных
Микроконтроллер 8051GB работает со следующими типами данных (рис. 3.3):
Бит – элемент памяти, принимающий значение 0 или 1.
Байт– восемь последовательно расположенных битов, пронумерованных от 0 до 7, при этом бит 0 является самым младшим значащим битом.
Слово – последовательность из двух байтов, имеющих последовательные адреса. Размер слова – 16 битов; биты в слове нумеруются от 0 до 15. Байт, содержащий нулевой бит, называется младшим байтом, а байт, содержащий 15-й бит, - старшим.
Двойное слово – последовательность из четырех байтов( 32 бита ), расположенных по последовательным адресам. Нумерация этих битов производится от 0 до 31. Слово, содержащее нулевой бит, называется младшим словом, а слово, содержащее 31-й бит, - старшим словом. Младшее слово хранится по меньшему адресу. Адресом двойного слова считается адрес его младшего слова. Адрес старшего слова может быть использован для доступа к старшей половине двойного слова.
Рис. 3.3. Типы данных