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 ; если разность отрицательна

Перейти на страницу: 1 2

Лучшие статьи по информатике

Разработка устройства для измерения радиационного излучения
Ионизирующее излучение, часто называемое радиоактивным излучением, ― это естественное явление, всегда присутствующее в окружающей нас природной ...

Применение аппаратно-вычислительной платформы Arduino для программирования автомобильных компьютерных систем
Если у нас нет GPS Приемника, а мы хотим, как то ориентироваться в пространстве, то можно использовать цифровой компас, который ре ...

Программно управляемый генератор сигнала типа меандр сверхнизкой частоты на микроконтроллере
является 8-ми разрядным CMOS микроконтроллером с низким уровнем энергопотребления, основанным на усовершенствованной AVR RISC архитектуре. Благодаря выполне ...

Меню сайта