Библиотека Компэла 93


Ь //- Использование внутренних функций, периферийных блоков...

#define MIN R14

#define HR R15

Программа RESET RSEG CODE

RESET MOV #02FEh,SP ; Инициализация указателя

; стека
CALL #Setup ; Подготовка ЖКИ и основного

; таймера

; Основная программа
Mainloop BIS #LPM3,SR ; Установка битов SR

; для режима LPM3

CALL #Clock ; обновление состояния часов

JMP Mainloop ; окончание основной программы

Clock: обновление состояния переменных секунд, минут и часов (SEC, MIN и HR)

Автор: Lutz Bierl.

Эта подпрограмма, которая считает количество часов, минут и секунд.

Она может использоваться с любым периферийным счетчиком любого микроконтроллера семейства MSP430, имеющим период переполнения 1 сек.

Эта подпрограмма весьма специфическая.

Она рассчитывает секунды, минуты и часы только

в двоично-десятичном коде. При необходимости могут

быть рассчитаны значения и в шестнадцатеричном коде.

Среди примеров применения MSP430 имеются описания реализации часов реального времени, которые также рассчитывают и год с учетом коррекции високосного года.

Clock SETC ; установка бита переноса

DADC.b SEC ; увеличение десятичного значения

; секунд

СМР.Ъ #060h,SEC ; окончилась минута?

94 Библиотека Компэла


Глава 2.

Реализация часов реального времени на MSP430

 

JLO Clockend нет, возврат
CLR.b SEC • Да, очистка секунд
DADC.b MIN • увеличение десятичного
    • значения минут
CMP.b #060h, MIN • прошло 60 минут?
JLO Clockend • Нет, возврат
CLR.b MIN • Да, очистка минут
DADC.b HR увеличение десятичного
    значения часов
CMP.b #024h, HR • прошло 24 часа?
JLO Clockend Нет, возврат
CLR.b HR Да, очистка часов
Clockend RET  
; Setup: Настройка модулей и управляющих регистров

Setup BIS.b #BITO,&IE1

MOV

Разрешение прерывания от сторожевого таймера #WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL,&WDTCTL

Остановка сторожевого

таймера

Установка интервала

режима таймера и установка

интервала прерывания

1 секунда с ACLK.

ClearRTC MOV'.b #OOh,SEC MOV.b #0Oh,MIN MOV.b #OOh,HR EINT RET

Очистка секунд (SEC) Очистка минут (MIN) Очистка часов (HR) Разрешение прерываний установки выполнены

Подпрограмма обработки прерывания от сторожевого

таймера:

ЦП просто переходит в активное состояние в RETI

путем манипулирования битами SR в переменной SR,

которая помещена в стек.

Флаг прерывания очищается автоматически


WDINT BIC RETI ;


#LPM3,0(SP)


Очистка SR LPM3 битов в верхней части стека


Библиотека Компэла


f& Texas