// M. Buccini
// Texas Instruments Inc. // Feb 2005
// Built with IAR Embedded Workbench Version: 3.21A
//******************************************************************************
#include
void main(void) {
volatile unsigned int i;
BoardConfig(0xb8);
WDTCTL = WDTPW + WDTHOLD; P3SEL |= 0x30;
BCSCTL1 &= ~XT2OFF; do {
IFG1 &= ~OFIFG; for (i = 0xFF; i > 0; i--);
}
while ((IFG1 & OFIFG));
BCSCTL2 |= SELM_2 + SELS; ME1 |= UTXE0 + URXE0; UCTL0 |= CHAR; UTCTL0 |= SSEL1; UBR00 = 0x45; UBR10 = 0x00; UMCTL0 = 0x00; UCTL0 &= ~SWRST; IE1 |= URXIE0;
_BIS_SR(LPM0_bits + GIE); }
#pragma vector=UART0RX_VECTOR
__interrupt void usart0_rx (void) {
while (!(IFG1 & UTXIFG0)); TXBUF0 = RXBUF0;
// Stop WDT
// P3.4,5 = USART0 TXD/RXD // XT2on // Clear OSCFault flag // Time for flag to set // OSCFault flag still set? // MCLK = SMCLK = XT2 (safe) // Enable USART0 TXD/RXD // 8-bit character // UCLK = SMCLK // 8MHz 115200
// 8MHz 115200
// 8MHz 115200 modulation // Initialize USART state machine // Enable USART0 RX interrupt // Enter LPM0 w/ interrupt // USART0 TX buffer ready? // RXBUF0 to TXBUF0
26
} //****************************************************************************** // MSP-FET430P140 Demo - ADC12, Sample A0, Set P3.4 if A0 > 0.5*AVcc //
// Description: A single sample is made on A0 with reference to AVcc. // Software sets ADC10SC to start sample and conversion - ADC12SC // automatically cleared at EOC. ADC12 internal oscillator times sample (16x) // and conversion. In Mainloop MSP430 waits in LPM0 to save power until ADC12 // conversion complete, ADC12_ISR will force exit from LPM0 in Mainloop on // reti. If A0 > 0.5*AVcc, P3.4 set, else reset. //
// MSP430F149 // -----------------
// /|\\| XIN|- // | | | // --|RST XOUT|- // | | // Vin-->|P6.0/A0 P3.4|--> LED //
// Dasheng
// LiTian Electronic Inc.
// Feb 2008
// Built with IAR Embedded Workbench Version: 3.42A
//******************************************************************************
#include
void main(void) {
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
BoardConfig(0xb8);
ADC12CTL0 = SHT0_2 + ADC12ON; // Set sampling time, turn on ADC12 ADC12CTL1 = SHP; // Use sampling timer ADC12IE = 0x01; // Enable interrupt
ADC12CTL0 |= ENC; // Conversion enabled P6SEL |= 0x01; // P6.0 ADC option select P3DIR |= BIT4; // P3.4 output
for (;;)
{
ADC12CTL0 |= ADC12SC; // Sampling open
_BIS_SR(CPUOFF + GIE); // LPM0, ADC12_ISR will force exit }
27
}
// ADC12 interrupt service routine #pragma vector=ADC_VECTOR __interrupt void ADC12_ISR (void) {
if (ADC12MEM0 < 0x7FF)
P3OUT &= ~BIT4; // Clear P3.4 LED off else
P3OUT |= BIT4; // Set P3.4 LED on
_BIC_SR_IRQ(CPUOFF); // Clear CPUOFF bit from 0(SR) } //****************************************************************************** // MSP-FET430P140 Demo - ADC12, Using the Internal Reference
//
// Description: This example shows how to use the internal reference of the ADC12. // It uses the internal 2.5V reference and performs a single conversion // on channel A0. The conversion results are stored in ADC12MEM0. Test by // applying a voltage to channel A0, then setting and running to a break point // at the \// register window in debugger and view the contents of ADC12MEM0. // //
// MSP430F149 // ---------------
// | | // Vin -->|P6.0/A0 | // | | // //
// M. Mitchell
// Texas Instruments Inc.
// Feb 2005
// Built with IAR Embedded Workbench Version: 3.21A
//******************************************************************************
#include
void main(void) {
volatile unsigned int i;
WDTCTL = WDTPW+WDTHOLD; // Stop watchdog timer BoardConfig(0xb8);
P6SEL |= 0x01; // Enable A/D channel A0
28
ADC12CTL0 = ADC12ON+SHT0_2+REFON+REF2_5V; // Turn on and set up ADC12 ADC12CTL1 = SHP; // Use sampling timer ADC12MCTL0 = SREF_1; // Vr+=Vref+
for ( i=0; i<0x3600; i++) // Delay for reference start-up { }
ADC12CTL0 |= ENC; // Enable conversions
while (1) {
ADC12CTL0 |= ADC12SC; // Start conversion while ((ADC12IFG & BIT0)==0);
_NOP(); // SET BREAKPOINT HERE } } //***************************************************************************** // MSP-FET430P140 Demo - ADC12, Sample A10 Temp, Set P1.0 if Temp ++ ~2C //
// Description: Use ADC12 and the integrated temperature sensor to detect // temperature gradients. The temperature sensor output voltage is sampled // ~ every 80ms and compared with the defined delta values using an ISR. // (ADC12OSC/256)/ determines sample time which needs to be greater than // 30us for temperature sensor.
// ADC12 is operated in repeat-single channel mode with the sample and
// convert trigger sourced from Timer_A CCR1. The ADC12MEM0_IFG at the end // of each converstion will trigger an ISR.
// ACLK = n/a, MCLK = SMCLK = default DCO ~ 800k, ADC12CLK = ADC12OSC //
// MSP430F149 // ----------------- // /|\\| XIN|- // | | | // --|RST XOUT|- // | |
// |A10 P3.4|-->LED //
// A. Dannenberg // Texas Instruments Inc. // Feb 2005
// Built with IAR Embedded Workbench Version: 3.21A
//******************************************************************************
#include
29
#include \
#define ADCDeltaOn 12 // ~2 Deg C delta
static unsigned int FirstADCVal; // holds 1st ADC result
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop watchdog BoardConfig(0xb8);
P3OUT = 0x00; // Clear P1
P3DIR = BIT4; // P3.4 as output ADC12CTL1 = SHS_1 + SHP + CONSEQ_2; // TA trig., rpt conv. ADC12MCTL0 = SREF_1 + INCH_10; // Channel A10, Vref+
ADC12IE = 0x01; // Enable ADC12IFG.0
ADC12CTL0 = SHT0_8 + REF2_5V + REFON + ADC12ON + ENC; // Config ADC12 TACCTL1 = OUTMOD_4; // Toggle on EQU1 (TAR = 0) TACTL = TASSEL_2 + MC_2; // SMCLK, cont-mode while (!(0x01 & ADC12IFG)); // First conversion?
FirstADCVal = ADC12MEM0; // Read out 1st ADC value _BIS_SR(LPM0_bits + GIE); // Enter LPM0 w/ interrupt }
#pragma vector=ADC_VECTOR __interrupt void ADC12ISR (void)
{
if (ADC12MEM0 <= FirstADCVal + ADCDeltaOn)
P3OUT &= ~BIT4; // LED off else P3OUT |= BIT4; // LED on } /********************************************************* 程序功能:用固定频率的方波驱动蜂鸣器,共16种音调;在蜂鸣器 发出不同音调的同时,LED发光以二进制数字形式指示 当前音调的编号(1~16) ---------------------------------------------------------- 测试说明:聆听蜂鸣器发声的音调变化。
**********************************************************/ #include
uchar step = 0xff;
/************************主函数************************/ void main( void ) {
30