Ознайомлення з способами використання ліній LPT-порту для приєднання нестандартних зовнішніх пристроїв, страница 2

регістр приєднано до ліній входами,  а зовні  виходять інверсні значення того,  що потрапило у регістр.  Але при зчитуванні даних  регістр від’єднано від ліний  і  зчитане буде те,  що в даний момент зовні приєднано до ліний.

Закриті транзистори віходів з відкритим колектором не заважатимуть встановленню на входах  ліній  значень, відмінних  від тих,  що  в регістрі.  

   Текст:   HEX  F   37A   PC!    встановить  три розряди регістру в нулі,

а один в одиницю (працює інверсно) і згідно схеми засвітяться лише три.  При  цьому  перемикачі  1,2,3,4  мають бути у стані  OFF.

На двох окремих світлодіодах  та двох на груповому індикаторі  можна  спостерігати результат пересилання

    6  Читання даних з регістру керування.

Пересилання у регістр  керування числа 4  встановить  на ліниях

регістру  високий   рівень напруги.  За допомогою  перемикачів  1,2,3,4

можна встановити будь-які  значення розрядів  і  текст

              HEX  37A    PC@   F  AND   .

виведе   на екран   значення  прочитанного числа  в інверсному вигляді

всіх розрядів окрім  CR2.

    7  Логічні  операції   

У  тексті   п.6,  щоб позбутися зайвих прочитаних розрядів,  виконана

логічна операція  AND  між числом на стеку та  числом-маскою  F ,  заданим

у рядку.  Результат – зайві чотири старші розряди стали нульовими.

      Щоб дописати  у число одиницю  у потрібний двійковий  розряд  можна

скористатися  операцією OR.

 Текст   BIN  10000001   100  OR  U.  DECIMAL      демонструє,  як  у

число  10000001   дописали одиницю у розряд номер 2 і  вивели на екран як

ціле без знака.

      Операцією  XOR  можна скористатися для інвертування числа  або

окремих його розрядів. Для  цього   у відповідних місцях числа-маски  слід

поставити одиниці.  Нехай  маємо байт  01100111  (можна двобайтне число)

Текст:   BIN  01100111   11111111 XOR  .   DECIMAL   виведе інверсне число.

Текст:   BIN  01100111   00000110 XOR  .   DECIMAL    інвертуватиме лише

розряди 1 та 2.

     8    Створення  нових слів (операторів мови) з простою структурою

Всі дії попереднього тексту  можна виконати одним  словом.  Для  цього

треба  ввести  :  NS  01100111 00000110 XOR  .   ;     Тепер у словнику системи буде слово NS.

 Текст:   BIN  NS  DCIMAL  зробить  такі ж дії, як і рядок тексту.

    9  Нескінченний цикл з виходом по Ctrl-Pause

Структура:

  :  NS1  BEGIN   (далі  те ,  що треба періодично повторювати)  AGAIN  ;                                                   

   10  Часова затримка.

Слово  MS  у  тексті     500 MS   призведе до затримки  у 500 мілісекунд,

тобто 0.5 секунди. Але відлік часу буде  невірний, якщо попередньо  одноразово не   виконати   USING  MS  1  LOAD.

     Інше  у  довідковій програмі.

  Приклад виконання завдання  з  демонстрацією

      Формулювання завдання:

           Записати  довільне число у регістр даних.  Запропонувати  алгоритм,

при виконанні якого  тільки   розряд номер 3 (нумерація з нуля)  змінював би своє  значення з частотою 1 герц.

        Розв’язок.

        Опис алгоритму;

      1.  На стек вводимо довільне число.

      2.  Запускаємо виконання  слова  NS2,  у якому

                               -  слово  зі стеку переслано у регістр даних,

                               -  почато нескінченний цикл,

                               -  читаємо  на стек  число з регістру даних,

                               -  виконуємо операцію ХОR з маскою,  де одиниця  є

                                        лише  у розряді номер 3,

                                -  пересилаємо число з стека у регістр даних,

                               -  виконуємо затримку часу на 0.5 сек,                                    

                               -  закриваємо нескінченний цикл

                                  завершено визначення  NS2, проводимо компіляцію.

     3  Під час виконання NS2 на індикаторі можна спостерігати  миготіння

          розряда номер три регістра даних.

    4.  Текст для форт- системи. Приготування  NS2

       HEX   :  NS2   378   PC!  ( Переслали число в регістр даних)

                       BEGIN    (  Почали цикл)

                       378  PC@   (  Прочитали на стек число з регістра даних)

     [  BIN  ]    1000   XOR  (  Iнвертуємо  розряд 3 )

     [  HEX ]    378   PC!    ( Переслали число в регістр даних)

     [  DECIMAL ]   500  MS  ( Виконуємо часову  затримку)

                        AGAIN  ;      ( Закрили цикл  та визначення )

  Текст для виконання експерименту:

    DECIMAL  175  NS2   <Enter>

На індикаторі має  мигкотіти  розряд номер 3 регістру даних

 Перелік  завдань:

1  Організувати  у регістрі даних  циклічний зсув  одиниці  праворуч.

2  Організувати у регістрі даних  циклічний зсув двох сусідніх  одиниць 

     праворуч.

3  Організувати у регістрі  даних  двійковий лічильник  з  частотою 

      додавання одиниць  2 гц

4  Записати у регістр даних та у регістр  керування  різні чотири розрядні   

      числа  та  через секунду регулярно обмінювати їх  місцями

5   Записати  у регістр даних число  і,   скориставшись  читанням  регістру

     статусу  регулярно  обмінювати старший та молодший напівбайти  в

     регістрі  даних.

6   Організувати   на  індикаторі даних  циклічний зсув ліворуч  одиниці  по

     регістру даних та по регістру  керування.

7   Розробити статті для  встановлення  та для скидання  окремих  бітів

     регістру  керування.

8   Запустити лічильник десятих часток секунди у регістрі даних  з  зупинкою

     натисканням клавіші,  з десятковим відображенням часу від початку  на

    екрані  та війковим на індикаторі.