Рис. 2.1.Структурная схема МК.
В состав АЛУ входят следующие блоки: комбинационная схема обработки байтов, регистры Т, регистр-аккумулятор А, схема десятичного корректора и схема формирования признаков. Аккумулятор используется в качестве регистра операнда и регистра результата. Регистр временного хранения операнда Т1 программно недоступен и используется для временного хранения второго операнда при выполнении двухоперандных команд. Комбинационная схема АЛУ может выполнять следующие операции: сложение байтов с переносом и без него; логические операции И,ИЛИ и исключающее ИЛИ; инкремент, декремент, инверсию; циклический сдвиг лево, вправо через (или минуя) флаг переноса, обмен тетрад в байте; десятичную коррекцию содержимого аккумулятора. При выполнении операций обработки данных в АЛУ на комбинационной схеме вырабатываются флаги переноса C, вспомогательного переноса (перенос из младшей тетрады в старшую) AC, нулевого содержимого аккумулятора Z и флаги наличия единицы в выбранном бите аккумулятора. Флаги переноса С и вспомогательного переноса AC фиксируются на триггерах, входящих в состав регистра слова состояния программы (ССП). Логика условных переходов по флагам, которые не сохраняются в ССП, позволяет выполнять команды передачи управления (JZ,JNZ,JB0-JB7) без их фиксации.
2.1. Программно-доступные компоненты
Регистр слова состояния программы доступен программисту и его можно прочитать (MOV A,PSW) или изменить (MOV PSW,A). Формат ССП показан на рис.2.2.
Cлово состояния программы
(PSW - Program Status Word) 7 6 5 4 3 2
1
0 C AC
F0
BS
1
S2 S1 S0
С- признак переноса;
AC |
- признак переноса; |
|
F0 |
- флаг пользователя; |
|
BS |
- селектор банка регистров; |
|
S2S1S0 |
- указатель стека. |
|
Рис.2.2. Формат ССП.
Кроме перечисленных признаков логика условных переходов МК оперирует флагами F0 и F1, функциональное назначение которых определяется разработчиком; флагом переполнения таймера TF, сигналами на входах Т0 и Т1. Кроме того, логикой переходов после окончания каждого машинного цикла опрашивается еще один флаг, а именно флаг разрешения/запрета прерываний.
Память программ и память данных в МК физически и логически разделены. Карта адресов памяти программ показана на рисунке 2.2. Резидентная память программ реализована в перепрограммируемом ПЗУ емкостью 1 Кбайт. Счетчик команд (СК) содержит 12 бит, поэтому максимальное адресное пространство, отводимое для программ, составляет 4 Кбайта, но для его использования необходимо организовать внешнюю память. Счетчик команд устроен таким образом, что в процессе счета участвуют только младшие 11 бит, поэтому из предельного состояния 7FFh (если только по этому адресу не расположена команда передачи управления) СК перейдет в состояние 000h. Состояние старшего бита СК может быть изменено только специальными командами ( SEL MB0, SEL MB1), что обуславливает разбиение памяти на два банка памяти емкостью по 2 Кбайта каждый.
При использовании внешней памяти программ следует помнить, что МК не имеет средств считывания и анализа флага МВ, равного содержимому старшего бита счетчика команд СК11. Поэтому в каждый текущий момент исполнения программы, состоящей из потока вызовов подпрограмм, нет возможности определения номера банка памяти , из которого осуществляется выборка. Так как переходы между банками выполняются только по командам SEL MB, необходимо следить за тем, чтобы подпрограммы, взаимно вызывающие друг друга, располагались в пределах одного банка памяти.
4095
. . . . . .
2048
2047
. . . . . .
1024
1023
. . . . . .
8
7
Прерывание таймера
6
5
4
3
2
Внешнее прерывание 1
0
Сброс и запуск
SEL MB1 (СК11=1)
SEL MB1 (СК11=0)
Рис. 2.2. Карта адресного пространства памяти программ.
При обработке запросов прерываний в МК старший бит счетчика команд СК11 принудительно устанавливается в 0, что приводит к необходимости размещать в пределах банка 0 подпрограмму обслуживания прерывания и все подпрограммы, вызываемые ею.
В резидентной памяти программ имеется три специализированных адреса:
адрес 0, к которому передается управление сразу после окончания сигнала СБР; по этому адресу должна находиться команда безусловного перехода к началу программы; адрес 3, по которому расположен вектор прерывания от внешнего источника;
адрес 7, по которому расположены вектор прерывания от таймера или начальная команда подпрограммы обслуживания прерывания по признаку переполнения таймера/счетчика.
Память программ разделяется не только на банки емкостью 2 Кбайта, но и на страницы по 256 байт в каждой. В командах условного перехода задается восьмибитный адрес передачи управления в пределах текущей страницы. Команда вызова подпрограмм модифицирует 11 бит счетчика команд, обеспечивая тем самым межстраничные переходы в пределах выбранного банка памяти программ.
Резидентная память данных(РПД) емкостью 64 байта имеет в своем составе два банка рабочих регистров 0-7 и 24-31 по восемь регистров в каждом. Выбор одного из банков регистров выполняется по команде SEL RB. Рабочие регистры доступны по командам с прямой адресацией, а все ячейки РПД доступны по командам с косвенной адресацией. В качестве регистров косвенного адреса используются регистры R0, R1 и R0*, R1*.
Ячейки РПД с адресами 8-23 адресуются указателем стека из ССП и могут быть использованы в качестве 8-уровневого стека. В случае,
если уровень вложенности подпрограмм меньше восьми, незадействованные в стеке ячейки могут использоваться как ячейки РПД. При переполнении стека регистр-указатель стека, построенный на основе 3-битного счетчика, переходит из состояния 7 в состояние 0. МК не имеет команд загрузки байта в стек или его извлечения из стека, и в нем фиксируются только содержимое счетчика команд и старшая тетрада ССП (флаги). В силу этого разработчику необходимо следить за тем, чтобы вложенные подпрограммы не использовали одни и те же рабочие регистры. Карта адресов памяти программ показана на рисунке 2.3.
Практически все команды с обращением к РПД оперируют с одним байтом. Однако по командам вызова и возврата осуществляется доступ к двухбайтным словам. В памяти данных слова хранятся так, что старший байт слова располагается в ячейке с большим адресом, а в памяти программ порядок расположения байтов по старшинству при хранении двухбайтных слов обратный. В МК-системах, где используется внешнее ОЗУ, через регистры косвенного адреса R0 и R1 возможен доступ к ВПД емкостью 256 байт.
Программисту также доступен внутренний восьмибитный двоичный суммирующий счетчик, который может быть использован для формирования временных задержек и для подсчета внешних событий. Содержимое таймера/счетчика (Т/СNT) можно прочитать (MOV A,T) или изменить (MOV T,A). Команда STRT T запускает таймер/счетчик в режиме таймера, а команда STRT CNT- в режиме счетчика событий. Остановить работу (но не сбросить содержимое) таймера/счетчика можно командой STOP TCNT или сигналом системного сброса СБР.
63
32
Резидентная память данных
32 * 8
31
26
| 05_Холера |
| 10.4. Исследование регистров |
| 1112 |
| 12 |
| 1568 |
| 1673 |
| 17 |
| 1703 |
| 1885 |
| 2. Генераторы постоянного тока |