📄 msp430xe42x.c
字号:
#include "msp430xE42x.h" // Standard Equations
static unsigned int results[3]; // Needs to be global in this example
// Otherwise, the compiler removes it
// because it is not used for anything.
void main(void)
{
volatile unsigned int i;
WDTCTL = WDTPW+WDTHOLD; // Stop watchdog timer
FLL_CTL0 |= XCAP14PF; // Set load capacitance for xtal.
for (i = 0; i < 20000; i++); // Delay - to allow watch crystal to stabilize.
P1DIR = 0xFF;
P1OUT = 0;
P2DIR = 0xFF;
P2OUT = 0xFF;
SD16CTL = SD16REFON+SD16SSEL0; // Turn on SD16 Ref,SMCLK
SD16CCTL0 |= SD16SNGL+SD16GRP+SD16IE; // Enable Grouping with next higher channel,
// Single Conv
SD16CCTL1 |= SD16SNGL+SD16GRP+SD16IE; // Enable Grouping with next higher channel,
// Single Conv
SD16CCTL2 |= SD16SNGL+SD16IE; // Single Conv, Interrupt Enable
_EINT(); // Enable interrupts
for ( i=0; i<0x3600; i++); // Delay for reference start-up
while (1)
{
results[0]=0; //光
results[1]=0; //湿
results[2]=0; //温
SD16CCTL2 |= SD16SC; // Start conversion
//_BIS_SR(LPM0_bits); // Enter LPM0
for ( i=0; i<0x3600; i++);
for ( i=0; i<0x3600; i++);
for ( i=0; i<0x3600; i++);
}
}
enum
{
NO_INT = 0,
SDM0 = 4,
SDM1 = 6,
SDM2 = 8
};
#pragma vector=SD16_VECTOR
__interrupt void SD16ISR (void)
{
switch (SD16IV)
{
case NO_INT: break;
case SDM0: results[0] = SD16MEM0; break; // Move results, IFG is cleared
case SDM1: results[1] = SD16MEM1; break; // Move results, IFG is cleared
case SDM2: results[2] = SD16MEM2; SD16CTL= 0;/* LPM3; */ break;
// Move results, IFG is cleared
// LPM3 or 4
default: break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -