3.2 Расчёт. Частота настройки контура зависит от управляющего напряжения следующим образом:
Fk=Fk0+S(Uупр-Uупр0) (1) где Fk0 — начальное значение частоты контура при Uупр=Uупр0 S — крутизна характеристики преобразования. DUупр=Uупр2-Uупр1 (2) Из (1) следует, что
Т.к Df=3кГц, то при F1=Fmin+Df=1000+3=1003 (кГц), Þ
(В) F2=Fmin+2Df=1006 (кГц) Þ
(В) ÞDUупр=Uупр2-Uупр1=1,24-1,12=0,12 (В)
(В) — минимальное значение напряжения на входе, которое даёт 1 в младшем разряде кода. DUупр>UЦАП Þ десятиразрядный ЦАП подходит для выполнения данной задачи. DUЦАП=0,01 В Þ на вход надо подавать по 12k импульсов (как бы проскакивая по 12 импульсов сразу), где k — номер шага
. 1210 = 00000011002, Þ 2 первых разряда всегда равны 0, Þ их можно заземлить, Þ к порту подключается 8 разрядов (старших) и вместо 12 на ЦАП подается 3 (112=310). Þ можно охватить весь диапазон без использования дополнительных разрядов.
— количество шагов для того чтобы пройти всю область настройки. 12∙Kn=2004 — нужно 10 разрядов 8∙Kn=501 — нужно 8 разрядов.
(В) Если Uk возрастает на постоянно на всей области настройки, то
(В) DUk>DUАЦП Þ 8-ми разрядный ЦАП подходит для решения данной задачи.
4. Распределение ресурсов МП системы Регистр ОЭВМ R2 будет хранить значения Uупр, в R3 помещаются значения предыдущего шага Uk-1, а в A (аккумулятор) — значения последующего шага Uk. В R4 в процессе работы программы будем помещать только N — параметр программной задержки. В B будет храниться количество шагов для прогона всей области настройки. Выбираем N=135, т.к время программной задержки равно 400 мкс, а вся процедура реализуется в 3 цикла, Þ
.
5. Подробная структурная схема алгоритма.
6. Программа работы МК. Кол-во циклов | Метка | Мнемоники | Комментарий |
| | NAME P78 | имя модуля программы |
|
| CSEG AT 0H | абсолютный кодовый сегмент |
| | ORG 0H | псевдокоманда задания адреса памяти |
1 | | MOV R2, #3 | в R2 помещается Uупр |
1 | | MOV B, #167 | в B помещается количество шагов |
1 | | MOV A P1 | в A помещается содержимое Uk из порта P1 |
1 | | MOV R3, A | в R3 помещается значение Uk из A |
1 | M1: | MOV R4, #135 | инициализация счетчика программной задержки |
1 | | MOV A, R2 | в A помещается значение Uупр из R2 |
1 | | MOV P2, A | в порт P2 помещается значение Uупр из A |
1 | | SETB 3.7 | формирование отрицательного импульса для включения АЦП |
1 | | CLR 3.7 |
1 | | SETB 3.7 |
1 | M2: | NOP | оператор задержки |
2 | | DJNZ R4, M2 | значение R4 (счетчик программной задержки) уменьшается на 1 и при R4 0 осуществляется переход на метку M2 |
1 | | MOV A, P1 | в A записывается Uk+1 из порта P1 |
1 | | SUBB A, R3 | из A вычитается R3 (Uk+1 сравнивается с Uk) |
2 | | JC M3 | если флаг C=0 (Uk+1>Uk), то осуществляется переход на метку M3 |
1 | | MOV A, P1 | в A помещается значение Uk+1 из порта P1 |
1 | | MOV R3, A | в R3 помещается значение Uk+1 из A |
1 | | INC R2 | значение R2 (Uупр) увеличивается на 1 |
1 | | INC R2 | значение R2 (Uупр) увеличивается на 1 |
1 | | INC R2 | значение R2 (Uупр) увеличивается на 1 |
2 | | DJNZ B, M1 | значение B (счетчик шагов) уменьшается на 1 и при B 0 осуществляется переход на метку M1 |
2 | | AJMP M5 | осуществляется безусловный переход на метку M5 |
1 | M3: | MOV R4, #135 | инициализация счетчика программной задержки |
1 | | CLR C | флаг С устанавливается в 0 |
1 | | DEC R2 | значение R2 (Uупр) уменьшается на 1 |
1 | | MOV A, R2 | в A помещается значение Uупр из R2 |
1 | | MOV P2, A | в порт P2 помещается значение Uупр из A |
1 | | SETB 3.7 | формирование отрицательного импульса для включения АЦП. |
1 | | CLR 3.7 |
1 | | SETB 3.7 |
1 | M4: | NOP | оператор задержки |
2 | | DJNZ R4, M4 | значение R4 (счетчик программной задержки) уменьшается на 1 и при R4 0 осуществляется переход на метку M4 |
1 | | MOV A, P1 | в A помещается содержимое Uk+1 из порта P1 |
1 |
| SUBB A, R3 | из A вычитается R3 (Uk сравнивается с Uk+1) |
1 | | MOV A, P1 | в A записывается Uk+1 из порта P1 |
1 | | MOV R3, A | в R3 помещается значение Uk из A |
2 | | JC M3 | если флаг C=0 (Uk>Uk+1), то осуществляется переход на метку M3 |
1 | M5: | NOP | оператор задержки |
| | END | конец модуля программы |
7. Контрольный пример. Для просмотра результатов вместо порта
P1 будем значения
Uk, будут помещаться во внутреннюю память, начиная с адреса 20
H и заканчивая адресом 27
H ,
Þ в
R0 будет размещаться адрес внутренней памяти и “
MOV A,
P1” заменяется на “
MOV A, @
R0”. Так же уменьшим количество шагов и время программной задержки.
| NAME 78 |
|
| CSEG AT 0H |
|
| ORG 0H |
|
| MOV 21H, #1 | задаются значения Uk |
| MOV 22H, #3 |
| MOV 23H, #6 |
| MOV 24H, #9 |
| MOV 25H, #6 |
| MOV 26H, #7 |
| MOV 27H, #9 |
| MOV R0, #20H | в R0 помещается адрес 20H |
| MOV R2, #3 | в R2 помещается начальное значение Uупр |
| MOV B, #10 | в B помещается количество шагов |
| MOV A @R0 | в A помещается содержимое ячейки с адресом R0 |
| MOV R3, A | в R3 помещается содержимое А (ячейки с адресом 20H) |
M1: | INC R0 | значение R0 (адрес внутренней памяти) увеличивается на 1 |
| MOV R4, #3 | инициализация счетчика программной задержки |
| MOV A, R2 |
|
| MOV P2, A |
|
M2: | NOP |
|
| DJNZ R4, M2 | значение R4 (счетчик программной задержки) уменьшается на 1 и при R4 0 осуществляется переход на метку M2 |
| MOV A, @R0 | в A помещается содержимое ячейки с адресом R0 (Uk+1) |
| SUBB A, R3 | из A вычитается R3 (Uk+1 сравнивается с Uk) |
| JC M3 | если флаг C=0 (Uk>Uk+1), то осуществляется переход на метку M3 |
| MOV A, @R0 | в A помещается содержимое ячейки с адресом R0 |
| MOV R3, A | в R3 помещается значение Uk+1 из A |
| INC R2 | значение R2 (Uупр) увеличивается на 1 |
| INC R2 | значение R2 (Uупр) увеличивается на 1 |
| INC R2 | значение R2 (Uупр) увеличивается на 1 |
| DJNZ B M1 | значение B (счетчик шагов) уменьшается на 1 и при B 0 осуществляется переход на метку M1 |
| AJMP M5 | осуществляется безусловный переход на метку M5 |
M3: | INC R0 | значение R0 (адрес внутренней памяти) увеличивается на 1 |
| DEC R2 | значение R2 (Uупр) уменьшается на 1 |
| MOV R4, #3 | инициализация счетчика программной задержки |
| CLR C | флаг С устанавливается в 0 |
| MOV A, R2 |
|
| MOV P2, A |
|
M4: | NOP |
|
| MOV A, @R0 | в A помещается содержимое ячейки с адресом R0 (Uk+1) |
| SUBB A, R3 | из A вычитается R3 (Uk+1 сравнивается с Uk) |
| MOV A, @R0 | в A помещается содержимое ячейки с адресом R0 (Uk+1) |
| MOV R3, A | в R3 помещается значение Uk+1 из A |
| JC M3 | если флаг C=0 (Uk>Uk+1), то осуществляется переход на метку M3 |
M5 | NOP |
|
| END |
|
8. Определение быстродействия программы. Найдём, сколько времени потребуется для поиска станции, которая находится в середине диапазона. F0=1,25 мГц и при условии что придётся делать один шаг назад. T=Nц1tц1+Nц2tц2+tпер+tд Nц1=250 — количество шагов в первом цикле Nц2=1 — количество шагов во втором цикле tц1=417 мкс tц2=414 мкс tпер=424 — время перехода из одного цикла в другой tд=4 мкс — время ввода начальных данных Þ T=250×417+1×414+424+4=104717 мкс
9. Листинг отлаженной программы. A51 MACRO ASSEMBLER 78 24/12/01 13:46:28 PAGE 1 DOS MACRO ASSEMBLER A51 V5.10 OBJECT MODULE PLACED IN 78.OBJ ASSEMBLER INVOKED BY: M:\KEILTEST\BIN\A51.EXE 78.A51 DB EP LOC | OBJ | LINE | SOURCE |
|
|
|
|
|
|
|
| 1 |
| NAME P78 |
---- |
| 2 |
| CSEG AT 0H |
0000 |
| 3 |
| ORG 0H |
0000 | 7A03 | 4 |
| MOV R2, #3 |
0002 | 75F0A7 | 5 |
| MOV B, #167 |
0005 | E590 | 6 |
| MOV A, P1 |
0007 | FB | 7 |
| MOV R3, A |
0008 | 7C87 | 8 | M1: | MOV R4, #135 |
000A | EA | 9 |
| MOV A, R2 |
000B | F5A0 | 10 |
| MOV P2, A |
|
| 11 |
|
|
000D | 00 | 12 | M2: | NOP |
000E | DCFD | 13 |
| DJNZ R4, M2 |
0010 | E590 | 14 |
| MOV A, P1 |
0012 | 9B | 15 |
| SUBB A, R3 |
0013 | 400B | 16 |
| JC M3 |
0015 | E590 | 17 |
| MOV A, P1 |
0017 | FB | 18 |
| MOV R3, A |
0018 | 0A | 19 |
| INC R2 |
0019 | 0A | 20 |
| INC R2 |
001A | 0A | 21 |
| INC R2 |
001B | D5F0EA | 22 |
| DJNZ B, M1 |
001E | 0132 | 23 |
| AJMP M5 |
0020 | 7C87 | 24 | M3: | MOV R4, #135 |
0022 | C3 | 25 |
| CLR C |
0023 | 1A | 26 |
| DEC R2 |
0024 | EA | 27 |
| MOV A, R2 |
0025 | F5A0 | 28 |
| MOV P2, A |
|
| 29 |
|
|
0027 | 00 | 30 | M4: | NOP |
0028 | DCFD | 31 |
| DJNZ R4, M4 |
002A | E590 | 32 |
| MOV A, P1 |
002C | 9B | 33 |
| SUBB A, R3 |
002D | E590 | 34 |
| MOV A, P1 |
002F | FB | 35 |
| MOV R3, A |
0030 | 40EE | 36 |
| JC M3 |
0032 | 00 | 37 | M5: | NOP |
|
| 38 |
| END |
A51 MACRO ASSEMBLER 78 24/12/01 13:46:28 PAGE 2 SYMBOL | TABLE | LISTING |
------------ | ------------- | ------------ |
NAME | T Y P E | VALUE | ATTRIBUTES |
|
|
|
|
B. . . . . . . . . . . | D | ADDR | 00F0H | A |
M1 . . . . . . . . . | C | ADDR | 0008H | A |
M2 . . . . . . . . . | C | ADDR | 000DH | A |
M3 . . . . . . . . . | C | ADDR | 0020H | A |
M4 . . . . . . . . . | C | ADDR | 0027H | A |
M5 . . . . . . . . . | C | ADDR | 0032H | A |
P1 . . . . . . . . . . | D | ADDR | 0090H | A |
P2 . . . . . . . . . . | D | ADDR | 00A0H | A |
P78. . . . . . . . . | N | NUMB | ----- |
|
REGISTER BANK(S) USED: 0 ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
1. Реферат Сжижение газов 2
2. Реферат на тему Rose For Emily Essay Research Paper Gamal
3. Реферат на тему Escher Essay Research Paper Maurits Cornelius Escher
4. Реферат Влияние кормов на продукцию животноводства
5. Реферат на тему Metaphors Of The Mind Essay Research Paper
6. Реферат Караманиды
7. Доклад на тему Honda
8. Сочинение на тему Необыкновенная история ИАГончарова
9. Реферат Крестьянская реформа в России
10. Статья на тему Проблема социальных издержек и природа фирмы Р Коуза