ВУЗ:
Составители:
284
INC R0 ;
INC R1 ;
INC R2 ;
CJNE R2,#10,Ii_0 ;
RET
;Подключение модулей опроса кнопок, вывода данных на ЖКИ (с опросом ЖКИ)
;и преобразования представления чисел
$INCLUDE (C:\PR_ADUC\DAC\knop.asm)
$INCLUDE (C:\PR_ADUC\DAC\lcd_opr.asm)
$INCLUDE (C:\PR_ADUC\DAC\preobr.asm)
;Конец исполняемого кода
END
Путем нажатий на кнопку «0» можно менять количество ступенек в од-
ном импульсе и, как следствие, размах и длительность импульсов в последова-
тельности. Максимальный размах импульсов равен AVDD. Временная дли-
тельность одной ступеньки – около 30 мкс. Это время, затрачиваемое програм-
мой на прохождение одного своего основного цикла, в течение которого проис-
ходит приращение числа, помещаемого затем в регистры данных ЦАП DACH,
DACL на единицу, сравнение этого числа с некоторой константой (порогом), а
также опрос кнопки «0». В каждом программном цикле выходное напряжение
ЦАП возрастает на величину, соответствующую одной дискрете ЦАП в случае,
если записываемое в DACH, DACL число еще не достигло порога. При дости-
жении порога в DACH, DACL записываются нули, что вызывает спад импуль-
са, и со следующего основного цикла программы начинается ступенчатый
фронт нового импульса. При 12-разрядном режиме работы ЦАП значение на-
пряжения, соответствующее уровню одной дискреты ЦАП, определяется как
AVDD/4096, а максимальное количество ступенек в одном импульсе равно
4095. При таком большом количестве ступенек генерируемые программой им-
пульсы выглядят на экране осциллографа как пилообразные с линейно возрас-
тающим фронтом и почти мгновенным спадом.
В блоке программной обработки обнаружения нажатия на кнопку «0»
производится изменение константы (порога) сравнения. Каждое нажатие на
кнопку увеличивает эту константу на 64 в пределах от 64 до 4032. Текущее зна-
чение порога в дискретах индицируется на ЖКИ в десятичном представлении
начиная с адреса 0 ОЗУ ЖКИ. Настойку модуля ЦАП производит подпрограм-
ма Pod_INIT_RSN.
Поскольку количество выполняемых инструкций в разных проходах ос-
новного цикла программы будет неодинаковым из-за наличия в алгоритме
ветвлений, частота такой импульсной последовательности будет нестабильной.
Задача достижения стабильности частоты последовательности генерируемых им-
пульсов легко решается с использованием механизма прерываний от какого-либо
из системных таймеров ADuC824. Такое решение иллюстрируется программой,
исходный текст которой содержится в файле dac_tim.asm (листинг 3.23).
Страницы
- « первая
- ‹ предыдущая
- …
- 282
- 283
- 284
- 285
- 286
- …
- следующая ›
- последняя »