搜索
bottom↓
回复: 0

MSP430-LAUNCHPAD 6个官方教学例程+GUI

[复制链接]

出0入0汤圆

发表于 2012-7-7 23:00:14 | 显示全部楼层 |阅读模式
本帖最后由 goolloo 于 2012-7-7 23:04 编辑

LaunchPad_TemperSensor

.
  1. /******************************************************************************
  2. *                  MSP-EXP430G2-LaunchPad User Experience Application
  3. *
  4. * 1. Device starts up in LPM3 + blinking LED to indicate device is alive   
  5. *    + Upon first button press, device transitions to application mode
  6. * 2. Application Mode
  7. *    + Continuously sample ADC Temp Sensor channel, compare result against
  8. *      initial value        
  9. *    + Set PWM based on measured ADC offset: Red LED for positive offset, Green
  10. *      LED for negative offset
  11. *    + Transmit temperature value via TimerA UART to PC  
  12. *    + Button Press --> Calibrate using current temperature  
  13. *                       Send character '� via UART, notifying PC
  14. ******************************************************************************/
  15.   
  16. #include  "msp430g2553.h"

  17. #define     LED0                  BIT0
  18. #define     LED1                  BIT6
  19. #define     LED_DIR               P1DIR
  20. #define     LED_OUT               P1OUT



  21. #define     BUTTON                BIT3
  22. #define     BUTTON_OUT            P1OUT
  23. #define     BUTTON_DIR            P1DIR
  24. #define     BUTTON_IN             P1IN
  25. #define     BUTTON_IE             P1IE
  26. #define     BUTTON_IES            P1IES
  27. #define     BUTTON_IFG            P1IFG
  28. #define     BUTTON_REN            P1REN

  29. #define     TXD                   BIT1                      // TXD on P1.1
  30. #define     RXD                   BIT2                      // RXD on P1.2

  31. #define     APP_STANDBY_MODE      0
  32. #define     APP_APPLICATION_MODE  1

  33. #define     TIMER_PWM_MODE        0   
  34. #define     TIMER_UART_MODE       1
  35. #define     TIMER_PWM_PERIOD      2000  
  36. #define     TIMER_PWM_OFFSET      20

  37. #define     TEMP_SAME             0
  38. #define     TEMP_HOT              1
  39. #define     TEMP_COLD             2

  40. #define     TEMP_THRESHOLD        5  

  41. //   Conditions for 9600/4=2400 Baud SW UART, SMCLK = 1MHz
  42. #define     Bitime_5              0x05*4                      // ~ 0.5 bit length + small adjustment
  43. #define     Bitime                13*4//0x0D   

  44. #define     UART_UPDATE_INTERVAL  1000


  45. unsigned char BitCnt;


  46. unsigned char applicationMode = APP_STANDBY_MODE;
  47. unsigned char timerMode = TIMER_PWM_MODE;

  48. unsigned char tempMode;
  49. unsigned char calibrateUpdate = 0;
  50. unsigned char tempPolarity = TEMP_SAME;
  51. unsigned int TXByte;
  52.                               
  53. /* Using an 8-value moving average filter on sampled ADC values */  
  54. long tempMeasured[8];
  55. unsigned char tempMeasuredPosition=0;
  56. long tempAverage;

  57. long tempCalibrated, tempDifference;


  58.   
  59. void InitializeLeds(void);
  60. void InitializeButton(void);
  61. void PreApplicationMode(void);                     // Blinks LED, waits for button press
  62. void ConfigureAdcTempSensor(void);
  63. void ConfigureTimerPwm(void);
  64. void ConfigureTimerUart(void);  
  65. void Transmit(void);
  66. void InitializeClocks(void);

  67. void main(void)
  68. {
  69.   unsigned int uartUpdateTimer = UART_UPDATE_INTERVAL;
  70.   unsigned char i;
  71.   WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
  72.   
  73.   InitializeClocks();
  74.   InitializeButton();
  75.   InitializeLeds();
  76.   PreApplicationMode();                     // Blinks LEDs, waits for button press
  77.   
  78.   /* Application Mode begins */
  79.   applicationMode = APP_APPLICATION_MODE;
  80.   ConfigureAdcTempSensor();
  81.   ConfigureTimerPwm();
  82.    
  83.   __enable_interrupt();                     // Enable interrupts.
  84.   
  85.   
  86.   /* Main Application Loop */
  87.   while(1)
  88.   {   
  89.     ADC10CTL0 |= ENC + ADC10SC;             // Sampling and conversion start
  90.     __bis_SR_register(CPUOFF + GIE);        // LPM0 with interrupts enabled
  91.    
  92.    
  93.     /* Moving average filter out of 8 values to somewhat stabilize sampled ADC */
  94.     tempMeasured[tempMeasuredPosition++] = ADC10MEM;
  95.     if (tempMeasuredPosition == 8)
  96.       tempMeasuredPosition = 0;
  97.     tempAverage = 0;
  98.     for (i = 0; i < 8; i++)
  99.       tempAverage += tempMeasured[i];
  100.     tempAverage >>= 3;                      // Divide by 8 to get average
  101.    
  102.     if ((--uartUpdateTimer == 0) || calibrateUpdate )
  103.     {
  104.       ConfigureTimerUart();
  105.       if (calibrateUpdate)
  106.       {
  107.         TXByte = 248;                       // A character with high value, outside of temp range
  108.         Transmit();
  109.         calibrateUpdate = 0;
  110.       }   
  111.       TXByte = (unsigned char)( ((tempAverage - 630) * 761) / 1024 );      
  112.       Transmit();
  113.       uartUpdateTimer = UART_UPDATE_INTERVAL;
  114.       ConfigureTimerPwm();
  115.     }
  116.    
  117.    
  118.     tempDifference = tempAverage - tempCalibrated;
  119.     if (tempDifference < -TEMP_THRESHOLD)
  120.     {
  121.       tempDifference = -tempDifference;
  122.       tempPolarity = TEMP_COLD;
  123.       LED_OUT &= ~ LED1;
  124.     }
  125.     else
  126.     if (tempDifference > TEMP_THRESHOLD)
  127.     {
  128.       tempPolarity = TEMP_HOT;
  129.       LED_OUT &= ~ LED0;
  130.     }
  131.     else
  132.     {
  133.       tempPolarity = TEMP_SAME;
  134.       TACCTL0 &= ~CCIE;
  135.       TACCTL1 &= ~CCIE;
  136.       LED_OUT &= ~(LED0 + LED1);        
  137.     }
  138.    
  139.     if (tempPolarity != TEMP_SAME)   
  140.     {      
  141.       tempDifference <<= 3;
  142.       tempDifference += TIMER_PWM_OFFSET;      
  143.       TACCR1 = ( (tempDifference) < (TIMER_PWM_PERIOD-1) ? (tempDifference) : (TIMER_PWM_PERIOD-1) );
  144.       TACCTL0 |= CCIE;
  145.       TACCTL1 |= CCIE;      
  146.     }   
  147.   }  
  148. }

  149. void PreApplicationMode(void)
  150. {   
  151.   LED_DIR |= LED0 + LED1;
  152.   LED_OUT |= LED0;                          // To enable the LED toggling effect
  153.   LED_OUT &= ~LED1;
  154.    
  155.   BCSCTL1 |= DIVA_1;                        // ACLK/2
  156.   BCSCTL3 |= LFXT1S_2;                      // ACLK = VLO
  157.   
  158.   TACCR0 = 1200;                             //   
  159.   TACTL = TASSEL_1 | MC_1;                  // TACLK = SMCLK, Up mode.  
  160.   TACCTL1 = CCIE + OUTMOD_3;                // TACCTL1 Capture Compare
  161.   TACCR1 = 600;  
  162.   __bis_SR_register(LPM3_bits + GIE);          // LPM0 with interrupts enabled
  163. }

  164. void ConfigureAdcTempSensor(void)
  165. {
  166.   unsigned char i;
  167.   /* Configure ADC Temp Sensor Channel */
  168.   ADC10CTL1 = INCH_10 + ADC10DIV_3;         // Temp Sensor ADC10CLK/4
  169.   ADC10CTL0 = SREF_1 + ADC10SHT_3 + REFON + ADC10ON + ADC10IE;
  170.   __delay_cycles(1000);                     // Wait for ADC Ref to settle  
  171.   ADC10CTL0 |= ENC + ADC10SC;               // Sampling and conversion start
  172.   __bis_SR_register(CPUOFF + GIE);          // LPM0 with interrupts enabled
  173.   tempCalibrated = ADC10MEM;
  174.   for (i=0; i < 8; i++)
  175.     tempMeasured[i] = tempCalibrated;
  176.   tempAverage = tempCalibrated;  
  177. }


  178. void ConfigureTimerPwm(void)
  179. {
  180.   timerMode = TIMER_PWM_MODE;
  181.   
  182.   TACCR0 = TIMER_PWM_PERIOD;                              //   
  183.   TACTL = TASSEL_2 | MC_1;                  // TACLK = SMCLK, Up mode.
  184.   TACCTL0 = CCIE;
  185.   TACCTL1 = CCIE + OUTMOD_3;                // TACCTL1 Capture Compare
  186.   TACCR1 = 1;
  187. }

  188. void ConfigureTimerUart(void)
  189. {
  190.   timerMode = TIMER_UART_MODE;               // Configure TimerA0 UART TX
  191.                            
  192.   CCTL0 = OUT;                               // TXD Idle as Mark
  193.   TACTL = TASSEL_2 + MC_2 + ID_3;            // SMCLK/8, continuous mode
  194.   P1SEL |= TXD + RXD;                        //
  195.   P1DIR |= TXD;                              //  
  196. }

  197. // Function Transmits Character from TXByte
  198. void Transmit()
  199. {
  200.   BitCnt = 0xA;                             // Load Bit counter, 8data + ST/SP
  201.   while (CCR0 != TAR)                       // Prevent async capture
  202.     CCR0 = TAR;                             // Current state of TA counter
  203.   CCR0 += Bitime;                     // Some time till first bit
  204.   TXByte |= 0x100;                        // Add mark stop bit to TXByte
  205.   TXByte = TXByte << 1;                 // Add space start bit
  206.   CCTL0 =  CCIS0 + OUTMOD0 + CCIE;          // TXD = mark = idle
  207.   while ( CCTL0 & CCIE );                   // Wait for TX completion
  208. }



  209. // Timer A0 interrupt service routine
  210. #pragma vector=TIMER0_A0_VECTOR
  211. __interrupt void Timer_A (void)
  212. {
  213.   if (timerMode == TIMER_UART_MODE)
  214.   {
  215.     CCR0 += Bitime;                           // Add Offset to CCR0  
  216.     if (CCTL0 & CCIS0)                        // TX on CCI0B?
  217.     {
  218.       if ( BitCnt == 0)
  219.         CCTL0 &= ~ CCIE;                        // All bits TXed, disable interrupt
  220.       else
  221.       {
  222.         CCTL0 |=  OUTMOD2;                    // TX Space
  223.         if (TXByte & 0x01)
  224.         CCTL0 &= ~ OUTMOD2;                   // TX Mark
  225.         TXByte = TXByte >> 1;
  226.         BitCnt --;
  227.       }
  228.     }
  229.   }
  230.   else
  231.   {
  232.     if (tempPolarity == TEMP_HOT)
  233.       LED_OUT |= LED1;   
  234.     if (tempPolarity == TEMP_COLD)      
  235.       LED_OUT |= LED0;
  236.     TACCTL0 &= ~CCIFG;              
  237.   }
  238. }

  239. #pragma vector=TIMER0_A1_VECTOR
  240. __interrupt void ta1_isr(void)
  241. {
  242.   TACCTL1 &= ~CCIFG;
  243.   if (applicationMode == APP_APPLICATION_MODE)
  244.     LED_OUT &= ~(LED0 + LED1);
  245.   else
  246.     LED_OUT ^= (LED0 + LED1);
  247.    
  248. }

  249. void InitializeClocks(void)
  250. {

  251.   BCSCTL1 = CALBC1_1MHZ;                    // Set range
  252.   DCOCTL = CALDCO_1MHZ;
  253.   BCSCTL2 &= ~(DIVS_3);                         // SMCLK = DCO / 8 = 1MHz  
  254. }

  255. void InitializeButton(void)                 // Configure Push Button
  256. {
  257.   BUTTON_DIR &= ~BUTTON;
  258.   BUTTON_OUT |= BUTTON;
  259.   BUTTON_REN |= BUTTON;
  260.   BUTTON_IES |= BUTTON;
  261.   BUTTON_IFG &= ~BUTTON;
  262.   BUTTON_IE |= BUTTON;
  263. }


  264. void InitializeLeds(void)
  265. {
  266.   LED_DIR |= LED0 + LED1;                          
  267.   LED_OUT &= ~(LED0 + LED1);  
  268. }

  269. /* *************************************************************
  270. * Port Interrupt for Button Press
  271. * 1. During standby mode: to exit and enter application mode
  272. * 2. During application mode: to recalibrate temp sensor
  273. * *********************************************************** */
  274. #pragma vector=PORT1_VECTOR
  275. __interrupt void PORT1_ISR(void)
  276. {   
  277.   BUTTON_IFG = 0;  
  278.   BUTTON_IE &= ~BUTTON;            /* Debounce */
  279.   WDTCTL = WDT_ADLY_250;
  280.   IFG1 &= ~WDTIFG;                 /* clear interrupt flag */
  281.   IE1 |= WDTIE;  
  282.    
  283.   if (applicationMode == APP_APPLICATION_MODE)
  284.   {
  285.     tempCalibrated = tempAverage;
  286.     calibrateUpdate  = 1;
  287.   }
  288.   else
  289.   {
  290.     applicationMode = APP_APPLICATION_MODE; // Switch from STANDBY to APPLICATION MODE
  291.     __bic_SR_register_on_exit(LPM3_bits);        
  292.   }   
  293. }

  294. #pragma vector=WDT_VECTOR
  295. __interrupt void WDT_ISR(void)
  296. {
  297.     IE1 &= ~WDTIE;                   /* disable interrupt */
  298.     IFG1 &= ~WDTIFG;                 /* clear interrupt flag */
  299.     WDTCTL = WDTPW + WDTHOLD;        /* put WDT back in hold state */
  300.     BUTTON_IE |= BUTTON;             /* Debouncing complete */
  301. }

  302. // ADC10 interrupt service routine
  303. #pragma vector=ADC10_VECTOR
  304. __interrupt void ADC10_ISR (void)
  305. {
  306.   __bic_SR_register_on_exit(CPUOFF);        // Return to active mode
  307. }
