Виртуальный драйвер поддержки протокола V.24
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

 

Для работы МПУ осуществляющего обмен информацией с ПК, необходима программа эмулирующая на программном уровне протокол обмена по последовательному порту V.24.

Данная программа написана на языке ассемблера с использованием программного эмулятора процессора класса ВЕ35 написанного для компьютера IBM-PC на языке высокого уровня Pascal - 7.0.

Драйвер поддержки протокола V.24, в дальнейшем драйвер, позволяет кроме обмена данными с ПК осуществлять управление всеми составными частями комплекса с помощью программирования регистров.

Подробнее остановимся на работе программы, листинг которой представлен в прил.18. Алгоритм программы представлен на рис. 15.

Программа реализует программную поддержку протокола V.24, что накладывает свой отпечаток на структуру программы. После запуска программа начинает ожидать стартовый бита, по пришествии которого происходит последовательный прием 8 бит, которые образуют байт команды. В зависимости от команда происходит соответствующее ветвление по структуре алгоритма и выполнения заложенных действий.

Для управления МПУ существует набор команд (табл.6) состоящих из 1 или 2 байт.

 

Таблица 6

Команды управления

Команда

Назначение Количество бит
DEC BIN    
17 0001 0001 Чтение Р2 1
128+ 1000 хххх Запись в регистры 2
144+ 1001 хххх Чтение регистров 1
0 00000000 Запись Р1 2
1 00000001 Запись Р2 2
32 00100000 Чтение Т1 1

 

 2-х байтных командах, предназначенных для управления АЦП, передачи информации в ЦАП, или внешнее ОЗУ (регистры), вторым


Алгоритм работы виртуального драйвера

                                          1

Начало


                                          2

CBYTE=127

ENTO CLK


                                          3

Вывод в порт

Р1 числа 127

 


4

Вывод в порт

Р2 числа 0

 


                                          5

LOAD

 


6

RBYTE = A

 

 


                                          7

Биты                Да

4,5,6 аккумулятора

выключены?

 

 


                                                     Нет

                                          8

Да               Бит 4

аккумулятора

включен?

 

 

              Нет

 

     
 

 


                                                       

                                       

Нет        Бит 5

аккумулятора

включен?

 

 

    Да

 


   Уровень            Да

на входе Т1

высокий?

 

 

                                                              Нет

 


                                          R2 = 0                         R2 = 255

     
 

 


                                          SAVE                                SAVE

 

Процедура СНН

 


Начало

 


R4 = 1, 13

 

 

 


Конец

 

 

     
 

 

 


                                                             RBYTE = A

 

 


                                                         Бит 7

                                                             аккумулятора

                                                               включен?


    А = RBYTE1           

    A = A and 15

    R0 = A

     
 

 


         MOVX A,@R0                             Чтение из   

                                                                  порта Р2

     
 

 


        R2 = A                              R2 = A

     
 

 


              SAVE                                SAVE

 


Процедура HHH

 


Начало

 


R4 = 1, 10

 

 

 


Конец

 

 

 

 


                                                LOAD


RBYTE2 = A

     A = RBYTE1

 

 


                                             Бит 7

                             аккумулятора

                                        включен?

 

        

 


A = RBYTE1

                                                                                A = RBYTE1

                      A = A and 1

                                                                                R0 = A

A = RBYTE2

                                          Бит 0

                             аккумулятора

                                        включен?


     MOVX @R0,A

         
   


   A = RBYTE2

A = RBYTE2

A = A and 127

CBYTE = A

 

 


    Вывод в порт            Вывод в порт

Р1 аккумулятора      Р2 аккумулятора

 

 


Процедура LOAD

 

 


      Начало


        

              R2 = 0

              R5 = 8

     
 

 

 


                                                                      С = 0     A = R2

              Уровень                               С = С    R5 = R5-1

             на входе INT                     RRC A  A = R5

               высокий?

 

        

     
 

 


                  R3 = 1,14

                                                                         

                                                     Нет                    В

     аккумуляторе

                                                       ноль?

                       CHH

     
 

 


              Уровень

             на входе INT

               высокий?

 

        

 

 


C = 0     R2 = A

              A = R2  R5 = R5-1

              RRC A  A = R5

                       NOP

             
     

 

 


                                                LOAD


RBYTE2 = A

     A = RBYTE1

 

 


                                              В

              Нет     аккумуляторе

                                             ноль?

 

        

                                                             Да

 


A = R2

        

 

 


Конец

 

Процедура SAVE

 

 


      Начало


        

              A = CBYTE

              A = A or 128                                       HHH

     
 

 


              Вывод в порт                           R3 = R3 - 1

      Р2 аккумулятора                         A = R3

     
 

 

 


       NOP

                           NOP                                            В               Нет

       NOP                                         аккумуляторе

                                                                           ноль?


HHH

                                                                                         Да


R3 = 8

 


A = R2                        А = CBYTE

RRC A                              A = A and 127

R2 = A

         
   

 


                                                                      Ввод в порт Р2

аккумулятора

      

   Флаг «С»

                       включен?                             ННН

     
 

 


Конец

         
   

 


    A = CBYTE                      A = CBYTE

    A = A and 127         A = A or 128

 

 


    Вывод в порт Р2   Вывод в порт Р2

    аккумулятора         аккумулятора

 

 


байтом идет сам байт информации, а адрес получателя заложен в младших битах команды управления.

 

 

























































Дата: 2019-05-28, просмотров: 165.