отчет(гр3) (Примеры старых отчётов)
Описание файла
Файл "отчет(гр3)" внутри архива находится в папке "Примеры старых отчётов". Документ из архива "Примеры старых отчётов", который расположен в категории "". Всё это находится в предмете "системы автоматического управления (сау) (мт-11)" из 11 семестр (3 семестр магистратуры), которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "лабораторные работы", в предмете "системы автоматического управления (сау) (мт-11)" в общих файлах.
Онлайн просмотр документа "отчет(гр3)"
Текст из документа "отчет(гр3)"
Отчёт по лабораторным работам
по курсу
«Системы автоматизированного управления»
Группа: МТ11-27(магистры)
Выполнили: Баданова Н.В.
Бычкова М.С. Копылов А.
Мамедов М. (МТ11-82)
Преподаватель: Рябов В.Т.
Москва, 2015 год
Цель: получить навыки программирования микроконтроллеров на языке программирования «Ассемблер».
Лабораторная работа 1
«НАСТРОЙКА И ИСПОЛЬЗОВАНИЕ ДИСПЕТЧЕРА ПРОЦЕССОВ»
Задача: настроить резидентный таймер на заданный тик, подобрать задержку таймера.
Задержка: 1,2 мс
Расчёт и отладка
Таймер считает машинные циклы микроконтроллера, длительность которых определяется подключенным к нему кварцевым резонатором. Частота резонатора составляет 11000кГц. Машинный цикл длится 12 периодов резонатора и составляет 12/11 мкс. За 1,2 мс должно пройти 1200х11/12 = 1100 = 44С машинных цикла. FFFF - ABE = FВВ3. Значит, таймер должен считать от числа FВВ3 и в ячейку 24h должно быть записано FВ, а в ячейку 25h – В3. Но это приблизительные значения, их нужно уточнить наилучшим образом экспериментально и здесь нам поможет сам диспетчер процессов вместе с аппаратно-программным эмулятором.
Средства эмулятора позволяют точно следить за временем. Чтобы начальная инициализация диспетчера не влияла на точность расчетов, задаем точку останова по адресу 4Eh. Это адрес перед входом в петлю диспетчера, после чего диспетчер начнет нормально работать. Запустив программу, в точке останова обнуляем счетчик времени эмулятора и снова запустим программу на исполнение. Подождем около минуты и остановим программу. Из окна службы времени считаем значение времени исполнения программы с точностью до микросекунды и определяем «тик» диспетчера:
Тик = Time x 10/DPTR.
Здесь время умножается на 10, так как наш процесс перезапускался через 10 тиков. Многократно повторяя перезапуск, подбираем значение ячейки 25h так, чтобы время тика наилучшим образом соответствовало заданному значению. Необходимо найти значение ячейки, дающее наилучший результат. Данные подбора такого значения приведены ниже.
Номер измерения | 1 | 2 | 3 | 4 |
Число в регистрах таймера |
|
|
|
|
Реальная задержка, мкс |
|
|
|
|
По результатам, представленным в таблице, видно, что наилучший результат под номером 4, где при установке в таймер задержки FВС4 и реальная задержка составляет 1199,0мкс наиболее близкое значение к заданной задержке в 1200,0 мкс.
1 0000 ORG 0
2 0000 02002B LJMP 2Bh ;-------v dispetcher------------
3 000B ORG 0bh
4 000B 0200D0 LJMP 0D0h ;-------vector timer-----------
5 002B ORG 2bh ;-------dispetcher--------------
6 002B 758164 MOV SP,#64h
7 002E 7524FB MOV 24h,#0FBh ;starshyi byte Tc0
8 0031 7525B3 MOV 25h,#0B3h ;mladshyi byte Tc0
9 0034 85248C MOV TH0,24h
10 0037 85258A MOV TL0,25h
11 003A 758911 MOV TMOD,#11h
12 003D 758810 MOV TCON,#10h
13 0040 75A882 MOV IE,#82h
14 0043 E4 CLR A
15 0044 F520 MOV 20h,A
16 0046 F521 MOV 21h,A
17 0048 F526 MOV 26h,A
18 004A 120162 LCALL 0162h
19 004F org 4fh
20 004F 30080B PR0: JNB 21h.0h,PR1
21 0052 300008 JNB 20h.0h,PR1
22 0055 C208 CLR 21h.0h
23 0057 120149 LCALL 149h
24 005A 3030F2 JNB 26h.0h,PR0
25 005D 30090B PR1: JNB 21h.1h,PR2
26 0060 300108 JNB 20h.1h,PR2
27 0063 C209 CLR 21h.1h
28 0065 12014C LCALL 014Ch
29 0068 3030E4 JNB 26h.0h,PR0
30 006B 300A0B PR2: JNB 21h.2h,PR3
31 006E 300208 JNB 20h.2h,PR3
32 0071 C20A CLR 21h.2h
33 0073 12014F LCALL 14Fh
34 0076 3030D6 JNB 26h.0h,PR0
35 0079 300B0B PR3: JNB 21h.3h,PR4
36 007C 300308 JNB 20h.3h,PR4
37 007F C20B CLR 21h.3h
38 0081 120152 LCALL 0152h
39 0084 3030C8 JNB 26h.0h,PR0
40 0087 300C0B PR4: JNB 21h.4h,PR5
41 008A 300408 JNB 20h.4h,PR5
42 008D C20C CLR 21h.4h
43 008F 120155 LCALL 0155h
44 0092 3030BA JNB 26h.0h,PR0
45 0095 300D0B PR5: JNB 21h.5h,PR6
46 0098 300508 JNB 20h.5h,PR6
47 009B C20D CLR 21h.5h
48 009D 120158 LCALL 0158h
49 00A0 3030AC JNB 26h.0h,PR0
50 00A3 300E0B PR6: JNB 21h.6h,PR7
51 00A6 300608 JNB 20h.6h,PR7
52 00A9 C20E CLR 21h.6h
53 00AB 12015B LCALL 015Bh
54 00AE 30309E JNB 26h.0h,PR0
55 00B1 300F9B PR7: JNB 21h.7h,PR0
56 00B4 300798 JNB 20h.7h,PR0
57 00B7 C20F CLR 21h.7h
58 00B9 12015E LCALL 015Eh
59 00BC 303090 JNB 26h.0h,PR0
60 00BF 808E SJMP PR0
61
62 00D0 ORG 0D0h ;---------timer--------------
63 00D0 C2AF CLR EA
64 00D2 C0D0 PUSH PSW
65 00D4 C0E0 PUSH ACC
66 00D6 D2D3 SETB RS0
67 00D8 85248C MOV TH0,24h
68 00DB 85258A MOV TL0,25h
69 00DE D52322 DJNZ 23h,FL0
70 00E1 D802 DJNZ R0,FH1
71 00E3 D208 SETB 21h.0h
72 00E5 D902 FH1: DJNZ R1,FH2 ;-----macro_tick--------------
73 00E7 D209 SETB 21h.1h
74 00E9 DA02 FH2: DJNZ R2,FH3
75 00EB D20A SETB 21h.2h
76 00ED DB02 FH3: DJNZ R3,FH4
77 00EF D20B SETB 21h.3h
78 00F1 DC02 FH4: DJNZ R4,FH5
79 00F3 D20C SETB 21h.4h
80 00F5 DD02 FH5: DJNZ R5,FH6
81 00F7 D20D SETB 21h.5h
82 00F9 DE02 FH6: DJNZ R6,FH7
83 00FB D20E SETB 21h.6h
84 00FD DF02 FH7: DJNZ R7,EHDMT
85 00FF D20F SETB 21h.7h
86 0101 8038 EHDMT: SJMP 013Bh ;-------end_mackro_tick--------
87 0103 201004 FL0: JB 22h.0h,FL1 ;-------micro_tick-------------
88 0106 D802 DJNZ R0,FL1
89 0108 D208 SETB 21h.0h
90 010A 201104 FL1: JB 22h.1h,FL2
91 010D D902 DJNZ R1,FL2
92 010F D209 SETB 21h.1h
93 0111 201204 FL2: JB 22h.2h,FL3
94 0114 DA02 DJNZ R2,FL3
95 0116 D20A SETB 21h.2h
96 0118 201304 FL3: JB 22h.3h,FL4
97 011B DB02 DJNZ R3,FL4
98 011D D20B SETB 21h.3h
99 011F 201404 FL4: JB 22h.4h,FL5
100 0122 DC02 DJNZ R4,FL5
101 0124 D20C SETB 21h.4h
102 0126 201504 FL5: JB 22h.5h,FL6
103 0129 DD02 DJNZ R5,FL6
104 012B D20D SETB 21h.5h
105 012D 201604 FL6: JB 22h.6h,FL7
106 0130 DE02 DJNZ R6,FL7
107 0132 D20E SETB 21h.6h
108 0134 201704 FL7: JB 22h.7h,ENDTM
109 0137 DF02 DJNZ R7,ENDTM
110 0139 D20F SETB 21h.7h ;----end_mickro_tick-----------
111 013B D0E0 ENDTM: POP ACC
112 013D D0D0 POP PSW
113 013F D2AF SETB EA
114 0141 32 RETI
115 ;--------------------USER PROGRAMM MEMORY----------------------
116 ;------------------------user vectors--------------------------
117 0149 ORG 149h ;-------name thread0-----------
118 0149 020170 LJMP TIC12
119 014C ORG 14Ch ;-------name thread1-----------
120 ; LJMP NAME1
121 014F ORG 14Fh ;-------name thread2-----------
122 ; LJMP NANE2
123 0152 ORG 152h ;-------name thread3-----------
124 ; LJMP NAME3
125 0155 ORG 155h ;-------name thread4-----------
126 ; LJMP NAME4
127 0158 ORG 158h ;-------name thread5-----------
128 ; LJMP NAME5
129 015B ORG 15Bh ;-------name thread6-----------
130 ; LJMP NAME6
131 015E ORG 15Eh ;-------name thread7-----------
132 ; LJMP NAME7
133 0162 ORG 162h ;-------name user-start programm
134 0162 020165 LJMP START
135 ;----------------------USER PROGRAMM----------------------------
136 ;------------------user start programm--------------------------
137 0165 START:
138 0165 900000 MOV DPTR,#0 ;---obnulit' registr------------
139 0168 C210 CLR 22h.0h ;---sbros registra--------------
140 016A 75080A MOV 08h,#0Ah ;---vosstanavlivaem zaderzhku---
141 016D D200 SETB 20h.0h ;---ustanovka nulevogo processa-
142 016F 22 RET ;---vozvrat---------------------
143 ;-----------------------user quants---------------------------
144 0170 TIC12:
145 0170 A3 INC DPTR ;----uvelichit' dptr na 1-------
146 0171 75080A MOV 08h,#0Ah ;---vosstanavlivaem zaderzhku---
147 0174 22 RET ;---vozvrat---------------------
148 ;----------------------------------------------
149 0175 END
Лабораторная работа 2
«ОТЛАДКА ДИСПЕТЧЕРА ПРОЦЕССОВ»
Задача: написать программу однофазного управления шагового двигателя.
Программа однофазного управления строиться как двухфазного из методических указаний к лабораторным работам, но с добавлением дополнительной «маски». Текст программы с комментариями приведен ниже.
Сама программа проверена и отлажена на шаговом двигателе программа работает корректно и в полном объёме.
ORG 0
LJMP 2Bh ;-------v dispetcher------------
ORG 0bh
LJMP 0D0h ;-------vector timer-----------
ORG 2bh ;-------dispetcher--------------
MOV SP,#64h
MOV 24h,#0F8h
MOV 25h,#0D6h
MOV TH0,24h
MOV TL0,25h
MOV TMOD,#11h
MOV TCON,#10h
MOV IE,#82h
CLR A
MOV 20h,A
MOV 21h,A
MOV 26h,A
LCALL 0162h
org 4fh
PR0: JNB 21h.0h,PR1
JNB 20h.0h,PR1
CLR 21h.0h
LCALL 149h
JNB 26h.0h,PR0
PR1: JNB 21h.1h,PR2
JNB 20h.1h,PR2
CLR 21h.1h
LCALL 014Ch
JNB 26h.0h,PR0
PR2: JNB 21h.2h,PR3
JNB 20h.2h,PR3
CLR 21h.2h
LCALL 14Fh
JNB 26h.0h,PR0
PR3: JNB 21h.3h,PR4
JNB 20h.3h,PR4
CLR 21h.3h
LCALL 0152h
JNB 26h.0h,PR0
PR4: JNB 21h.4h,PR5
JNB 20h.4h,PR5
CLR 21h.4h
LCALL 0155h
JNB 26h.0h,PR0
PR5: JNB 21h.5h,PR6
JNB 20h.5h,PR6
CLR 21h.5h
LCALL 0158h
JNB 26h.0h,PR0
PR6: JNB 21h.6h,PR7
JNB 20h.6h,PR7
CLR 21h.6h
LCALL 015Bh
JNB 26h.0h,PR0
PR7: JNB 21h.7h,PR0
JNB 20h.7h,PR0
CLR 21h.7h
LCALL 015Eh
JNB 26h.0h,PR0
SJMP PR0
ORG 0D0h ;---------timer--------------
CLR EA
PUSH PSW
PUSH ACC
SETB RS0
MOV TH0,24h
MOV TL0,25h
DJNZ 23h,FL0
DJNZ R0,FH1
SETB 21h.0h
FH1: DJNZ R1,FH2 ;-----macro_tick--------------
SETB 21h.1h
FH2: DJNZ R2,FH3
SETB 21h.2h
FH3: DJNZ R3,FH4
SETB 21h.3h
FH4: DJNZ R4,FH5
SETB 21h.4h
FH5: DJNZ R5,FH6
SETB 21h.5h
FH6: DJNZ R6,FH7
SETB 21h.6h
FH7: DJNZ R7,EHDMT
SETB 21h.7h
EHDMT: SJMP 013Bh ;-------end_mackro_tick--------
FL0: JB 22h.0h,FL1 ;-------micro_tick-------------
DJNZ R0,FL1
SETB 21h.0h
FL1: JB 22h.1h,FL2
DJNZ R1,FL2
SETB 21h.1h
FL2: JB 22h.2h,FL3
DJNZ R2,FL3
SETB 21h.2h
FL3: JB 22h.3h,FL4
DJNZ R3,FL4
SETB 21h.3h
FL4: JB 22h.4h,FL5
DJNZ R4,FL5
SETB 21h.4h
FL5: JB 22h.5h,FL6
DJNZ R5,FL6
SETB 21h.5h
FL6: JB 22h.6h,FL7
DJNZ R6,FL7
SETB 21h.6h
FL7: JB 22h.7h,ENDTM
DJNZ R7,ENDTM
SETB 21h.7h ;----end_mickro_tick-----------
ENDTM: POP ACC
POP PSW
SETB EA
RETI
;--------------------USER PROGRAMM MEMORY----------------------
;------------------------user vectors--------------------------
ORG 149h ;-------name thread0-----------
LJMP STEP1
ORG 14Ch ;-------name thread1-----------
LJMP KLAV
ORG 14Fh ;-------name thread2-----------
; LJMP NANE2
ORG 152h ;-------name thread3-----------
; LJMP NAME3
ORG 155h ;-------name thread4-----------
; LJMP NAME4
ORG 158h ;-------name thread5-----------
; LJMP NAME5
ORG 15Bh ;-------name thread6-----------
; LJMP NAME6
ORG 15Eh ;-------name thread7-----------