EDA365电子工程师网

标题: [代码] 单片机MSP430G2553 AD采样电压后经串口发送至PC [打印本页]

作者: 85486952    时间: 2016-6-29 10:49
标题: [代码] 单片机MSP430G2553 AD采样电压后经串口发送至PC
本程序是单片机MSP430G2553
" }. }  d/ m& I6 }3 Z6 o                 P1.2----------------------------UCA0TXD 串口发送端
. v: n/ e6 [  d. Y$ m           P1.1----------------------------UCA0RXD 串口接受端
  `% K  f% y* \/ g  u( m0 F9 W           P1.0----------------------------红灯指示
" t% F, Z! n0 E  m" i* Q6 L, R           P1.6----------------------------绿灯指示
0 r0 O0 O' M& k           P1.5----------------------------模拟电压输入9 ]+ J) P7 [7 J0 v# O) n! l: i- c  b
利用主辅时钟为1MHZ,串口波特率9600,
( k8 y& B( J( ]9 `8 s! h% ~            波特率:1000000/9600=104% ?+ Q! @, T; B6 c5 D
                    UCA0BR0 = 104;               // 1MHz 9600! {  h8 y$ C5 t0 _9 @$ D
                    UCA0BR1 = 0;                 // 1MHz 9600
2 J- P0 E5 r0 z( y2 X# M
/ F; `0 I8 U+ [  F6 q$ r; w1 W) _现象:
8 Q7 t/ q' ^' e! w: I) N   功能(1)看到 P1.5口输入不同的电压经AD采样后发送   z2 B- q% L1 d6 G
   功能(2)打开电脑串口调试助手,发送区有数据待发送时,在接受区将看到相应的数据。, e: j/ t2 @+ U8 I3 x4 d
******************************************************************************/
7 c- {4 I6 W3 a2 k+ m) H#include <msp430g2553.h>
4 W7 R) q  O$ w" I# ?float adc_voltage;
1 G+ ^8 w! z! Z! @unsigned int k;. ^0 a  z% D. B/ d! ]+ Y
void sys_clk_config(void)2 ]  |% P1 D/ T8 c: s
{
3 ]4 W2 Y+ ~" ], p8 W5 E   //ACLK = ; MCLK = SMCLK = DCOCLK = 1.1MHZ
# D3 ?1 P8 n# ^' p, [# I9 p   DCOCTL = 0;
8 s  K8 c6 A$ ^8 Q) X* W+ `   BCSCTL1 = CALBC1_1MHZ;
* \6 v3 v6 V: M7 ?* S  z) l   DCOCTL = CALDCO_1MHZ;  e( n, x* ]: l$ b
}
& L: f& c$ j8 u/ V0 d1 G; Svoid uart_gpio_init(void)3 G# I% M2 H" c$ D5 {
{
3 p9 V' \1 t' j  {- d5 J   //P1SEL |= BIT1 + BIT2;
! L% ~. g: L) V5 p  f2 {0 R   //P1SEL2  |= BIT1 + BIT2;0 l  H) y' w- }2 O! `
   //P1DIR |= BIT2;/ ], d' [; |; w, o* @8 }3 S" ]
  P1DIR = 0xFF;                             // All P1.x outputs
9 x0 g; k! \8 F: y  P1OUT = 0;                                // All P1.x reset
0 n/ @2 S7 ~  n/ U+ S  P1SEL |= BIT1 + BIT2 + BIT4;              // P1.1 = RXD, P1.2=TXD$ B8 n+ a4 H* C9 z5 z# L
  P1SEL2 |= BIT1 + BIT2;                     // P1.4 = SMCLK, others GPIO
2 j9 p- Q0 u0 P. f: m  P2DIR = 0xFF;                             // All P2.x outputs
4 t, w# g6 c. l: Z}
' [! D* }, N1 E) |+ E) i, yvoid led_gpio_init(void), d  {6 s2 w0 [2 Y: ^9 ^! b0 y1 Y
{# w5 q+ g( X8 ?0 }+ [6 ~" {1 p
}
  T4 v% E: [; ~. W: M( yvoid ad_gpio_init(void)% B& V2 A3 c2 n
{
4 y$ [' P3 U& k0 A6 E3 F: l  M}2 s* Y5 j" A) M0 z( k
void uart_config(void)
. H3 r5 ?- o4 G1 v: r% y3 x{
$ ^" \" u5 d2 a7 t2 A4 t& bUCA0CTL1 |= UCSSEL_2;" c& _0 O- k/ j/ @8 S) o" V, L
  % _% Y  F* ?/ \% X4 \  x
  UCA0BR0 = 104;                            // 1MHz 96006 p. g) I: Q( @+ R) }6 [4 Q
  UCA0BR1 = 0;                              // 1MHz 9600. Z) w2 P+ o1 {( U, |* O
   UCA0MCTL = UCBRS2 + UCBRS0;
/ p. ?/ c; H$ y   UCA0CTL1 &= ~UCSWRST;+ n' r% K2 r+ l0 Z" [- x: ?" k
   IE2 |= UCA0RXIE;
! ^" w, H4 e) p0 }: Q         # p8 T1 P2 w& d9 N! a, ^2 _) R, c
}
" L: h0 [* S) i& g/ p1 B% I9 zvoid ad_config(void): K& q4 s9 n7 w; }, I
{
1 ~+ f& ^" B; ~2 I" S8 z- `   ADC10CTL0 = ADC10SHT_2 + MSC + ADC10ON + ADC10IE;2 z+ r8 u6 J4 C* l& j# E: K# T- b

6 e" C  {3 O+ M& }1 j' L6 G  ADC10CTL1 = INCH_5 + CONSEQ_2 ;/ t% g4 o+ D. A
   ADC10AE0 |= 0x10;
6 M" d# T  C$ P8 U, u$ }7 d
* r3 w& x  ?. K  ADC10CTL0 |= ENC + ADC10SC;% k! r- c) W) D! x5 k9 U% k

9 K- M% i& q- {% ]3 h" ^}
9 S5 Y! `' `3 M1 p; Svoid main()
/ n  `& J* F# \/ w9 ]{
- |+ p; z( c& V5 D1 K2 X( z   WDTCTL = WDTPW + WDTHOLD;
8 C+ o: Q7 Z0 }, y) ]8 Y. u
2 J& o& H+ p9 n; v  //sys_clk_config();
2 d, q% I2 }  f( S
% n, L: R. ?/ y0 K/ a- n% i  uart_gpio_init();
( u& I1 H! T9 r6 y5 O- \1 x- [5 r: r+ \+ F6 n( ]3 T2 d7 L
  led_gpio_init();- {, j, `# B3 b6 l  }

0 j" c: v  H5 Z, N9 y7 X3 a  ad_gpio_init();
+ V" E6 }8 n+ H7 ]% K& g/ A) K: U. W! e. G" \% D
  uart_config();0 A% Q- g/ n" j5 @( J, b* `* x9 ^

4 s( d. X% I5 Y1 W7 X% ]  ad_config();( G$ y0 c2 U0 c( u4 J' N2 Y. s# t
   __bis_SR_register(GIE);
0 k7 U$ D! K- C1 ]   while(1);0 M) T0 m+ E* P

" L: `3 X6 v2 P8 f5 _& ^# S; c6 B& U
}
7 \7 q2 p9 Q+ t' Q3 K/ }+ c#pragma vector = USCIAB0RX_VECTOR
; d% u1 O9 Q# ?- _: ?__interrupt void USCI0RX_ISR(void)5 `# f/ o* N; W" X+ X2 ^) T3 s' E2 E
{$ X" m/ t6 b0 E, B+ j
   while(!(IFG2 & UCA0TXIFG));: I5 u- N" B( ^
// UCA0TXBUF =0x33 ;// UCA0RXBUF;
$ H- k- f- t* X4 k. M) W}0 O6 M* K5 j- ~7 C+ Z# m" M: X
#pragma vector  = ADC10_VECTOR' P6 T+ S) u/ n7 _; T8 E7 g
__interrupt void ADC10_A0_ISR(void)' P' s: P  E7 w3 o. x; d
{
+ M0 M) e! n0 l
: o5 c6 G* ^3 Z2 q+ L: Q  while(!(IFG2 & UCA0TXIFG));
( }" m- o; z1 A9 o- q( E, B6 F   UCA0TXBUF = ((ADC10MEM*33)/1023);& I' n- f( P0 B: c! F5 v
   k = 10000;/ ^: w( h+ ^% t7 z/ n
   while(k--);
2 i- ]$ D2 i1 R7 L. y% ]: A0 M. ?6 F' k# y9 G. T8 y* R
}
作者: zhoumi    时间: 2016-6-29 15:46
学习中,谢谢分享
( k" r/ M8 l6 R0 E4 j4 m
作者: wu68aq    时间: 2016-6-30 11:14
楼主辛苦了!
8 z/ i8 ]9 c7 H. T1 O/ k: H! _- i




欢迎光临 EDA365电子工程师网 (http://bbs.elecnest.cn/) Powered by Discuz! X3.2