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 ; если разность отрицательна
Разработка контура регулирования давления смешанного газа на ГСС блока воздухонагревателей
Главным средством технического процесса, без которого невозможны высокие
темпы дальнейшего роста производительности труда, является комплексная
механизация ...
Проектирования мультисервисной сети
В
данном курсовом проекте рассматривается проблема проектирования мультисервисной
сети предприятия “Магазин”. Термин мультисервисная сеть означает, что в да ...
Проект цифрового печатного узла, выполняющего функцию стабилизации напряжения
Производство
цифровых устройств электронной аппаратуры в настоящее время находит все более
широкое применение во многих областях народного хозяйства и в зна ...
Меню сайта
2025 © www.informaticspoint.ru