Пример подключения цифро-аналогово преобразователя.
Алгоритм

Фрагмент программы
| LXIH ADR MOV А. М OUT ЗОН | : в I HL заносятся адрес мл. бита кода : запись в регистр1 (DD2), младший байт в аккумулятор |
| MVI A. 01H OUT 83H | : вкл. Регистра 1(DD2) |
| MVI А. 00Н OUT 83H | : откл. регистра l(DD2) |
| INX H MOV A,M OUT 80H | : адресе старшего байта : старший байт в аккумулятор : старший байт в порт А |
| MVI A,03H OUT 83H | : вкл. Регистра 2 (DD3) |
| MVI A, 02H OUT 83H | :откл. регистра 2 (DD3) |
| MVI А, 05Н OUT 83H | : запись в ЦАП из : регистра 1, 2 одновременно |
| MVI A. 04H OUT 83H | :откл. регистров |
Спроектировать систему управления перемещением тележки по горизонтальной направляющей длиной L, на основе микропроцессорных БИС. Тележка приводится в движение двигателем постоянного тока параллельного возбуждения, управляемым преобразователем, который обеспечивает плавный разгон и торможение с заданной интенсивностью КИ1 и КИ2 =dn/dt [об/мин за сек] и дальнейшую работу двигателя с постоянной А. Преобразователь управляется постоянным напряжением Uу по закону Uвых=Ку*Uу. Микропроцессорная система управления обеспечивает защиту двигателя от перегрузки по току Imах с выдержкой времени tз и превышения скорости Nmах мгновенно. Программа должна обеспечивать движение в любую сторону.
Длина участка разгона и торможения с КИ1 равна L1, а с КИ2 равна L2. Полный путь L разбивается на участки по параметру В. Датчик скорости выдает сигнал Un. Передаточный коэффициент линейной скорости V через угловую скорость n равен Кn==V/n [м/с/об/мин]. Предусмотреть контроль скорости на участке L1 и включение тормоза в конце пути.
Исходные данные: L=400м, L1=20 м; L2=50 м; Ку=11; UУ=±10 B; КИ1=1 об/мин за сек; КИ2=50об/мин; Кn=1 .10-3 м/с/об/мин; IMAX=50 A; tз=0.4 с; NMAX= 2500 об/мин, Un = 0,005 n.
Рабочая установка представляет собой тележку, которая совершает движение по прямолинейному участку L.
Тележка приводится в движение двигателем постоянного тока параллельного возбуждения, управляемый преобразователем, который обеспечивает плавный разгон и торможение с заданной интенсивностью КИ1 и КИ2 и дальнейшую работу двигателя с постоянной скоростью. Преобразователь управляется постоянным напряжением U у по закону Uвых=Ку*Uу.
Длина участка разгона и торможения с КИ1 равна L1 а с КИ2 - L2. Полный путь L разбивается на участки по параметрам L1 - датчики, L2 - время.
Датчики SА3 и SА4 на участке L1 должны срабатывать при прохождении тележки возле них и воздействии наних постоянным магнитом.
Датчики SА1 и SА2 используются для полной остановки тележки.

Расчет параметров движения:
1) al = Kи1 . Kna1 =1 .10-3 м/с2

2) V1-Скорость в конце L1; V1=al .tl = 1.10-3.200=0,2 м/с
3) nl – Частота вращения двигателя в конце пути (L1)
nl=KИl .tl= 1. 200 = 200 об/мин

