В HTML      В PDF
микроэлектроника, микросхема, транзистор, диод, микроконтроллер, память, msp430, Atmel, Maxim, LCD, hd44780, t6963, sed1335, avr, mega128
Предприятия Компоненты Документация Применения Статьи Новости

 
Пересюхтюмя


13-я Международная выставка электронных компонентов и комплектующих для электронной промышленности





Выставка Передовые Технологии Автоматизации





Главная страница > Применение > Микроконтроллеров > MSP430
Пересюхтюмя


13-я Международная выставка электронных компонентов и комплектующих для электронной промышленности





Выставка Передовые Технологии Автоматизации


Приложение А: пример программы

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