Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
АТП с ответами.doc
Скачиваний:
2
Добавлен:
08.11.2019
Размер:
150.53 Кб
Скачать

Inc dptr ; установка указателя на след. Элемент

mov R5,#8 ; загрузка счетчика на 8 бит

Next: rlc A ; проверка битов на равенство 1

jnc L1

inc R1 ; инкремент

cjne R1,#0,L1 ; двухбайтового счетчика

inc R3 ; единичных битов

L1: djnz R5,Next

djnz R2,L3 ; обработка счетчика цикла

ret ; возврат из подпрограммы

Пример вызова:

mov DPTR,#Massive ; загрузка в указатель адреса начала массива

acall NumSetBit100 ; вызов подпрограммы

15. Составить подпрограмму на Ассемблере, которая определяет и запоминает в любых ячейках памяти адрес первого и последнего нулевого элемента массива из тысячи чисел, расположенного в последовательных ячейках ОЗУ. Определить механизм передачи параметров в подпрограмму, привести пример вызова разработанной подпрограммы.

NumAdrZero1000: clr c ; признак поиска первого нулевого эл.

mov R2,#10 ; загрузка счетчиков

L2: mov R3,#100 ; на 1000 элементов

L3: movx A,@DPTR ; чтение элемента массива

jc L2 ; проверка первый или последний

jnz L1

mov 10,DPL

mov 11,DPH

setb c ; признак поиска последн. нулевого эл.

L2: jnz L1

mov 12,DPL

mov 13,DPH

Inc dptr ; установка указателя на след. Элемент

L1: djnz R3,L3 ; обработка счетчиков цикла

djnz R2,L2

ret ; возврат из подпрограммы

Пример вызова:

mov DPTR,#Massive ; загрузка в указатель адреса начала массива

acall NumAdrZero1000 ; вызов подпрограммы

  1. К порту вывода МПС подключен ЦАП .Предложить фрагмент принципиальной (функциональной) электрической схемы МПС . Составить программу генерации на выходе ЦАП сигнала вида Y=Sin(wT) с регулируемой частотой w. Функция Y = Sin(T) заданна таблично в виде массива отсчетов в последовательных ячейках памяти.

mov DPTR,#Table ; загрузка указателя на таблицу

mov R1,#0 ; обнуление индекса элемента таблицы

Next: mov A,R1 ; загрузка текущего индекса

inc R1 ; инкремент индекса

movc A,@A+DPTR ; извлечение очередного элемента

mov P1,A ; вывод в ЦАП

acall Delay ; пауза для регулирования частоты

sjmp Next ; продолжение работы

; Таблица отсчетов синуса

Table: DB 0, Sin(π/256), Sin(2π/256), Sin(3π/256), … Sin(π)

17.К порту вывода МПС подключен ЦАП .Предложить фрагмент принципиальной (функциональной) электрической схемы МПС . Составить программу генерации на выходе ЦАП сигнала указанной формы с регулируемыми параметрами.

t1 t2 t3 t4

Start: mov P1,#0 ; формирование нулевого состояния участка t4

acall Delay4 ; реализация интервала t4

Next1: inc P1 ; формирование очередного шага участка t1

acall Delay1 ; реализация интервала t1

mov A,P1

cjne A,#Amplitude1, Next1 ; проверка на ампл. Значения

acall Delay2 ; реализация интервала t2

mov P1,# Amplitude2 ; формирование нач. сост. участка t3

Next3: dec P1 ; формирование очередного шага участка t3

acall Delay3 ; реализация интервала t3

mov A,P1

cjne A,#0, Next3 ; проверка на ампл. Значения

sjmp Start

18.К порту ввода МПС подключен восьмиразрядный АЦП, принимающий сигнал с аналогового датчика температуры со шкалой 0-1000 С . Предложить фрагмент принципиальной (функциональной) электрической схемы МПС . Составить программу, обеспечивающую прием отсчетов температуры с заданным интервалом времени, процесс измерения прекращается по достижении одного из условий:

- получено значение равное 105 С;

- всего принято 500 отсчетов температуры.

Характеристика датчика

Код Температура С

0 0

255  1000

(255/1000)*105?27 105

Start: acall Delay ; интервал между отсчетами

mov A,P1 ; прием очередного значения

cjne A,#27,L1 ; проверка на 105 С

sjmp Exit ; на выход если 105

L1: inc DPTR ; инкремент счетчика отсчетов

cjne DPL,#Low(500),Start ; проверка на

cjne DPH,#High(500),Start ; 500 отсчетов

Exit:

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

Next: mov R1,#0 ; обнуление счетчика

mov A,P1 ; прием значения

clr c ; сравнение с

subb A,#Const ; константой

jc Next ; если меньше то работаем далее

inc R1 ; если больше то инкремент счетчика

sjmp Next ; работаем далее

20. Составить подпрограмму на Ассемблере, которая определяет и запоминает в любых ячейках памяти адрес первого и последнего ненулевого элемента массива из тысячи чисел, расположенного в последовательных ячейках ОЗУ. Определить механизм передачи параметров в подпрограмму, привести пример вызова разработанной подпрограммы.

NumAdrNonZero1000: clr c ; признак поиска первого нулевого эл.

mov R2,#10 ; загрузка счетчиков

L2: mov R3,#100 ; на 1000 элементов

L3: movx A,@DPTR ; чтение элемента массива

jc L2 ; проверка первый или последний

jz L1

mov 10,DPL

mov 11,DPH

setb c ; признак поиска последн. нулевого эл.

L2: jz L1

mov 12,DPL

mov 13,DPH