当前位置:首页 > 单片机 > 单片机
[导读]1 #include "msp430g2553.h"23 void sendChar(unsigned char c)4 {5 while(!(IFG2&UCA0TXIFG));6 UCA0TXBUF=c;7 }89 void sendStr(unsigned char *s)10 {11 while(*s!='\\0')12 {13 sendChar(

1 #include "msp430g2553.h"

2

3 void sendChar(unsigned char c)

4 {

5 while(!(IFG2&UCA0TXIFG));

6 UCA0TXBUF=c;

7 }

8

9 void sendStr(unsigned char *s)

10 {

11 while(*s!='')

12 {

13 sendChar(*s);

14 s++;

15 }

16 }

17

18 void main(void)

19

20 {

21

22 unsigned char i;

23 unsigned char temp;

24 unsigned long tempAverage;

25 unsigned long tempMeasured[8];

26

27 WDTCTL = WDTPW + WDTHOLD; // Stop WDT

28

29 BCSCTL1 = CALBC1_1MHZ; // Set DCO

30 DCOCTL = CALDCO_1MHZ;

31 BCSCTL2 &= ~(DIVS_3);

32

33

34 P1SEL = BIT1 + BIT2 ; // P1.1 = RXD, P1.2=TXD

35 P1SEL2 = BIT1 + BIT2 ; // P1.1 = RXD, P1.2=TXD

36

37 UCA0CTL1 |= UCSSEL_2; // SMCLK

38 UCA0BR0 = 104; // 1MHz 9600

39 UCA0BR1 = 0; // 1MHz 9600

40 UCA0MCTL = UCBRS0; // Modulation UCBRSx = 1

41 UCA0CTL1 &= ~UCSWRST; // **Initialize USCI state machine**

42

43 //IE2 |= UCA0RXIE; // Enable USCI_A0 RX interrupt

44

45 ADC10CTL1 = INCH_10 + ADC10DIV_3; // Temp Sensor ADC10CLK/4 选择内部温度传感器通道,4分频

46 ADC10CTL0 = SREF_1 + ADC10SHT_3 + REFON + ADC10ON ;

47 __delay_cycles(1000); // Wait for ADC Ref to settle

48 ADC10CTL0 |= ENC + ADC10SC;

49

50 _EINT();

51

52 sendStr("n======== LaunchPad 温度计=======n");

53

54 //__bis_SR_register(LPM0_bits + GIE); // Enter LPM0, interrupts enabled

55

56

57 while(1)

58 {

59 if(i>7)

60 {

61 tempAverage=0;

62 for(;i>0;i--)

63 tempAverage+=tempMeasured[i-1];

64 tempAverage >>= 3;

65 temp=(unsigned char)( ((tempAverage - 630) * 761) / 1024 );

66 sendStr("n 华氏温度:");

67 sendChar(temp%100/10+48);

68 sendChar(temp%10+48);

69 sendStr(" | 摄氏温度:");

70 temp=(temp-32)*5/9;

71 sendChar(temp%100/10+48);

72 sendChar(temp%10+48);

73 sendChar('n');

74

75 }

76 else

77 {

78 ADC10CTL0 |= ENC + ADC10SC; // Sampling and conversion start 抽样及转换

79 tempMeasured[i]=ADC10MEM;

80 i++;

81 }

82

83 __delay_cycles(100000);

84

85

86 }

87 }

88

89 // Echo back RXed character, confirm TX buffer is ready first

90 /*

91 #pragma vector=USCIAB0RX_VECTOR

92 __interrupt void USCI0RX_ISR(void)

93 {

94 while (!(IFG2&UCA0TXIFG)); // USCI_A0 TX buffer ready?

95 UCA0TXBUF = UCA0RXBUF; // TX -> RXed character

96 }

97

98 */


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