Формат слова состояния PSW показан на Рис. 11.2. Трехразрядный указатель стека SP определяет один из восьми уровней стека, расположенного во внутреннем ОЗУ данных. Селектор банка регистров определяет один из двух банков РОН, являющийся активным. Бит BS является программно-доступным, как и бит F0, по значению которого можно выполнить команду условного перехода. Флаги переноса (из 7 разряда) и дополнительного переноса (из 3 разряда) формируются в арифметических операциях.
C
AC
F0
BS
SP
C
- флаг переноса;
BS
- селектор банка регистров;
AC
- флаг доп. переноса;
SP
- указатель стека.
F0
- флаг пользователя;
Рис. 11.2. Формат PSW
Распределение адресного пространства внутренней памяти данных показано на Рис. 11.3,а. К каждой ячейке памяти 00..3Fh можно обратиться по косвенному адресу и, кроме того, некоторые ячейки выполняют роль РОНов и стека.
К РОНам можно обращаться по прямому адресу, причем в зависимости от значения BS роль РОНов выполняют ячейки 00..07h или 18..1Fh. Каждый уровень стека занимает 2 байта, в которые записывается 12-разрядный СчК и старшая тетрада PSW (см. Рис. 11.3,б). Стек загружается только по команде CALL или по прерыванию, а разгружается - по команде RET.
В ОМЭВМ серии К1816 существует четкое разделение памяти на область программ и область данных. В область программ можно обратиться только по адресу, содержащемуся в СчК. Невозможно разместить фрагмент программы в свободной области памяти данных, т.к. процедуры обращения к ЗУ программ и данных проводятся с выработкой разных управляющих сигналов.
Память программ ОМЭВМ ..ВЕ48/49/35 может составлять до 4К байт, причем часть этой памяти (1-2К) может располагаться на кристалле. ОМЭВМ автоматически генерирует циклы обращения к внутренней памяти программ, если адрес команды (содержимое СчК) лежит в пределах внутренней памяти и на управляющий вход EMA подан L-уровень. При EMA = 1 независимо от содержимого СчК генерируется цикл обращения к внешней памяти программ. Таким образом, подав H-уровень на вход EMA, можно отключить внутреннюю память программ.
К системным ресурсам ОМЭВМ относится 8-разрядный таймер/счетчик внешних событий T. Это программно-доступный регистр (имеются команды MOV A,T и MOV T,A), который может работать (аппаратный суммирующий счетчик) в режиме таймера или счетчика внешних событий.
а)
7 0
00h
R0
01h
R1
РОН, банк 0
б)
07h
R7
7 0
08h
Сч. К [7:0]
09h
PSW[7:4]
Сч. К [11:8]
СТЕК
8уровней
по 2 байта
7 4 3 0
16h
17h
18h
R0¢
19h
R1¢
РОН, банк 1
1Fh
R7¢
20h
3Fh
ОЗУ
Рис. 11.3. Распределение памяти данных и формат уровня стека
В режиме таймера подсчитываются импульсы тактового генератора после делителя на 480. Таким образом, одна единица таймера соответствует 80 мкС (при тактовой частоте 6 МГц), а максимальное время счета - 20,4 мС. Запуск таймера осуществляется по команде STRT T, а прекращение счета - по команде STOP TCNT.
В режиме счетчика внешних событий подсчитывается число отрицательных перепадов (H ® L) на входе T1; запуск режима счета внешних событий осуществляется по команде STRT CNT, а прекращение счета – по команде STOP TCNT.
Переполнение таймера/счетчика во всех режимах вызывает установку флага таймера TF, и внутреннее прерывание по адресу 007, если прерывание по таймеру не запрещено.
Содержимое таймера/счетчика может быть в любой момент считано в аккумулятор A и там проанализировано. Предварительной загрузкой в T константы (из аккумулятора) можно выбрать произвольное время отсчета (в пределах диапазона 0,08 .. 20,4 мС с шагом 0.08 мС)
Подсистема прерываний ОМЭВМ включает два радиальных прерывания: внешнее - по входу INT (с вектором 003) и внутреннее - по переполнению таймера/счетчика (вектор 007). Каждое прерывание может быть запрещено программно. Команды управления подсистемой прерываний приведены в разделе 11.1.4 (специальные команды).
При необходимости можно использовать вход счетчика внешних событий T1 для подачи второго внешнего радиального прерывания (с вектором 007). В этом случае таймер следует загрузить кодом FF, тогда появление импульса на T1 вызовет переполнение счетчика и прерывание с вектором 007.