Курсовая работа: Обработка сигналов на основе MCS-51
MOVX @DPTR, A; передача из аккумулятора в ВПД
INC Rl ; переход к следующему регистру
INC DPTR ; приращение указателя адреса
DJNZ R0, LOOP ; R0=R0–1, если R0>0 то повторить цикл
Пример 8. Обращение к памяти программ, где сохраняется готовая таблица значений. Для этого используется специальная команда MOVC. Например: программа для выбора значений функции синуса из таблицы с точностью 0,4% и дискретом 1°. Начальный параметр для подпрограммы есть значения угла х, которое находится в аккумуляторе. Данная программа работает без указателя данных DPTR. Инкремент аккумулятора перед обращением к таблице необходим в связи с использованием однобайтной команды возврата. Таблица синусов занимает в памяти 90 байтов.
; вычисление sin(x) по таблице значений: вход (А)¬(х), хÎ(0,89°);
; выход (А) ¬ дробная часть значения синуса
SIN: INC A ; инкремент аккумулятора
MOVC А,@А+РС ; загрузка значения синуса из таблицы
RET ; возвращение
; таблица синусов
SINUS: DB 00000000В; SIN (0)=0
DB 00000100В ; SIN (1)=0,017 DB 00001001В; SIN (2)=0,035
………………………
DB 11111111В ; SIN (89)=0,999
Пример 9. Операции со стеком и организация прерываний. Механизм доступа к стеку MCS-51: перед записью в стек содержимое регистра-указателя стека SP инкрементируется, а после чтения данных из стека декрементируется.
После начальной установки ОМЭВМ в SP заносится начальное значение 07Н. Для переопределения начального значения SP можно использовать команду MOV SP, #data16.
Таким образом, стек может быть расположен в любом месте РПД. Стек используется для организации обращения к подпрограммам и при обработке прерываний. Кроме того, может использоваться для временного хранения значений регистров специальных функций.
Подпрограмма обработки прерываний.
ORG 3 ; задание адреса вектора прерываний
SJMP SUBINO ; переход на подпрограмму обработки
ORG 30Н
SUBINO: PUSH PSW ; сохранение в стеке PSW
PUSH A ; сохранение в стеке аккумулятора А
PUSH В ; сохранение в стеке дополнения-аккумулятора В
PUSH DPL ; сохранение в стеке DPTR
PUSH DPH ; сохранение в стеке DPTR
MOV PSW,#00001000B; выбор другого банка регистров (1)
.