Ь //- Использование внутренних функций, периферийных блоков...
#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