Обсуждение прикладной программы

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

Подпрограмма инициации производит настройку модулей MSP430. Мо­дуль таймера настраивается на непрерывный счет от 0 до 32767 и формирова­ние прерывания при переполнении. Также подпрограмма производит установку необходимых параметров основного модуля синхронизации.

Основная ветвь - программа, выполняемая каждый раз после формиро­вания прерывания, и инициализирующая режим сна микроконтроллера. Даже тогда, когда вычислительное ядро переходит в режим ожидания, таймер все равно продолжает работать.

Подпрограмма обслуживания прерывания (interrupt service routine - ISR) таймера обрабатывает биты регистра состояния (status register- SR), которые записываются в стек до выполнения подпрограммы обслуживания прерыва­ния. Это позволяет вычислительному ядру находиться в активном режиме, а не в режиме сна, по выходу из подпрограммы обслуживания прерывания.

Подпрограмма расчета временных параметров выполняется каждый раз после 1-секундного прерывания таймера. Она пересчитывает значения секунд, минут и часов в двоично-десятичной форме. В описании встроенных перифе­рийных модулей микроконтроллеров семейства MSP430 можно найти более сложную подпрограмму, которая высчитывает и значения дней, месяцев и лет (учитывая и високосные годы).