Устройство управления шаговым двигателем, страница 4

         mvi   a,0ech                           

            out    porta

         mvi   a,7eh                             ;закрываем ворота между камерами     

            out    portb

         call    zader

         mvi   a,0eeh                           ;поднимаем уровень воды   

            out    portb

         call    zader

         mvi   a,8eh         

            out    portb

         call    zader

         mvi   a,8ch                             ;выходит корабль       

            out    portb

         call    zader

            mvi     a,0ECh                                                   

         out    porta                   

         out    portb

         call    zader

         lxi       h,flag                          

         mvi   m,11h                           

outP:   jmp      circl

***************Задержка*********************************************

zader:  mvi   d,1

time2:  dcr    d

         lxi     h,pov                                     ;3.1

zader1: dcx   h                                             ;3.2

         mov  a,h                                ;3.3

         ora    l                                    ;3.4

         jnz     zader1                           ;3.5

         mov  a,d                                ;3.3

         ora    l                                    ;3.4

         jnz     time2                            ;3.5

         ret                                          ;3.6

****************Переменые*******************************************

flag:   db     0h                                 ;текущее состояние системы

klav:  db     0h                                 ;код нажатой клавиши

end

4.Расчёт временной задержки.

Составим уравнение: Од + Мн * PSVR = 2220000,

где  Од - суммарное количество тактов команд, выполняющихся однократно

          при формировании временной задержки;

     Мн - суммарное количество тактов команд, выполняющихся в цикле           

   PSVR - количество повторений цикла;

2220000 - количество тактов в 1 секунде (для тактовой частоты 2.22МГц).

Од = 17+7+(5+10)*10+(4+5+1)*10+10=284 тактов

Мн = 10+5+5+4=24 тактов

Для расчёта количества повторений цикла равному 1 секунде, необходимо количество тактов разделить на 10.

PSVR = ((2220000-Од)/Мн = (2220000/10)-374)/24 = 9238 раз

В качестве PSVR берется целое число проходов  9238.

Машинный код.

     Кросс-ассемблер 80/85  ***  Объектный файл my_3.obj

Входной файл   > my_3.asm

Файл листинга  > my_3.lst

0800  3E 89 D3 83 31 00 09 06 00 1E 00 16 01 3E EC D3

0810  80 D3 81 0E 64 DB 82 E6 09 CA 13 08 0D C2 15 08

0820  DB 82 21 82 09 77 0E 64 DB 82 A7 C2 26 08 0D C2

0830  28 08 21 82 09 7E FE 01 CA 03 09 21 81 09 7E FE

0840  00 C2 50 08 3E 8C D3 81 21 81 09 36 01 C3 13 08

0850  FE 01 C2 61 08 3E 8E D3 81 21 81 09 36 02 C3 13

0860  08 FE 02 C2 72 08 3E EE D3 81 21 81 09 36 03 C3

0870  13 08 FE 03 C2 83 08 3E 7E D3 81 21 81 09 36 04

0880  C3 13 08 FE 04 C2 98 08 3E 8C D3 80 3E 72 D3 81

0890  21 81 09 36 05 C3 13 08 FE 05 C2 AD 08 3E 70 D3

08A0  81 3E 8E D3 80 21 81 09 36 06 C3 13 08 FE 06 C2

08B0  C2 08 3E EE D3 80 3E 7C D3 81 21 81 09 36 07 C3

08C0  13 08 FE 07 C2 D3 08 3E 7E D3 80 21 81 09 36 08

08D0  C3 13 08 FE 08 C2 E4 08 3E 72 D3 80 21 81 09 36

08E0  09 C3 13 08 FE 09 C2 F5 08 3E 70 D3 80 21 81 09

08F0  36 10 C3 13 08 3E 7C D3 80 D3 81 21 81 09 36 11

0900  C3 13 08 21 81 09 7E FE 11 C2 6C 09 3E 70 D3 80