Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
POYaSNITEL_NAYa_ZAPISKA.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
695.3 Кб
Скачать

2. Описание алгоритма программы

Программа организована с использованием прерываний по таймеру 0, который тактируется системной частотой поделенной на 256. Таймер предварительно загружается числом 100, что задает период генерации прерываний по переполнению таймера каждые 5 мс, обеспечивая высокую точность хода часов, при условии использования качественного кварцевого резонатора. При использовании кварцевого резонатора 8 МГц длительность цикла инструкции равна 0.125 мкс. С учетом этого, при записи числа n в регистр таймера 0 TCNT0 период его переполнения определяется по выражению:

(256-n)*256*0,125 мкс

Таким образом запись числа 100 обеспечит период переполнения 5мс с высокой для счета реального времени точностью:

(256-100)*256*0,125* =4,992мс.

Вся программа разбита на несколько частей – это основная программа и подпрограммы прерывания по переполнению таймера/счетчика, счета времени, вывода на индикацию, сканирования клавиатуры и анализа нажатой клавиши.

В основной программе настраивается МК и ожидается прерывание по переполнению таймера-счетчика где наращивается счетчик срабатываний (когда его значение станет равным 200, то это значит, что прошла 1сек и вызывается подпрограмма счета времени), вызываются подпрограммы вывода на индикацию и сканирования (которая в свою очередь вызывает подпрограмму анализа нажатой клавиши), а также реализуется механизм мигания вводимого сегмента при установке начального времени.

2.1 Использование ресурсов

Использование периферийных устройств:

Таймер/счетчик0 – счетчик импульсов с периодом 5мс;

7 линий порта D – подключение клавиатуры 3х4 и управление анодами цифровых индикаторов;

8 линий порта A – сегментные линии индикаторов;

8 линий порта С – линейка светодиодов;

Используемые регистры:

r0 – используется при работе с таблицей данных, в нем содержится считанное значение из таблицы данных по адресу Z;

r1 – число секунд;

r2 – число минут;

r3 – число часов;

r6, r27, r28 – используется для дребезга в подпрограмме для сканирования клавиатуры;

r9 – счетчик таймера;

r7 – переменная кнопки;

r10, r11– используются в подпрограмме для сканирования клавиатуры;

r18, r15 – используется в подпрограмме KLAV несут в себе информацию о минутах и часах;

r19 – число заданных минут;

r20 – число заданных часов;

r21 – флаг первого запуска программы;

r22 – строка светодиодов;

r23 – направление движения бегущей точки;

r24 – флаг завершения отсчета заданного времени

r25 – режим работы таймера;

r29 – несет в себе информацию о месте положения ввода числа на индикаторе.

r16, r17, r30 – используются в качестве вспомогательных.

Рис. 2.1.1 – Таблица рабочих регистров

2.2 Основная программа

При подаче питания и выполнении условий сброса выполняется процедура сброса (Reset) для инициализации системных устройств. В качестве внешнего прерывания используется прерывание Int1, которое позволяет отслеживать изменение сигнала на выводе PD.3 . Стандартное имя прерывания – External_1. Для разрешения этого прерывания необходимо установить в “1” седьмой бит (“int1”) регистра маски прерывания GIMSK . Биты управления видом сигнала прерывания 1( Interrupt Sense Control – ISC11 и ISC10) в регистре управления процессора MCUCR определяют, активизируется ли внешнее прерывание по срезу(фронту) импульса или по уровню на контакте PD.3. В данной работе прерывание активизируется по фронту сигнала, т.е. биты ISC11 и ISC10 установлены в “1” (так фиксируется факт отжатия кнопки). При возникновении события, вызывающего прерывание, в регистре основных флагов прерывания GIFR устанавливается в логическую единицу бит INTF1. Линии портов настраиваются на нужные уровни. Порт А необходимо настроить на выход, старшую тетраду порта D на выход и младшую на вход. Старшая тетрада порта D используется и для реализации индикации. Т.е. подавая на один из этих выходов логический “0” сканируется клавиатура и одновременно зажигается нужный индикатор. Порт С настраивается на выход. Вывод PD3 настраивается на ввод с подтяжкой. Далее обнуляются используемые в программе регистры или заносятся в них нужные значения. Настраиваются таймеры и заносятся нужные значения в регистры управления МК. Прерывание по переполнению таймера становится активным после разрешения глобальных прерываний. Далее программа зацикливается, и в этом случае вся обработка будет происходить по прерыванию таймера 0.

Р

Рис. 2.2.2 – INIT – подпрограмма задающая начальные данные

ис. 2.2.1 – Основная программа

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]