复制代码
.
.
.
.
.
.
LaunchPad_Lab2

.
  1. //******************************************************************************
  2. //  LaunchPad Lab2 - Software Toggle P1.0,
  3. //
  4. //                MSP430G2xx2
  5. //             -----------------
  6. //         /|\|              XIN|-
  7. //          | |                 |
  8. //          --|RST          XOUT|-
  9. //            |                 |
  10. //            |             P1.0|-->LED
  11. //
  12. //******************************************************************************

  13. #include  <msp430g2553.h>

  14. void main(void)
  15. {
  16.         WDTCTL = WDTPW + WDTHOLD;                 // Stop watchdog timer

  17.         if (CALBC1_1MHZ == 0xFF || CALDCO_1MHZ == 0xFF)
  18.         {
  19.                 while(1);                                                // If calibration constants erased, trap CPU!!
  20.         }

  21.         // Configure Basic Clock
  22.         BCSCTL1 = CALBC1_1MHZ;                                 // Set range
  23.         DCOCTL = CALDCO_1MHZ;                                // Set DCO step + modulation
  24.         BCSCTL3 |= LFXT1S_2;                                // Set LFXT1

  25.         P1DIR = BIT6;                                                 // P1.6 output (green LED)
  26.         P1OUT = 0;                                                    // LED off

  27.         IFG1 &= ~OFIFG;                                        // Clear OSCFault flag
  28.         BCSCTL2 |=SELM_1 + DIVM_0;                 // Set MCLK

  29.         for(;;)
  30.         {
  31.                 P1OUT = BIT6;                                     // P1.6 on (green LED)
  32.                 _delay_cycles(100);
  33.                 P1OUT = 0;                                        // green LED off
  34.                 _delay_cycles(5000);
  35.         }
  36. }
