SLAA076S
Приложение А: пример программы
A.1 Использование сторожевого таймера — файл RTC11xWD.s43
;***************************************************************************** ; ЭТА ПРОГРАММА ПОСТАВЛЯЕТСЯ В ВИДЕ "КАК ЕСТЬ". КОМНАИЯ TI НЕ ДАЕТ НИКАКИХ ГАРАНТИЙ ; И НЕ НЕСЕТ НИКАКОЙ ОТВЕТСТВЕННОСТИ ЗА ВОЗМОЖНЫЕ НЕТОЧНОСТИ ; РАБОТЫ ИЛИ НЕПРАВИЛЬНОСТЬ РАБОТЫ ПРОГРАММЫ. ; ПРИ КОММЕРЧЕСКОМ ИСПОЛЬЗОВАНИИ ДАННОЙ ПРОГРАММЫ ; КОМПАНИЯ TI ОТКАЗЫВАЕТСЯ ОТ АВТОРСТВА И СНИМАЕТ ; С СЕБЯ ВСЯКУЮ ОТВЕТСТВЕННОСТЬ. ; ; КОМПАНИЯ TI ОТКАЗЫВАЕТСЯ ОТ ЛЮБЫХ ГАРАНТИЙ В ОТНОШЕНИ ТОГО, ; ЧТО ПРОГРАММА НЕ МОЖЕТ ПРИНИСТИ ПРЯМЫЕ ИЛИ КОСВЕННЫЕ УБЫТКИ ИЛИ ; ПОТЕРЮ ДОВЕРИЯ ИЛИ ПРИБЫЛИ ; ПРИ ИСПОЛЬЗОВАНИИ ЕЕ ТЕОРИИ ИЛИ АЛГОРИТМОВ. ; ОТВЕТСТВЕННОСТЬ ПРИ КОММЕРЧЕСКОМ ИСПОЛЬЗОВАНИИ ; ДАННОЙ ПРОГРАММЫ ПОЛНОСТЬЮ ЛЕЖИТ НА ЛИЦЕ, ИСПОЛЬЗОВАВШЕМ ; ДАННУЮ ПРОГРАММУ ; ; Если не указано иное, программа, созданная компанией ; Texas Instruments поставляется на условиях "свободно распространяемого программного обеспечения". ; Вы можете свободно изменять программу без всяких ограничений ; Передавать программу третьим лицам можно только при ; доведении до их сведений этих условий и при ; его согласии с этими условиями. ; Вы должны приводить лицензию в каждой копии или частичной копии. ; ; Вы признаете и соглашаетесь, что Программа содержит ; защищенный авторским правом материал, коммерческую тайну и другую частную информацию ; компании TI и защищена в соответствии с законами об авторском праве, ; международным соглашением об авторском праве и законом о коммерческой тайне, а так же ; законом об охране интеллектуальной собственности. Для защиты авторских прав компании TI ; Вы соглашаетесь не де компилировать, перерабатывать, ; или преобразовывать программу ; к удобочитаемому виду. Вы соглашаетесь ; ни в коем случае не изменять и не удалять внесенную в программу информацию ; об авторском праве. Компания TI ооставляет за собой все права, ; не оговоренные в данной лицензии. Кроме ; того, что оговорено в данной лицензии, не может рассматриваться ; при возможном судебном разбирательстве. ; ; Вы не можете использовать программу для микроконтроллеров, которые не производит компания TI. ; ***************************************************************************** ; RTC, использующие сторожевой таймер ; ; Описание: Эта программа демонстрирует возможность реализации часов реального времени. ; В основной программе MSP430 переводится в режим LPM3. ; Сторожевой таймер формирует прерывание каждую секунду и переводит ; MSP430 в активный режим, который позволяет выполнить основную программу. ; Основная программа вызывает подпрограмму часов Clock и вновь переводит микроконтроллер в режим LPM3. ; ; Эта программа написана для микроконтроллера MSP430F1121, но легко может ; быть переработана для использования в любом микроконтроллере семейства MSP430. ; ; Для хранения информации о часах, минутах и секундах используются три регистра. ; ;***************************************************************************** #include ”msp430x11x1.h” ; включить файл заголовков ; переменные RTC #define SEC R13 #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 ; увеличение десятичного значения секунд CMP.b #060h,SEC ; окончилась минута? 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 #BIT0,&IE1 ; Разрешение прерывания от сторожевого таймера MOV #WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL,&WDTCTL ; Остановка сторожевого таймера ; Установка интервала ; режима таймера и установка ; интервала прерывания ; 1 секунда с ACLK. ClearRTC MOV.b #00h,SEC ; Очистка секунд (SEC) MOV.b #00h,MIN ; Очистка минут (MIN) MOV.b #00h,HR ; Очистка часов (HR) EINT ; Разрешение прерываний RET ; установки выполнены ;––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– ; Подпрограмма обработки прерывания от сторожевого таймера: ; ЦП просто переходит в активное состояние в RETI путем манипулирования битами SR ; в переменной SR, которая помещена в стек. ; Флаг прерывания очищается автоматически ;––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– WDINT BIC #LPM3,0(SP) ; Очистка SR LPM3 битов в верхней части стека RETI ; ;––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– RSEG INTVEC ; вектора прерываний ;––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– DW RESET ; DW RESET ; DW RESET ; DW RESET ; DW RESET ; DW RESET ; DW RESET ; DW RESET ; DW RESET ; DW RESET ; Таймер Timer_A (CCIFG0) DW WDINT ; Сторожевой таймер DW RESET ; DW RESET ; DW RESET ; DW RESET ; NMI, повреждение автогенератора DW RESET ; POR, внешний сброс, сторожевой таймер END
A.2 Использование таймера Timer_A — файл RTC11xTA.s43 File
;***************************************************************************** ; ЭТА ПРОГРАММА ПОСТАВЛЯЕТСЯ В ВИДЕ "КАК ЕСТЬ". КОМНАИЯ TI НЕ ДАЕТ НИКАКИХ ГАРАНТИЙ ; И НЕ НЕСЕТ НИКАКОЙ ОТВЕТСТВЕННОСТИ ЗА ВОЗМОЖНЫЕ НЕТОЧНОСТИ ; РАБОТЫ ИЛИ НЕПРАВИЛЬНОСТЬ РАБОТЫ ПРОГРАММЫ. ; ПРИ КОММЕРЧЕСКОМ ИСПОЛЬЗОВАНИИ ДАННОЙ ПРОГРАММЫ ; КОМПАНИЯ TI ОТКАЗЫВАЕТСЯ ОТ АВТОРСТВА И СНИМАЕТ ; С СЕБЯ ВСЯКУЮ ОТВЕТСТВЕННОСТЬ. ; ; КОМПАНИЯ TI ОТКАЗЫВАЕТСЯ ОТ ЛЮБЫХ ГАРАНТИЙ В ОТНОШЕНИ ТОГО, ; ЧТО ПРОГРАММА НЕ МОЖЕТ ПРИНИСТИ ПРЯМЫЕ ИЛИ КОСВЕННЫЕ УБЫТКИ ИЛИ ; ПОТЕРЮ ДОВЕРИЯ ИЛИ ПРИБЫЛИ ; ПРИ ИСПОЛЬЗОВАНИИ ЕЕ ТЕОРИИ ИЛИ АЛГОРИТМОВ. ; ОТВЕТСТВЕННОСТЬ ПРИ КОММЕРЧЕСКОМ ИСПОЛЬЗОВАНИИ ; ДАННОЙ ПРОГРАММЫ ПОЛНОСТЬЮ ЛЕЖИТ НА ЛИЦЕ, ИСПОЛЬЗОВАВШЕМ ; ДАННУЮ ПРОГРАММУ ; ; Если не указано иное, программа, созданная компанией ; Texas Instruments поставляется на условиях "свободно распространяемого программного обеспечения". ; Вы можете свободно изменять программу без всяких ограничений ; Передавать программу третьим лицам можно только при ; доведении до их сведений этих условий и при ; его согласии с этими условиями. ; Вы должны приводить лицензию в каждой копии или частичной копии. ; ; Вы признаете и соглашаетесь, что Программа содержит ; защищенный авторским правом материал, коммерческую тайну и другую частную информацию ; компании TI и защищена в соответствии с законами об авторском праве, ; международным соглашением об авторском праве и законом о коммерческой тайне, а так же ; законом об охране интеллектуальной собственности. Для защиты авторских прав компании TI ; Вы соглашаетесь не де компилировать, перерабатывать, ; или преобразовывать программу ; к удобочитаемому виду. Вы соглашаетесь ; ни в коем случае не изменять и не удалять внесенную в программу информацию ; об авторском праве. Компания TI ооставляет за собой все права, ; не оговоренные в данной лицензии. Кроме ; того, что оговорено в данной лицензии, не может рассматриваться ; при возможном судебном разбирательстве. ; ; Вы не можете использовать программу для микроконтроллеров, которые не производит компания TI. ; ***************************************************************************** ; ; RTC, использующие таймер TIMER_A ; ; Описание: Эта программа демонстрирует возможность реализации часов реального времени. ; В основной программе MSP430 переводится в режим LPM3. ; Таймер Timer_A формирует прерывание раз в секунду, по которому ; MSP430 переходит в активный режим и оканчивает выполнение основной программы ; Основная программа вызывает подпрограммы Clock, а затем переводит микроконтроллер в режим LPM3. ; ; Эта программа написана для микроконтроллера MSP430F1121, но легко может ; быть переработана для использования в любом микроконтроллере семейства MSP430. ; ; Для хранения информации о часах, минутах и секундах используются три регистра. ; ;***************************************************************************** ; #include ”msp430x11x1.h” ; включить файл заголовков определения ; переменных RTC #define SEC R13 #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 ; увеличение десятичного значения секунд CMP.b #060h,SEC ; Прошла одна минута? 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 MOV #WDTPW+WDTHOLD,&WDTCTL ; Остановка сторожевого таймера setupTA MOV #TASSEL0+TACLR,&TACTL ; ACLK – источник для Timer_A. BIS #CCIE,&CCTL0 ; Разрешение прерывания от CCR0. MOV #07FFFh,&CCR0 ; загрузка в CCR0 значения 32,767. BIS #MC0, &TACTL ; запуск TA в режиме ”up to CCR0” ClearRTC MOV.b #00h,SEC ; Очистка переменной SEC MOV.b #00h,MIN ; Очистка переменной MIN MOV.b #00h,HR ; Очистка переменной HR EINT ; Разрешение прерываний RET ; ;––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– ; Подпрограмма обработки прерывания от таймера Timer_A: ; ЦП просто переходит в активное состояние в RETI путем манипулирования битами SR ; в переменной SR, которая помещена в стек. ; Флаг прерывания CCR0 очищается автоматически ;––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– CCR0INT BIC #LPM3,0(SP) ; Очистка битов SR LPM3 переход в верх указателя стека RETI ; ;––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– RSEG INTVEC ; Вектора прерываний ;––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– DW RESET ; DW RESET ; DW RESET ; DW RESET ; DW RESET ; DW RESET ; DW RESET ; DW RESET ; DW RESET ; DW CCR0INT ; Таймер Timer_A (CCIFG0) DW RESET ; Сторожевой таймер DW RESET ; DW RESET ; DW RESET ; DW RESET ; NMI, повреждение автогенератора DW RESET ; POR, внешний сброс, сторожевой таймер END
Автор документа: Жанна Свирина
, http://www.gaw.ru" |
Дата публикации: 30.11.2009 Дата редактирования: 30.11.2009 |
Кол-во просмотров 5232 | |
Все новости одной лентой |