Курсовая работа: Обработка сигналов на основе MCS-51
Курсовая работа: Обработка сигналов на основе MCS-51
ОБРАБОТКА СИГНАЛОВ
НА OCHOBЕ MCS-51
Введение
В данном
курсовом проекте рассматриваются практические примеры и их программная
реализация на языке ассемблера для микроконтроллера семейства MCS-51 (МК51).
При
рассмотрении решения задач, связанных с генерацией временных интервалов и
работой последовательного порта предполагается использование МК с частотой
задающего генератора равной 12 МГц.
1.
Использование команд передачи данных
Пример
1.
Передать содержимое буфера последовательного адаптера в резидентную память
данных по косвенному адресу в R0:
MOV @R0, SBUF; передача принятого по последовательному каналу; байта
в РПД.
Пример
2.
Записать в ячейки РПД с адресами 39 и 40 число FA1BH:
LOAD: MOV 39H,#0FAH
MOV 40H,#1BH
Пример З. Загрузить в
указатель данных начальный адрес 4300Н массива данных, расположенного во
внешней памяти данных:
MOV DPTR,#4300Н ; загрузка начального значения указателя данных.
Пример
4.
Загрузить управляющее слово в регистр управления таймером:
MOV TCON,#00000101В; разрешение внешних прерываний по низкому уровню
сигнала.
Пример
5.
Сбросить все флажки пользователя (биты) в резидентной области памяти от 20Н до
2FH:
MOV R0,#20Н ; заданный начальный адрес
области памяти
MOV Rl,#0FH ; загрузить счетчик
(длина области памяти)
LOOP: MOV @R0,#0 ; снять один байт (8 флажков)
INC R0 ; переход к следующему
байту
DJNZ R1, LOOP ; цикл, если не все флажки
сброшены
Пример
6.
Передать управление по метке L0, если счетчик 0 достиг значения 128:
MOV A, TL0 ; передача содержимого счетчика в аккумулятор
JB А.7, L0 ; перейти на L0, если А.7=1
…
L0: ; продолжение программы
Пример Запомнить во
внешней памяти данных содержимое регистров
банка 0. Начальный адрес ВПД – 2000Н:
MOV PSW,#00010000B; выбор банка регистров 1
MOV R0,#8 ; счетчик ¬ 8
MOV DPTR, #2000H; определение начального адреса ВПД
MOV Rl,#0 ; определение начального адреса РПД
LOOP: MOV A,@R1 ; (А) ¬ (регистр)
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)
.
обработка прерываний
.
POP DPH ; восстановление DPTR
POP DPL ; восстановление DPTR
POP В ; восстановление В
POP A ; восстановление аккумулятора
POP PSW ; восстановление PSW и банка регистров 0
RETI ; возвращение в основную программу
Если
SP=1FH, размещение регистров в стеке после входа в подпрограмму обработки будет
таким, как показано на рис. 1.
7FH |
|
|
26H |
DPH |
¬(SP) |
25H |
DPL |
|
24H |
В |
|
23H |
А |
|
22H |
PSW |
|
21H |
РСН |
Указатель
¬(счетчик)
команд
PC
|
20H |
PCL |
1FH |
|
00H |
|
|
Рисунок
1 – Распределение памяти при вызове подпрограммы
Страницы: 1, 2, 3, 4, 5, 6 |