4) Время перехода участка (t2)
По расчёту: t2 =40.9 с
5) V2= V1+ a2t2 = 0,2+0,05.40,9 = 2,245 м/c
6) n2= nl+KИ2t2= 200+50.40,9 = 2245 об/мин
n2 - не должно превышать заданное максимальное значение nmax.
7) Рассчитываем длинну участка L3:
L3=L-2L1-2L2=260 м
8) Рассчитываем время движения на третьем участке:
![]() |
9) Из уравнения скорости идеального Х.Х.
![]() | ![]() | ||
10) Iя Rя Рассчитывается для номинального режима
Для большинства машин постоянного тока nH меньше n0 на 5%, поэтому
![]() |
11) Примем, что скорость в конце L2 и на L3 номинальная т.е. n2=nH и рассчитаем напряжение на двигателе в конце L2 и на L3
![]() |
U2= n2-СEФ + IяRя = 2245 . 0,044+5,5 = 104.28 В
12) Так как для механизма всегда справедливо соотношения
![]() |
13) U1= n1-СEФ + IяRя = 200.0,044+0,11 = 8,91 В
![]() |
14) Строим диаграмму, для этого необходимо полное время движения тележки
![]() |
t:= 2tl + 2t2+t3=597.613c
15) Определим время дискретизации Δt и ΔU
Промежуток времени через который на ЦАП выводится новое значение напряжения управления. Изменения значения напряжения управления не должно превышать 3% от полного изменения напряжения на участке. Выбирается участок с наибольшим ускорением L2.
(UУl)/tl=0,03/Δt
t2=ΔUy2/Δt; ΔUyl=(Uy2-Uyl)* Δt/t2-tl
Δt = 0.03-t2 = 7.227
ΔUyl=UУ1 Δt/t1 =0.029 В
Δuy2=UУ2 Δt/t2 =0.284 В
Определим разрядность ЦАП Uref;= 10 Uy=n*Uref; n=Uyl/Uref
n = ΔUyl/Uref=0.0029
Теперь переведем это число в двоичный код:
n=2.927-10-3 n1 =5.854-10-3 n2=0.012 n3=0.023 n4=0.047 n5=0.094 n6=0.187 n7=0.375 n8=0.749 n9=1.499 n10= 2.997
Разрядность ЦАП получаем 10
Выбор датчика скорости
Определение разрядности АЦП
Датчик скорости выбирается из условия: nдc>nmах. В зависимости от этого принимаем датчик скорости или тахометр тока ТМГ-30П возбуждаемый постоянными магнитами. Паспортные данные ТМГ-30П. Р2= 20Вт; V= 230 В;
I = 0,087A; n= 4000об/мин;
![]() |
Rn = 2650 0м
По условию выбранный датчик подходит Для определения разрядности АЦП построим характеристику
U0=144B; n0=2500 nmin=50 Uirn=5 B Найдем Umin
Umin=U0nmin/n0=2.88 B
Найдем минимальное напряжение на входе АЦП
Uirnmin = UirnUmin/U0=0.1 B
Uirnmin =0.1 Uirnmin1 =0.2 Uirnmin2 =0.4 Uirnmin3 =0.8 Uirnmin4 = 0.6 Uirnmin5 = 1.2 Uirnmin6 == 2.4 Uirnmin7 = 4.8 Uirnmin8 =9.6 Uirnmin9 = 19.2 Uimmin =0.1 Разрядность АЦП получаем 5
Таблица прерываний.
| IRQO | SAI | подастся "0", на выходе ЦАП ступенчато возрастает напряжение На механический тормоз подастся "1", на выходе ЦАП напряжение исчезает DB -> "0" | |
| IRQI | SA2 | На механический тормоз подастся "1", на выходе ЦАП напряжение исчезает DB -> "0" На механический тормоз подается "0", на выходе ЦАП ступенчато возрастает напряжение | |
| IRQ2 | SA3 | Запускается таймер загружая коэффициент и подается сигнал на СЕ. И изменяем величину напряжения Изменяем величину напряжения производим проверку (т.е сравниваем теоретическое значение с действительным) | |
| IRQ3 | SA4 | Измеряем величину изменения напряжения, производим проверку Запуск таймера (подаем сигнал на СЕ, загружаем коэффициент изменяем ДУ | |
| IRQ4 | SAI | При поступлении сигнала запускаем таймер на отсчет t3. После отсчета напряжения на "0", включается механический тормоз DC7 -> "1" | |
| IRQ6 | CЧ2(OUT1) | Отключается таймер, величину напряжения ди = 0, загружаем новый коэффициент, запускаем таймер | |
| IRQ5 | C41(OUT2) | Увеличиваем напряжение на ΔU | |
| IRQ7 | RAD | Считываем данные с АЦП |
Программа с помощью которой задается движение тележки веред и назад.
Инициализация системы.
| Адрес | код | команда | Комментарий |
| 3E90H | MVI А,90Н | УВВ упр. слово 10010000 (90H) | |
| D383H | OUT 83H | ||
| 3E36H | MVI А,36Н | СЧ 0 упр. слово 00110110 36Н | |
| D387H | OUT 87Н | ||
| 3E20H | MVI A,20H | Загрузка коэффициента N0=20000 | |
| 200A | D384H | OUT 84H | |
| 200C | 3E4EН | MVI A,4EH | |
| 200E | D384H | OUT 84H | |
| 3E74H | MVI A,74H | СЧ 1 упр. слово 01110100(74Н) | |
| D387H | OUT 87Н | ||
| 3EB2H | MVI A,B2H | СЧ 2 упр. слово 10110010(В2Н) | |
| D387H | OUT 87Н | ||
| 3Е12Н | MVI A,12H | КППСКИ1 00010010(12Н) | |
| 201A | D388H | OUT 88H | |
| 201C | 3E09H | MVI A,09H | СКИ2 00001001(09Н) |
| 201E | D389H | OUT 89H |
Подпрограмма прерываний КПП.
| CD0050 | CALL конт1 | IRQO | ||
| C9 | RET | |||
| CD0D50 | CALL конт2 | IRQ 1 | ||
| 090В | C9 | RET | ||
| CD1A50 | CALL конт3 | |||
| C9 | RET | |||
| CD2E50 | CALL конт3 | IRQ 2 | ||
| C9 | RET | |||
| CD2450 | CALL конт4 | |||
| C9 | RET | |||
| CD3850 | CALL конт4 | IRQ3 | ||
| C9 | RET | |||
| CD5551 | CALL защ. | IRQ 4 | ||
| C9 | RET | |||
| CD | CALL | IRQ 5 | ||
| 092B | C9 | RET слог. | ||
| CD | CALL время2 | IRQ 6 | ||
| C9 | RET | |||
| CD | CALL | IRQ7 | ||
| 093B | C9 | RET |
Основная программа (движение вперед).
| адрес | код | метка | команда | Комментарий |
| CD4D51 | CALL | обнул. ячейку содерж. информ. о датчике | ||
| CD6A51 | прогр1 | CALL | откл мех. тормоз f | |
| CD3051 | CALL | устанавливаем знак "+" | ||
| CD050 | CALL | включаем счетчик 1 на Δt | ||
| ЗООС | CD5050 | CALL | заносим ΔUу1 в регистр | |
| 300F | CDA050 | CALL | заносим кол-во байт числа | |
| CDB050 | мук1 | CALL | вызываем подпрограмму сложения | |
| CD 1551 | CALL | вывод на ЦАП | ||
| CD1A50 | CALL | проверка сигнала с датчика SA3 | ||
| 301B | CDED50 | прогр2 | CALL | включаем счетчик 2 на t2 9 |
| 301E | CD5B50 | CALL | заносим дПу2 в регистр | |
| CDA050 | CALL | заносим кол-во байт числа | ||
| CDB050 | мук2 | CALL | вызываем подпрограмму сложения | |
| CD1551 | CALL | вывод на ЦАП | ||
| 302D' | CDFA50 | прогрЗ | CALL | включаем счетчик 2 на t3 ^ |
| CD6650 | CALL | заносим Δuу3=0 в регистр | ||
| CDA050 | CALL | Заносим кол-во байт числа | ||
| CDB050 | мукЗ | CALL | Вызываем подпрограмму сложения | |
| CD1551 | CALL | Вывод на ЦАП | ||
| 303C | ||||
| 303F | CD7F50 | прогр4 | CALL | Заносим (-ΔUу2) в регистр |
| CDA050 | CALL | Заносим кол-во байт числа | ||
| CDB050 | мук4 | CALL | Сложение | |
| CD1551 | CALL | Вывод на ЦАП | ||
| 304B | CD 2450 | CALL | Проверка сигнала с датчика SA4 | |
| 304E | CD7150 | прогр5 | CALL | Заносим (-ΔUyl)B регистр |
| CDA050 | CALL | Заносим кол-во байт числа | ||
| CDB050 | мук5 | CALL | Сложение | |
| CD1551 | мук6 | CALL | вывод на ЦАП | |
| 305A | CD8750 | CALL | заносим (-AUim) в регистр | |
| 305D | CD9250 | CALL | заносим AUim в регистр | |
| CDOB50 | CALL | сложение | ||
| CD4051 | CALL | проверка скорости | ||
| CD0В50 | CALL | проверка сигнала с датчика SA2 | ||
| CD6F51 | CALL | напряжение исчезает |
Основная программа (движение назад)
| адрес | код | Метка | Команда | Комментарий |
| 306С | CD4D51 | CALL | обнул. ячейку содерж. информ. о датчике | |
| 306F | CD6A51 | Прогр6 | CALL | откл мех. тормоз |
| CD3551 | CALL | устанавливаем знак "-" | ||
| CDE050 | CALL | включаем счетчик 1 на At | ||
| CD7150 | CALL | заносим –ΔUyl в регистр | ||
| 307В | CDA050 | CALL | заносим кол-во байт числа | |
| 307В | CDB050 | мук4' | CALL | вызываем подпрограмму сложения |
| CD 1551 | CALL | вывод на ЦАП | ||
| CD2450 | CALL | проверка сигнала с датчика SA4 | ||
| CDED50 | Прогр7 | CALL | включаем счетчик 2 на t2 | |
| 308A | CD7C50 | CALL | заносим –ΔUy2 в регистр | |
| 308D | CDA050 | CALL | заносим кол-во байт числа | |
| CDB050 | мук2 | CALL | вызываем подпрограмму сложения | |
| CD 1551 | CALL | вывод на ЦАП | ||
| CDFA50 | Прогр8 | CALL | включаем счетчик 2 на t3 | |
| 309C | CD6650 | CALL | заносим ΔUу3=0 в регистр | |
| 309F | CDA050 | CALL | заносим кол-во байт числа | |
| 30A2 | CDB050 | Мук3 | CALL | вызываем подпрограмму сложения |
| 30A5 | CD 1551 | CALL | вывод на ЦАП | |
| 30A8 | ||||
| 30AB | CD5B50 | прогр9 | CALL | заносим ΔUу2 в регистр |
| 30АЕ | CDA050 | CALL | заносим кол-во байт числа | |
| 30В1 | CDB050 | мук 1* | CALL | сложение |
| 30В4 | CD 1551 | CALL | вывод на ЦАП | |
| 30В7 | CD1A50 | CALL | проверка сигнала с датчика SA3 | |
| 30ВА | CD5050 | Прогр10 | CALL | заносим дUу1 в регистр |
| 30BD | CDA050 | CALL | заносим кол-во байт числа | |
| 30С0 | CDB050 | мук5' | CALL | Сложение |
| 30С3 | CD 1551 | Мук6 | CALL | вывод на ЦАП |
| 30С6 | CD8750 | CALL | заносим (-дUirn) в регистр | |
| 30С9 | CD9250 | CALL | заносим дUirn в регистр | |
| 30СС | CDB050 | CALL | Сложение | |
| 30CF | CD4051 | CALL | проверка скорости | |
| 30D2 | CD0050 | CALL | проверка сигнала с датчика SA на срабатывание | |
| 30D5 | CD6F51 | CALL | напряжение исчезает | |
| 30D8 | HLT |
Таблица памяти МП.
| <HL> | Датчики | |
| +дUу1 | ||
| +дUу2 | ||
| 040C | дUу3=0 | |
| -дUу2 | ||
| -дUу1 | ||
| -дUirn | ||
| <ВС> | Uy | |
| Uirn |
Подпрограмма проверки сигнала с датчиков.
| адрес | код | метка | команда | Комментарий |
| конт1 | LXI Н,0400Н | загрузка адреса в HL | ||
| ЗА | LDAXH | загрузка числа в <А> из <HL> | ||
| E601 | ANI 01Н | лог "и" (маска 01Н) | ||
| CC C030 | CZMyK5" | вызов подпрограммы | ||
| CD6551 | CALL вкл.т. | вызов подпрограммы | ||
| 500C | C9 | RET | выход из подпрограммы | |
| 500D | конт2 | LXI Н,0400Н | ||
| ЗА | LDAXH | |||
| E601 | ANI 02H | лог "и" (маска 02H) | ||
| CC 5430 | CZMyK5 | |||
| CD6551 | CALL вкл.т. | вызов подпрограммы | ||
| C9 | RET | выход из подпрограммы | ||
| 501A | контЗ | LXI Н,0400Н | ||
| 501D | ЗА | LDAXH | ||
| 501E | E604 | ANI 04H | лог "и" (маска 04H) | |
| CC 1230 | CZ мyк 1 | |||
| C9 | RET | выход из подпрограммы | ||
| конт4 | LXI Н,0400Н | |||
| 3А | LDAXH | |||
| E608 | ANI 08H | лог "и" (маска 08H) | ||
| 502A | CC1530 | CZ мyк 4 | ||
| 502D | C9 | RET | выход из подпрограммы | |
| 5052E | контЗ* | LXI Н,0400Н | ||
| ЗА | LDAXH | |||
| E604 | ANI 04H | лог "и" (маска 04H) | ||
| CCB130 | CZ мyк 1* | |||
| C9 | RET | выход из подпрограммы | ||
| конт4' | LXI Н,0400Н | |||
| 503B | ЗА | LDAXH | ||
| 503C | E608 | ANI 08H | лог "и" (маска 08H) | |
| 503E | CC 7E30 | CZ мyк 4' | ||
| C9 | RET | выход из подпрограммы |
Подпрограмма загрузки ΔUу в регистр.
| адрес | код | метка | команда | Комментарий |
| напр1 | LXI Н,0404Н | загрузка адреса в HL | ||
| 3E80 | MVI А,80Н | загрузка младшего байта ΔUу1 в<А> | ||
| MOV M,A | ||||
| INX H | Увеличить адрес на 1 (т.е 0405Н) | |||
| 3EOO | MVI А,00Н | загрузка старшего байта ΔUyl в <А> | ||
| МОV М,A | ||||
| 505A | C9 | RET | выход из подпрограммы | |
| 505B | Напр2 | LXI Н,0408Н | загрузка адреса в HL | |
| 505E | 3EOO | MVI А,00Н | загрузка младшего байта ΔUу2 в<А> | |
| MOV M,A | ||||
| INX H | ||||
| 3E04 | MVI A,04H | загрузка ст байта ΔUy2 в <А> | ||
| МОV М,A | ||||
| C9 | RET | выход из подпрограммы | ||
| 210C04 | НапрЗ | LXI H,040CH | загрузка адреса в HL | |
| 3EOO | MVI А,00Н | загрузка младшего байта ΔUуЗ в<А> | ||
| 506B | МОV М,A | |||
| 506C | INX H | |||
| 506D | 3EOO | MVI A,00H | загрузка старшего байта ΔUуЗ в <А> | |
| 506F | MOV M,A | |||
| C9 | RET | выход из подпрограммы | ||
| Напр5 | LXI H,0414H | загрузка адреса в HL | ||
| 3E80 | MVI А,80Н | загрузка младшего байта (-ΔUyl) в <А> | ||
| MOV M,A | ||||
| INX H | ||||
| 3EFF | MVI A,FFH | загрузка старшего байта (-ΔUyl)в <А> | ||
| 507A | MOV M,A | |||
| 507В | C9 | RET | выход из подпрограммы | |
| 507C | Напр4 | LXI H,0410H | загрузка адреса в HL | |
| 507F | 3E00 | MVI A,00H | загрузка младшего байта (-ΔUy2) в <А> | |
| МОV М,A | ||||
| INX H | ||||
| 3EFC | MVI A,FCH | загрузка старшего байта (-ΔUy2) в <А> | ||
| MOV M,A | ||||
| C9 | RET | выход из подпрограммы | ||
| Напр6 | LXI H,0418H | загрузка адреса в HL | ||
| 508A | 3E00 | MVI A,00H | загрузка младшего байта (-Uirn) в <А> | |
| 508C | MOV M,A | |||
| 508D | INX H | |||
| 508E | 3EF0 | MVI A,F0H | загрузка старшего байта (-Uirn) в <А> | |
| MOV M,A | ||||
| C9 | RET | выход из подпрограммы | ||
| Ном | LXI B,0504H | загрузка адреса в ВС | ||
| 3E00 | MVI A,00H | загрузка младшего байта (Uirn) в <А> | ||
| MOV M,A | ||||
| INX B | ||||
| 3E80 | MVI A,80H | загрузка старшего байта (Uirn) в <А> | ||
| 509B | MOV M,A | |||
| 509C | C9 | RET | выход из подпрограммы |
Подпрограмма загрузки числа байтов.
| адрес | код | метка | Команда | Комментарий |
| 50А0 | число | LXI В,0500Н | загрузка адреса в ВС | |
| 50А3 | 1Е02 | MVI Е,02Н | загрузка числа в регистр Е | |
| 50А5 | С9 | RET | выход из подпрограммы |
Подпрограмма сложения.
| адрес | код | Метка | Команда | Комментарий |
| 50ВО | Слог1 | MOV D,E | запоминаем количество байт | |
| 50В1 | С5 | PUSH В | запоминаем адр. младш, байта 1 слагаемого | |
| 50В2 | AF | XRA A | ||
| 50В3 | 0А | м1 | LDAX B | перенос в <А> младшего байта первого слагаемого |
| 50В4 | 8Е | ADC M | сложение содержимого <А> с ячейкой <М> | |
| 50В5 | ID | DCR E | уменьшаем счетчик байт на 1 | |
| 50В6 | CABF50 | JZM2 | условие = 0 то переход на М2 | |
| 50В9 | STAX B | запоминаем байт суммы по адресу наход. <ВС> | ||
| ЗОВА | INX B | увеличиваем на 1 вычисляется адрес | ||
| 50ВВ | - | INXBH | увеличиваем на 1 следующего байта | |
| 50ВС | C3B350 | JMPM1 | безусловный переход на М1 | |
| 50BF | м2 | MOV E,A | проверка на переполнение ст. байта, сум в <Е> | |
| 50СО | ОА | LDAX B | загрузка старшего байта 1 слаг. в<А> | |
| 50С1 | AE | XRA M | искл "или" над <А> и <М> | |
| 50С2 | 7В | MOV A,E | перенос в <А> суммы старшего байта | |
| 50СЗ | STAX B | запоминаем байт суммы по адресу наход. <ВС> | ||
| 50С4 | STC CY=1 | установить триггер переноса в 1(CY=1) | ||
| 50C5 | FACF50 | JM M3 | <0 то М3 | |
| 50C8 | 7E | MOV A,M | Загрузка старшего байта 2 слаг. в<А> | |
| 50C9 | AB | XRA E | искл"или" над <А> и <Е> | |
| 50CA | STC CY=1 | установить триггер переноса в 1 (CY=1) | ||
| 50CB | FACF50 | JM M4 | <0 то М4 | |
| 50CE | ЗЕ | м3 | CMC | (CY=0) |
| 50CF | Cl | м4 | POP В | восстановить содерж. регистра <ВС> |
| 50DO | MOV E,D | из D в Е (восстон. в per Б кол-во байт) | ||
| 50DI | C9 | RET | возврат из подпрограммы |
Подпрограмма включения счетчиков на время.
| адрес | код | метка | Команда | Комментарий |
| 50ЕО | ЗЕ02 | время 1 | MVI А,02Н | загрузка младшего байта Δt в <А> |
| 50Е2 | D385 | OUT 85Н | ||
| 50Е4 | 3E2D | MVI A,2DH | загрузка старшего байта Δt в <А> | |
| 50Е6 | D385 | OUT 85Н | ||
| 50Е8 | ЗЕ07 | MVI A,07H | запуск счетчика 1 (DC3=> "1") | |
| 50ЕА | D382 | OUT 82H | ||
| 50ЕС | C9 | RET | выход из под программы | |
| 50ED | ЗЕ1А | время2 | MVI A,IAH | загрузка младшего байта t2 в <А> |
| 50EF | D386 | OUT 86H | ||
| 50FI | ЗЕ5Е | MVI A,5EH | загрузка старшего байта t2 в <А> | |
| 50F3 | D386 | OUT 86H | ||
| 50F5 | ЗЕ09 | MVI A,09H | запуск счетчика 2 (DC4=> "1") | |
| 50F7 | D382 | OUT 82H | ||
| 50F9 | C9 | RET | выход из под программы | |
| 50FA | 3E3D | Время3 | MVI A,3DH | загрузка младшего байта t3 в <А> |
| D381 | OUT 81H | |||
| ЗБ04 | MVI A,04H | отключение регистра DD7 (DC2=>0) | ||
| 512В | D382 | OUT 82H | ||
| 512D | 0В | DCX B | уменьшаем адрес ячейки на 1 | |
| 512E | C9 | RET | выход из подпрограммы |
Подпрограмма учитывающая знак напряжения управления.
| адрес | код | метка | команда | Комментарий |
| 3Е0В | Знак1 | MVI А,0ВН | увеличиваем DC5 в 1 (знак +) | |
| D383 | OUT 83H | |||
| C9 | RET | выход из подпрограммы | ||
| 3ЕОА | знак2 | MVI А,0АН | увеличиваем DC5 в 0 (знак -) | |
| D383 | OUT 83H | |||
| C9 | RET | выход из подпрограммы |
Подпрограмма контроля скорости.
| адрес | код | метка | команда | Комментарий |
| 3E00 | контр | MVI A,00H | вывод напряжения с АЦП | |
| D381 | OUT 81H | из порта В во внешнее устройство | ||
| 3EF8 | MVI A,F8H | |||
| D381 | OUT 81H | |||
| SUB В | Вычитание <В> из <А> | |||
| F4 | CP MUK5 | вызов подпрограммы | ||
| 514C | FC | CM MUK6 |
Подпрограмма обнуления ячейки с информацией о датчиках.
| адрес | код | метка | команда | Комментарий |
| 514D | обнуление | LXI Н,0400Н | загрузка адреса в <HL> | |
| ЗЕ00 | MVI А,ООН | перенос нолей в <А> | ||
| MOV М,А | перенос <А> в <М> | |||
| C9 | RET | выход из подпрограммы |
Подпрограмма отключения системы, если ток превысил Imax.
| адрес | код | метка | команда | Комментарий |
| защита | LXI Н,0400Н | проверка датчика тока на срабатывание | ||
| ЗЕ10 | MVI А, 10Н | |||
| 515А | P6 | ORA M | ||
| 515В | МОV М,A | |||
| 551С | 3E08 | MVI А,08Н | ||
| 515Е | T383 | OUT 83H | ||
| CD0751 | CALL врсмя4 | вызов подпрограммы время4 | ||
| C9 | RET | выход из подпрограммы |
Подпрограмма включения и отключения тормоза.
| адрес | код | метка | команда | Комментарий |
| 3E0F | вкл. тормоз | MVI A,0FH | установка DC7=> 1 | |
| D382 | OUT 83Н | |||
| C9 | RED | выход из подпрограммы | ||
| 516А | 3E0F | откл. тормоз | MVI А,0ЕН | установка DC7=>0 |
| 516С | D382 | OUT 83H | ||
| 516Е | C9 | RET | выход из подпрограммы |
Подпрограмма установления напряжения на «О».
| адрес | код | метка | команда | Комментарий |
| 516F | 3E03 | ноль | MVI А,03Н | установка DC7=> 1 включение DD6 |
| D382 | OUT 82H | |||
| 3E00 | MVI А,00Н | вывод нолей во внешнее устройство DD6 | ||
| D381 | OUT 81H | с порта В | ||
| ЗБ02 | MVI А,02Н | установка DC 1 =>0 включение DD6 | ||
| D382 | OUT 82H | |||
| 517В | 3E05 | MVI А,05Н | установка DC2=> 1 включение DD7 | |
| 517D | D382 | OUT82H | ||
| 517F | 3E00 | MVI А,00Н | вывод нолей во внешнее устройство DD7 | |
| D381 | OUT 81H | с порта В | ||
| 3E04 | MVI А,04Н | установка DC2->0 отключение DD7 | ||
| D382 | OUT 82H | |||
| C9 | RET | выход из подпрограммы |















