Главная  Микропроцессорные системы 

[0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [ 19 ] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [68] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] [81] [82] [83] [84] [85] [86] [87] [88] [89] [90] [91] [92]

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

Рассмотрим пример организации программы, в которой используется выход из ее циклической части по проверяемому условию.

Пример. Пусть имеется цифровой обнаружитель пакета сигналов, число которых равно 15. Результаты аналого-цифрового преобразования записываются в последовательно расположенные ячейки памяти, начиная

начало

Начальная установка счетчи,,а. и указателя массива

Прибавить i-e число


YES1

l:=L + 1


Изменить указатель массива

YESZ

(RES)(L)

Останов

Рис. 2.22. Схема программы работы цифрового обнаружителя

С К-й. Используемый алгоритм обнаружения заключается в суммировании преобразованных в цифровую форму сигналов и сравнении этой суммы с величиной порога на каждом шаге суммирования. Пусть величина порога, введенного в ячейку LEVEL, равна 37. Превышение накопленной суммой установленного порога может произойти и при числе суммируемых сигналов меньше 15. Как только это превышение произошло, так в ячейку RES должна быть записана единица, в противном случае операция суммирования (накопление) должна быть



продолжена. Если после суммирования всех 15 сигналов критерий обнаружения оказался не выполненным, то в ячейку RES должен быть записан нуль (отсутствие обнаружения) и программа остановлена.

Схема программы, решающей эту задачу, приведена на рис. 2.22. Она имеет структуру обычной циклической программы с той лишь разницей, что в ней используются два способа выхода из цикла - по проверяемому условию S(L£1/£L) (ветвь YES 1) и по счетчику (ветвь YES 2) при невыполнении условия. Программа, реализующая эту схему, приведена в табл. 2.19. При ее составлении использовались соответствующие фрагменты программ, приведенных в табл. 2.15 (реализующих операцию сравнения суммы с порогом) и в табл. 2.18 (организующих цикл путем модификации адреса).

Таблица 2.19

Ячейка

Содержи.мое

Примечание

ALPHA

LDA COUNT

MOV B, A

LXni LOOP

MVi A, L

LGGP

ADD К

CMP LEVEL

JNCYESl

INRLOOP

DCRB

JNZLOOP

YES2

LDAL

STA RES

JMP OMEGA

YES\

LDAM

STA RES

OMEGA

LEVEL

COUNT

DATAO

DATA!

(B) (COUNT)

(H) = LOOP (A)0

Сравнение текущей суммы с порогом Вмбор направления вычислений (LOOP) = ADDK + 1 Уменьшение показаний счетчика циклов

Проверка счетчика циклови выбор направления

(RES) <~ О Индикация отсутствия об-

(RES)

наруже ния Индикация наличия

обна-

ружения Останов

Ячейка результата обнаружения

Порог сравнения

Число суммируемы.ч сигналов

Константа

Константа

iVlaccHB данных, вводимый из .ЦП



Подпрограммы. Подпрограмма представляет собой часть программы, выполняющую определенное, логически завершенное действие. Необходимость в подпрограммах возникает всякий раз, когда появляется потребность производить однотипные вычисления, быть может, с различными числовыми данными. Основной смысл использования подпрограмм заключается в многократном обращении к ним из разных мест одной и той же программы или же в многократном применении под-програмаМ в качестве неизменных фрагментов разных

Основная программа.

L

I Подпрограмма \

Основная программа

Основная программа

.---L---,

{Подпрограмма j

\В основную программу


Рис. 2.23. Открытые (а) и закрытые (б) подпро-программы

Программ, составленных для одной и той же микро-ЭВМ. Различают два основных типа подпрограмм: открытые и закрытые.

Допустим, что необходимо вычислить значение некоторой функции в различных участках программы. В таком случае фрагмент программы, вычисляющий заданную функцию, можно определить в виде подпрограммы и включить совокупность описывающих ее команд в нужные места основной программы, как это показано на рис. 2.23,а. При этом может оказаться, что при каждом конкретном использовании подпрограммы ее нужно •будет слегка изменить. Следовательно, подпрограмма должна допускать возможность внесения в нее некоторых модификаций и поэтому такие подпрограммы называются открытыми подпрограммами. Использование открытых подпрограмм не требует включения в основную



[0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [ 19 ] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [68] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] [81] [82] [83] [84] [85] [86] [87] [88] [89] [90] [91] [92]

0.001