复制代码
.
.
.
.
.
.
LaunchPad_Lab3
.
  1. //******************************************************************************
  2. //  LaunchPad Lab3 - Software Port Interrupt Service
  3. //
  4. //               MSP430G2xx2
  5. //            -----------------
  6. //        /|\|              XIN|-
  7. //         | |                 |
  8. //         --|RST          XOUT|-
  9. //     /|\   |                 |
  10. //      --o--|P1.3         P1.0|-->LED
  11. //     \|/
  12. //

  13. //******************************************************************************

  14. #include  <msp430g2553.h>

  15. void main(void)
  16. {
  17.         WDTCTL = WDTPW + WDTHOLD;                 // Stop watchdog timer
  18.         P1DIR |= BIT0;                            // Set P1.0 to output direction
  19.         P1IES |= BIT3;                            // P1.3 Hi/lo edge
  20.         P1IFG &= ~BIT3;                           // P1.3 IFG cleared
  21.         P1IE |= BIT3;                             // P1.3 interrupt enabled

  22.         _BIS_SR(LPM4_bits + GIE);                 // Enter LPM4 w/interrupt
  23. }

  24. // Port 1 interrupt service routine
  25. #pragma vector=PORT1_VECTOR
  26. __interrupt void Port_1(void)
  27. {
  28.         if (P1IFG & BIT3)
  29.         {
  30.                 P1OUT ^= BIT0;                         // P1.0 = toggle
  31.                 P1IFG &= ~BIT3;                        // P1.3 IFG cleared
  32.         }
  33. }
