- •Inc dptr ; установка указателя на след. Элемент
- •Inc dptr ; установка указателя на след. Элемент
- •Inc dptr ; установка указателя на след. Элемент
- •Inc dptr ; установка указателя на след. Элемент
- •Inc dptr ; установка указателя на след. Элемент
- •Inc dptr ; установка указателя на след. Элемент
- •Inc dptr ; установка указателя на след. Элемент
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 ; вызов подпрограммы
К порту вывода МПС подключен ЦАП .Предложить фрагмент принципиальной (функциональной) электрической схемы МПС . Составить программу генерации на выходе ЦАП сигнала вида 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