Глава 9.
Цифровой термометр на базе MSP430
.SET .SET .SET .SET .SET .SET |
SCG1 LPMC LPM1 LPM2 LPM3 LPM4 |
BTCNT1 | .EQU | 0046H |
BTCNT2 | .EQU | 0047H |
WDTCTL | .EQU | 0120H |
WDTHOLD | .EQU | 080H |
WDT KEY | .EQU | 05A00H |
WDT STOP | .EQU | 05A80H |
GIE | .SET | 8H |
CPUOFF | .SET | 10H |
OSCOFF | .SET | 20H |
SCGC | .SET | 40H |
80Н CPUOFF SCG0+CPUOFF |
Счётчик 1 BASIC TIMER Счётчик 2 BASIC TIMER Регистр управления WATCHDOG Маска останова WATCHDOG Ключ доступа к WATCHDOG WATCHDOG маска + ключ Общее разрешение прерываний Бит выключения CPU Бит выключения генератора Контроль системного тактирования, битС Контроль системного тактирования, бит1
Биты установки режима LPMC Биты установки режима LPM1 SCG1+CPUOFF ; Биты установки режима LPM2 SCG1+SCG0+CPUOFF ;Биты установки режима
; LPM3
OSCOFF+CPUOFF ; Биты установки режима ; LPM4
; Служебные регистры для вычисления сопротивления
; датчика *******************************************************
MLTPLR_HW . EQU R5
TEN_K . EQU R6
BITTEST .EQU R7
MRESLT_HW .EQU R8
MRESLT_LW .EQU R9
LPCNTR .EQU R1C
RESULT .EQU Rll
*********************************
; Начало программы *******************************************************
.SECT "MAIN",MAIN RESET MOV #STACK,SP ; Инициализация указателя
; стека *******************************************************
; Конфигурация периферии *******************************************************
SETUP
SETUPINT MOV.В #PO1IE,&IE1 ; Разрешить P0.1/UART
; для монитора RS232
MOV.В #BTIE+TPIE,&IE2 /Разрешить прерыва-
; ния от В.TIMER, &
; TMR. PORT
Библиотека Компэла
f& Texas iNSiraJMENTS | IV. Примеры конкретных применений | |||
CLR.B | &IFG1 | • Очистить все флаги | ||
• прерываний | ||||
CLR.B | &IFG2 | |||
EINT | • Разрешить прерывания | |||
SETUPWDT | MOV | #WDT STOP, | &WDTC | :tl |
• Остановить WATCHDOG | ||||
• TIMER | ||||
SETUPLCD | MOV. В | #0FFH,&LCDCTL | • ЖКИ STK, все сегмен- | |
• ты, 4MUX | ||||
SETUPBT | MOV. В | #BTLOAD,&BTCTL | ; Загрузить требуемую | |
• частоту прерываний | ||||
• в BASIC TIMER | ||||
CLR.B | &BTCNT1 | • Очистить счётчик ВТ 1 | ||
CLR.B | &BTCNT2 | • Очистить счётчик ВТ 2 | ||
CLEARLCD | MOV | #15,R6 | • Очистить 15 ячеек | |
• памяти ЖКИ | ||||
CLEAR1 | MOV. В | #O,LCDM1-1 | (R6) | ; записав туда «0» |
DEC | R6 | • Вся памяти ЖКИ | ||
• очищена? | ||||
JNZ | CLEAR1 | • нет, чистим дальше | ||
. ******** | ********* | ********** | ************************** | |
; Начало | основной | программы | ||
. ******** | ********* | ********** | ************************** | |
BEGIN | BIS | #LPM3,SR | ; Установить SR-биты | |
; для LPM3 |
Подпрограмма измерения с запрещёнными прерываниями. ТР.2-.5 не используются поэтому переписаны. Используются только TPD.0 & 1. Начальная инициализация: Указатель стека = 0, Начало с TPD.1
16-битный таймер, тактирование от MCLK, CIN разрешает счёт
MEASURE PUSH.В #TPDMAX ; Сохранить в стеке
для последующего
использования
CLR R8 ; Указатель для стека
результата MEASLOP MOV.B #(TPSSEL0*3)+ENA,&TPCTL
TPCNT1 CLK=MCLK, EN1=1 *****************************************************
Конденсатор С заряжается на протяжении t > 5?. Используются выходы N-1
Библиотека Компэла