复制代码
.
.
.
.
.
.
LaunchPad_Lab4
.
  1. //******************************************************************************
  2. //  LaunchPad Lab4 - Timer Toggle P1.6,
  3. //
  4. //                MSP430G2452
  5. //             -----------------
  6. //         /|\|              XIN|-
  7. //          | |                 |
  8. //          --|RST          XOUT|-
  9. //            |                 |
  10. //            |             P1.6|-->LED
  11. //
  12. //******************************************************************************

  13. #include  <msp430g2553.h>

  14. void main(void)
  15. {
  16.         WDTCTL = WDTPW + WDTHOLD;                 // Stop watchdog timer

  17.         if (CALBC1_1MHZ ==0xFF || CALDCO_1MHZ == 0xFF)
  18.         {
  19.                 while(1);                    // If calibration constants erased, trap CPU!!
  20.         }

  21.         BCSCTL1 = CALBC1_1MHZ;                     // Set range
  22.         DCOCTL = CALDCO_1MHZ;                      // Set DCO step + modulation
  23.         BCSCTL3 |= LFXT1S_2;                      // LFXT1 = VLO

  24.         P1DIR = 0x40;                             // P1.6 output (green LED)
  25.         P1OUT = 0;                                // LED off

  26.         IFG1 &= ~OFIFG;                           // Clear OSCFault flag
  27.         BCSCTL1 |= DIVA_3;                                                  // ACLK = VLO/8
  28.         BCSCTL2 |= SELM_3 + DIVM_3 + DIVS_3;      // MCLK = DCO/8, SMCLK = DCO/8

  29.         // Configure TimerA
  30.         TACTL = TASSEL_1 + MC_1 + TAIE;          // Source: ACLK, UP mode
  31.         CCR0 = 5100;                                        //Timer count 5100
  32.         CCR1 = 2000;                                                //Timer count 100
  33.         CCTL0 = CCIE;                          //CCR0 interrupt enabled
  34.         CCTL1 = CCIE;                          //CCR1 interrupt enabled

  35.         _BIS_SR(GIE);

  36.         for(;;);
  37. }

  38. // Timer A0 interrupt service routine
  39. #pragma vector=TIMER0_A0_VECTOR
  40. __interrupt void Timer_A0 (void)
  41. {
  42.         P1OUT |= BIT6;                // P1.6 output High
  43. }

  44. // Timer A1 Interrupt Vector (TA0IV) handler
  45. #pragma vector=TIMER0_A1_VECTOR
  46. __interrupt void Timer_A1(void)
  47. {
  48.         switch( TA0IV )
  49.         {
  50.         case  2: P1OUT &= ~BIT6;                    // P1.6 output Low
  51.            break;
  52.         case 10:
  53.            break;
  54. }
  55. }
