Задание 4. Звуковой излучатель.
Открыть новый проект, набрать программу генерации звука и получить звук. Программно изменить громкость и высоту тона (частоту).
Была набрана программа генерации звука:
org 02000h
dpp data 84h
ena xdata 04h ; адрес регистра ENA
buz BIT acc.3 ; бит для вывода звука
mov r0,#ena ; адрес ENA – в r0
mov a,#20h
loop:
setb buz ; установка buz для вывода единицы
call putbyte ; вывод байта в аккумуляторе
call delay ; подпрограмма задержки
clr buz ; очистка buz для вывода 0
call putbyte ; вывод байта в аккумуляторе
call delay ; подпрограмма задержки
sjmp loop ; бесконечный цикл
delay: ; подпрограмма временной задержки
mov r1,#099h ; записываем в r1 начальное значение счетчика
djnz r1,$ ; в цикле уменьшаем его значение на 1 пока не достигнем 0
ret ; возврат из подпрограммы
putbyte:
push dpp
mov dpp,#08d
movx @r0,A
pop dpp
ret
end
В процессе выполнения программы были слышны звуковые колебания частотой около 3 кГц. Для генерации звука на другой частоте нами было изменено начальное значение цикла подпрограммы delay (на 0ffh). При этом наблюдалась генерация более низкой частоты.
Вывод: Лабораторный стенд SDK 1.1 содержит встроенный пьезоэлектрический звуковой излучатель типа НРА17. Он может использоваться для звуковой индикации различных событий. Генерация звука с помощью этого излучателя производится путем подачи меандра 1-0-1-0-1 на один из битов регистра ENA. В данной программе вывод нового значения (1 или 0) производится после временной задержки, которая реализуется с помощью простого цикла. За счет изменения количества повторений цикла можно менять частоту звука, генерируемого преобразователем. Изменение частоты было зафиксировано экспериментально.
Задание 5. Программирование уапп.
Набрать программу для инициализации УАПП UART_INI, набрать приведенную в методичке головную программу, принимающую байт с линии, передающую этот байт обратно в линию и на светодиодные индикаторы (эхо-печать). Изучить работу монитора T2 в режиме эмуляции терминала. Переключив монитор T2 в режим эмуляции терминала наблюдать передачу данных с клавиатуры компьютера (при нажатии клавиш) через стенд SDK1.1 на экран компьютера. Провести данный эксперимент в двух режимах: при отображении принятых данных в бинарном виде и шестнадцатеричном виде. Изучить режим работы T2 при записи в файл информации, приходящей со стенда (п.2.3). Записать эхо-печать в текстовый файл. Выйдя из монитора T2 (команда bye), просмотреть содержимое этого текстового файла средствами программы Блокнот.
org 02050h
s9600 equ 0fdh ; константа скорости передачи данных UART – 9.6 кбит/с
dpp data 84h
sv xdata 07h
call uart_init ; инициализация UART
loop: ; прием байта с выводом на линейку светодиодов
jnb scon.0,$ ; ожидание прихода байта
mov a,sbuf ; прием байта
clr scon.0 ; сброс флага приемника
call svdisp ; вывод на светодиоды
; передача байта обратно в СОМ порт компьютера
mov sbuf,a ; передача байта обратно
jnb scon.1,$ ; ожидание конца передачи байта
clr scon.1 ; сброс флага передатчика
sjmp loop ; бесконечный цикл
uart_init:
mov th1,#s9600 ; установка скорости UART
orl tmod,#20h ; таймер1 – в режиме автоперезагрузки
anl pcon,#not(80h) ; скорость не удваивать
orl tcon,#40h ; запуск таймера 1
mov scon,#50h ; настройка последовательного канала
clr ie.4 ; запрет прерывания от приемника/передатчика
ret ; возврат из подпрограммы
svdisp:
mov r0,#sv ; адрес регистра светодиодов – в r0
push dpp ; сохранение номера страницы ВПД
mov dpp,#08d ; переходим на восьмую страницу ВПД
movx @r0,A ; вывод байта
pop dpp ; восстановление номера страницы
ret ; возврат из процедуры
end
В процессе работы программы мы изучили режим эмуляции терминала монитора Т2, наблюдали передачу информации с компьютера на микроконтроллер и обратно в бинарном (отображение на экране в виде символов) и шестнадцатеричном (отображение в виде шестнадцатеричных кодов) виде. Один из сеансов эхопечати был записан в файл и просмотрен с помощью программы Блокнот.
Вывод: Наличие в микроконтроллере ADuC812 встроенного программируемого универсального асинхронного приемо-передатчика (УАПП) позволяет организовать эффективное взаимодействие c внешними устройствами, другими микроконтроллерами и компьютерами. В данной лабораторной работе обеспечивается взаимодействие стенда SDK 1.1 и компьютера с установленным монитором T2. Для начала работы с последовательным портом необходимо настроить таймер/счетчик1, а также установить значение регистра управления последовательного порта. В приведенной программе не используются прерывания, поэтому их необходимо запретить. В таком случае можно передавать и принимать информацию простой записью и чтением регистра sbuf. В ходе работы была подтверждена полная работоспособность программы в разных режимах работы терминала T2.
org 02000h ; начало SRAM ВПП
dpp data 84h ; указатель страницы ВПД
sv xdata 07h ; адрес регистра светодиодов
svdisp: mov r0,#sv
call putbyte ; вызов подпрограммы putbyte
ret ; возврат из подпрограммы
putbyte:
push dpp ; сохр. номер текущей страницы
mov dpp,#08d ; переход на 8-ю страницу
movx @r0,A ; запись в регистр ПЛИС
pop dpp ; восстановление номера страницы
ret ; возврат из подпрограммы
end