Главная страница
Навигация по странице:

  • Десятичное число Команда

  • Метка Команда Примечание

  • 8.6.3. Блок таймеров

  • Часть III. Описание архитектуры учебной эвм


    Скачать 2.15 Mb.
    НазваниеОписание архитектуры учебной эвм
    Дата23.12.2022
    Размер2.15 Mb.
    Формат файлаdoc
    Имя файлаЧасть III.doc
    ТипПрактикум
    #861303
    страница3 из 6
    1   2   3   4   5   6

    Учебная модель ЭВМ: контроллер дисплея


    Дисплей представляет собой модель внешнего устройства, реализующую функции символьного дисплея. Дисплей может отображать символы, задаваемые ASCII-кодами, поступающими на его регистр данных.



    Дисплей включает:

    • видеопамять объемом 128 слов (ОЗУ дисплея);

    • символьный экран размером 8 строк по 16 символов в строке;

    • четыре программно-доступных регистра:

      • DR (адрес 0) — регистр данных;

      • CR (адрес 1) — регистр управления содержит следующие флаги (устанавливаются и сбрасываются программно):

        • Е – флаг разрешения работы дисплея; при Е = 0 запись в регистры AR и DR блокируется;

        • А – флаг автоинкремента адреса; при А = 1 содержимое AR автоматически увеличивается на 1 после любого обращения к регистру DR – по записи или чтению.

      • SR (адрес 2) – регистр состояния содержит единственный флаг Err – ошибки устанавливается аппаратно при попытке записать в регистр адреса число, большее 127, сбрасывается программно;

      • AR (адрес 3) – регистр адреса.

    Доступ в видеопамять осуществляется через «окно интерфейса»  необходимо сначала загрузить в регистр адреса AR номер ячейки видеопамяти, тогда обращение к регистру данных будет означать обращение (ввод или вывод) к ячейке видеопамяти с указанным адресом.

    Контроллер дисплея выполняет две команды при выводе соответствующих кодов по адресу 1:

    Десятичное число

    Команда

    101

    очистить дисплей (действие команды эквивалентно нажатию кнопки Очистить в окне Дисплей), при этом очищается видеопамять (в каждую ячейку записывается код пробела — 032), устанавливается в 000 регистр адреса AR и сбрасываются флаги ошибки Err и автоинкремента А;

    102

    сбросить флаг ошибки Err в регистре SR.

    Пример простой программы, выводящей на дисплей (в начало экрана) слово «Май»:

    Метка 

    Команда

    Примечание

     

    RD #11

    ; включаем дисплей и устанавливаем

     

    OUT 11

    ; флаг автоинкремента;

     

    RD #0

    ; задаём начальный адрес

     

    OUT 13

    ; выводимого слова;

     

    RD #204

    ; ввод кода буквы «М»

     

    OUT 10

    ; вывод на дисплей

     

    RD #224

    ; ввод кода буквы «а»

     

    OUT 10

    ; вывод на дисплей

     

    RD #233

    ; ввод кода буквы «й»

     

    OUT 10

    ; вывод на дисплей

     

    HLT

     

    Ещё один пример программы, выставляющей в начало каждой строки её номер:

    Метка

    Команда

    Примечание

     

    RD #10

    ; включаем

     

    OUT 11

    ; дисплей;

     

    RD #0

    ; задаём начальный

     

    WR R1

    ; адрес вывода;

     

    RD #49

    ; вводим код

     

    WR R2

    ; цифры «1»;

     

    RD #8

    ; вводим число

     

    WR R3

    ; повторений цикла;

    M1:  

    RD R1

    ; читаем текущий адрес

     

    OUT 13

    ; и передаём в регистр адреса дисплея;

     

    ADD #16

    ; увеличиваем адрес на 16 – на начало следующей строки;

     

    WR R1

    ; сохраняем изменённый адрес;

     

    RD R2

    ; читаем код цифры – номер строки;

     

    OUT 10

    ; передаём код цифры на дисплей;

     

    RD @R2+

    ; увеличиваем содержимое R2 (код цифры) на единицу;

     

    JRNZ R3,M1

    ; декремент R3 и переход на начало цикла, если R3 ≠ 0;

     

    HLT

     

    8.6.3. Блок таймеров

    Блок таймеров (рис. 8.13) включает в себя три однотипных канала, каждый которых содержит:

    • пятиразрядный десятичный реверсивный счетчик Т, на вход которого поступают метки времени (таймер);

    • программируемый предделитель D;

    • регистр управления таймером CTR;

    • флаг переполнения таймера FT.

    Регистры таймеров Т доступны по записи и чтению (адреса 1, 3. 5 соответственно для Т1, Т2, ТЗ). Программа в любой момент может считать текут содержимое таймера или записать в него новое значение.



    Рис. 8.13. Блок таймеров
    На входы предделителей поступает общие для всех каналов метки времени CLK с периодом 1 мс. Предделители в каждом канале программируются независимо, поэтому таймеры могут работать с различной частотой.

    Регистры управления CTR доступны по записи и чтению (адреса 2, 4, 6) и содержат следующие поля:

    • Т (разряд 5) — флаг включения таймера;

    • ЕI (разряд 4)— флаг разрешения формирования запроса на прерывание при переполнении таймера;

    • I/D (разряд 3)— направление счета (инкремент/декремент), при I/D = 0 таймер работает на сложение, при I/D = 1 — на вычитание;

    • k(разряды [1:2]) — коэффициент деления предделителя (от 1до 99).

    Флаги переполнения таймеров собраны в один регистр — доступный только по чтению регистр состояния SR, имеющий адрес 0. Разряды регистра (5, 4 и 3 для Т1, Т2, ТЗ соответственно) устанавливаются в 1 при переполнении соответствующего таймера. Для таймера, работающего на сложение, переполнение наступает при переходе его состояния из 99 999 в 0, для вычитающего таймера — переход из 0 в 99 999.

    В окне обозревателя (рис. 8.14) предусмотрена кнопка Сброс, нажатие которой сбрасывает в 0 все регистры блока таймеров, кроме CTR, которые уста­навливаются в состояние 001000. Таким образом, все три таймера обнуляют­ся, переключаются в режим инкремента, прекращается счет, запрещаются прерывания, сбрасываются флаги переполнения и устанавливаются коэффициенты деления предделителей равными 01.



    Рис. 8.14. Окно обозревателя блока таймеров

    Программное управление режимами блока таймеров осуществляется путем записи в регистры CTR соответствующих кодов. Запись по адресу SR числа с 1 в третьем разряде интерпретируется блоком таймеров как команда, причем младшие разряды этого числа определяют код команды:

    • ххх100 — общий сброс (эквивалентна нажатию кнопки Сброс в окне обозревателя);

    • ххх101 — сброс флага переполнения таймера FT1;

    • ххх102 — сброс флага переполнения таймера FT2;

    • ххх103 — сброс флага переполнения таймера FT3.


    1   2   3   4   5   6


    написать администратору сайта