复制代码
.
.
.
.
.
.
LaunchPad_Lab5
.
  1. //******************************************************************************
  2. //  LaunchPad Lab5 - Timer Toggle P1.6 with Low Power Mode
  3. //
  4. //                MSP430G2452
  5. //             -----------------
  6. //         /|\|              XIN|-
  7. //          | |                 |
  8. //          --|RST          XOUT|-
  9. //            |                 |
  10. //            |             P1.6|-->LED
  11. //
  12. //******************************************************************************
  13. #include  <msp430g2452.h>

  14. void main(void)
  15. {
  16.         WDTCTL = WDTPW + WDTHOLD;                 // Stop watchdog timer

  17.         if (CALBC1_1MHZ == 0xFF || CALDCO_1MHZ == 0xFF)
  18.         {
  19.                 while(1);                                // If calibration constants erased, trap CPU!!
  20.         }

  21.         BCSCTL1 = CALBC1_1MHZ;                     // Set range
  22.         DCOCTL = CALDCO_1MHZ;                      // Set DCO step + modulation
  23.         BCSCTL3 |= LFXT1S_2;                      // LFXT1 = VLO

  24.         P1DIR = 0x40;                             // P1.6 output (green LED)
  25.         P1OUT = 0;                                // LED off

  26.         IFG1 &= ~OFIFG;                           // Clear OSCFault flag
  27.         BCSCTL1 |= DIVA_3;                                                  // ACLK = VLO/8
  28.         BCSCTL2 |= SELM_3 + DIVM_3 + DIVS_3;      // MCLK = DCO/8, SMCLK = DCO/8

  29.         //TACTL = TASSEL_2 +  MC_1;          // SMCLK, UP mode
  30.         TACTL = TASSEL_1 +  MC_1;          // ACLK, UP mode
  31.         CCR0 = 5100;                                        //Timer count 5100
  32.         CCR1 = 2000;                                                //Timer count 100
  33.         CCTL0 = CCIE;                  //interrupt enabled
  34.         CCTL1 = CCIE;                  //interrupt enabled

  35.         _BIS_SR(LPM0_bits + GIE);                        //Enter Low Power Mode

  36.         for(;;);
  37. }

  38. // Timer A0 interrupt service routine
  39. #pragma vector=TIMER0_A0_VECTOR
  40. __interrupt void Timer_A0 (void)
  41. {
  42.         P1OUT |= BIT6;                // P1.6 output High
  43. }

  44. // Timer_A2 Interrupt Vector (TA0IV) handler
  45. #pragma vector=TIMER0_A1_VECTOR
  46. __interrupt void Timer_A1(void)
  47. {
  48.         switch( TA0IV )
  49.         {
  50.         case  2: P1OUT &= ~BIT6;                    // P1.6 output Low
  51.            break;
  52.         case 10:
  53.            break;
  54.         }
  55. }
