Informatics Point
Информатика и проектирование
Управляющая программа написана на языке ассемблера в среде AVR Studio версии 3.5. Полный текст программы приведен в приложении 1. Программа содержит 422 байта кода.
Рисунок 6. Блок-схема алгоритма обработки прерывания
Время выполнения основного цикла программы составляет не более 750 машинных циклов, время выполнения подпрограммы обработки прерывания - не более 35 машинных цикла.
В программе использовались следующие глобальные переменные:
- flag
- регистр пользовательских флагов,
§ бит 0 (tf
) - флаг метки времени 100 мс;
§ бит 1 (kre
) - текущее состояние кнопки переключения диапазонов;
§ бит 2 (kon
) - флаг нажатия кнопки переключения диапазонов;
§ бит 3 (minus
) - флаг отрицательного входного напряжения.
- tcou
- счетчик переполнения таймера Т0, в программе обработки прерывания используется также как рабочий регистр;
- cou
01
- счетчик для формирования интервала 100 мс из интервалов в 5 мс;
- mux- переменная хранения номера текущего интервала измерения;
- anod
- переменная для хранения кода включения анодов семисегментных индикаторов;
- zero
- регистр, содержащий 0
- buf- трехбайтовая переменная для хранения данных, выводимых на индикатор;
- Y- указатель видео буфера.
В программе использовались следующие подпрограммы:
- key- опрос кнопки переключения диапазонов, формирование флагов kre
и kon
в регистре flag
;
- range
- анализ состояния флага kon
и переключение на следующий диапазон измерения;
- measure
- запуск АЦП на измерение, ожидание конца измерения;
- calc
- расчет бинарного кода величины, подлежащей индикации по формуле, приведенной в п. 4.3.
- visio
- преобразование расчетной величины в цифры, кодированные семисегментным кодом, загрузка буфера индикации, включение светодиодов масштаба;
- tim
0
- подпрограмма обработки прерывания, формирование меток времени 5 мс и 100 мс, поддержка динамической индикации;
- init
- инициализация портов, АЦП, пуск таймера Т0;
- mulw
- беззнаковое 16-битное умножение, является аналогом библиотечной функции, поставляемой в комплекте с AVR Studio (файл “avr200.asm”);
- div
10
- деление двухбайтовой величины на 10, является модифицированной версией функций деления, представленных в файле “avr200.asm”.
Приложение
1. Текст
программы
.include "8535def.inc"
.equ ledV =0 ; номер бита для светодиода "V"
.equ ledmV =1 ; номер бита для светодиода "mV"
.equ min =4 ; номер бита для сегмента "минус"
.def zero =r2
.def mux =r3
.def anod =r4
.def cou01 =r5
.def tcou =r22
.def flag =r23
; биты регистра flag
.equ tf =0
.equ kre =1
.equ kon =2
.equ minus =3
.equ buf =$60 ; буфер для индикации, 3 байта
rjmp start
.org OVF0addrtim0: ldi r16, low(RAMEND)spl, r16r16, high(RAMEND)sph, r16init: sbrs flag, tf ; ожидание метки времени
rjmp loop
cbr flag, 1<<tf ; сброс флага
rcall key ; опрос кнопки
rcall range ; установка канала измерения
rcall measure ; оцифровка
rcall calc ; расчет выходного значения
rcall visio ; формирование видео буфера
rjmp loop
;********************************
; Out: биты kre и kon регистра flag
key: cbr flag, 1<<kon
sbic pinD, 0
rjmp ClrKre
sbrc flag, kre
retflag, (1<<kre)|(1<<kon): cbr flag, 1<<kre
;********************************: sbrs flag, konmuxr16, 3mux, r16pc+2mux
out ADMUX, mux
;*********************************
; Out: r17:r16
calc: sbr flag, 1<<minusr16, ADCL
in r17, ADCHr16, low(512) r17, high(512)
brpl ca1 ; если разность отрицательна
Система охранно-пожарной сигнализации ООО Завод Медсинтез
охранный сигнализация пожарный
Пожарная безопасность предусматривает обеспечение
безопасности людей и сохранения материальных ценностей предприятия н ...
Цифровой термометр
Уровень и направления развития электронных ЦАП и АЦП в значительной
степени определялись и продолжают определяться требованиями к техническим и
эксплуатацио ...
Основы разработки карманного осциллографа
Осциллограф - прибор, предназначенный для исследования
электрических сигналов во временном области путём визуального наблюдения
графика сигнала на экран ...
Меню сайта
2024 © www.informaticspoint.ru