复制代码
.
.
.
.
.
.
LaunchPad_Lab6
  1. //******************************************************************************
  2. //  LaunchPad Lab5 - ADC10, Sample A10 Temp and Convert to oC and oF
  3. //
  4. //                MSP430G2452
  5. //             -----------------
  6. //         /|\|              XIN|-
  7. //          | |                 |
  8. //          --|RST          XOUT|-
  9. //            |                 |
  10. //            |A10              |
  11. //
  12. //******************************************************************************
  13. #include  "msp430g2553.h"

  14. long temp;
  15. long IntDegF;
  16. long IntDegC;

  17. void main(void)
  18. {
  19.   WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
  20.   //Configure ADC10
  21.   ADC10CTL1 = INCH_10 + ADC10DIV_3;         // Choose ADC Channel as Temp Sensor
  22.   ADC10CTL0 = SREF_1 + ADC10SHT_3 + REFON + ADC10ON + ADC10IE;        //Choose ADC Ref source
  23.   __enable_interrupt();                     // Enable interrupts.
  24.   TACCR0 = 30;                              // Delay to allow Ref to settle
  25.   TACCTL0 |= CCIE;                          // Compare-mode interrupt.
  26.   TACTL = TASSEL_2 | MC_1;                  // TACLK = SMCLK, Up mode.
  27.   LPM0;                                     // Wait for delay.
  28.   TACCTL0 &= ~CCIE;                         // Disable timer Interrupt
  29.   __disable_interrupt();

  30.   while(1)
  31.   {
  32.     ADC10CTL0 |= ENC + ADC10SC;             // Sampling and conversion start
  33.     __bis_SR_register(LPM0_bits + GIE);        // LPM0 with interrupts enabled

  34.     // oF = ((A10/1024)*1500mV)-923mV)*1/1.97mV = A10*761/1024 - 468
  35.     temp = ADC10MEM;
  36.     IntDegF = ((temp - 630) * 761) / 1024;

  37.     // oC = ((A10/1024)*1500mV)-986mV)*1/3.55mV = A10*423/1024 - 278
  38.     temp = ADC10MEM;
  39.     IntDegC = ((temp - 673) * 423) / 1024;

  40.     __no_operation();                       // SET BREAKPOINT HERE
  41.   }
  42. }

  43. // ADC10 interrupt service routine
  44. #pragma vector=ADC10_VECTOR
  45. __interrupt void ADC10_ISR (void)
  46. {
  47.   __bic_SR_register_on_exit(LPM0_bits);        // Clear CPUOFF bit from 0(SR)
  48. }

  49. #pragma vector=TIMER0_A0_VECTOR
  50. __interrupt void ta0_isr(void)
  51. {
  52.   TACTL = 0;
  53.   __bic_SR_register_on_exit(LPM0_bits);        // Clear CPUOFF bit from 0(SR)
  54. }
复制代码
.
.
.
.
.
.
GUI是用于第一个实验的PC上位机

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-28 06:40

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表