EDA365电子工程师网

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

作者: 85486952    时间: 2016-6-29 10:49
标题: [代码] 单片机MSP430G2553 AD采样电压后经串口发送至PC
本程序是单片机MSP430G2553
3 q; j  Q# V2 m8 F! z+ u# w                 P1.2----------------------------UCA0TXD 串口发送端
- U* w" n1 m$ g8 K1 I. m           P1.1----------------------------UCA0RXD 串口接受端2 A5 L& F" A; f' g6 m! ?
           P1.0----------------------------红灯指示- y+ [% S! J: {' t
           P1.6----------------------------绿灯指示
$ a7 a6 k( T+ F' d           P1.5----------------------------模拟电压输入
5 R- M/ F7 W* V3 o9 N4 G5 F利用主辅时钟为1MHZ,串口波特率9600,) }6 w, B8 J; S, h, _
            波特率:1000000/9600=104& }2 }. c. D4 N4 n* r5 \# _
                    UCA0BR0 = 104;               // 1MHz 9600+ v0 |4 ^; \7 |6 e8 m9 y% {6 d
                    UCA0BR1 = 0;                 // 1MHz 9600
3 Z6 @5 b: b+ d& x
! X4 s: E, R; _: C. ?4 t8 t现象:# g+ ?( y4 z7 B- W0 H6 a$ t1 v0 K
   功能(1)看到 P1.5口输入不同的电压经AD采样后发送 1 c6 S5 M. ?. O9 ~1 y  j
   功能(2)打开电脑串口调试助手,发送区有数据待发送时,在接受区将看到相应的数据。& c1 v$ K6 _) _! c5 A
******************************************************************************/
3 B0 e* L' Q* E) R/ W6 e#include <msp430g2553.h>
9 `8 k- R3 {- H6 t) I3 d0 Yfloat adc_voltage;$ S9 Y7 ]. Y6 Q3 J3 o
unsigned int k;
' {1 A. T' m! Mvoid sys_clk_config(void)
0 M. S  s9 |; T3 Z0 ~2 f{2 Q0 m' c) r6 @/ @; z" {* R
   //ACLK = ; MCLK = SMCLK = DCOCLK = 1.1MHZ( g  P, q4 T, k9 c
   DCOCTL = 0;7 J8 U' ~% k& p) P
   BCSCTL1 = CALBC1_1MHZ;& Z  T$ t* H4 C  A) f) k  r1 N
   DCOCTL = CALDCO_1MHZ;1 a9 Y- H9 A0 o$ {1 O/ Z6 w! k
}
: ?5 o+ o6 V' \' Cvoid uart_gpio_init(void)
/ e7 o9 J) \& W* g# p% s  m/ n{( x( J, I  V% i5 x" z3 F2 g' H
   //P1SEL |= BIT1 + BIT2;. ^6 X" t, K& b# I/ m" b+ h
   //P1SEL2  |= BIT1 + BIT2;8 _' p1 ]- R$ G5 N: Z
   //P1DIR |= BIT2;
; m2 K5 y) J, T7 R* b8 U+ v- C* x  P1DIR = 0xFF;                             // All P1.x outputs
: @5 w* n$ j3 m, ~( z( V7 M$ O7 |  P1OUT = 0;                                // All P1.x reset+ e5 E+ O  W1 B" E' s
  P1SEL |= BIT1 + BIT2 + BIT4;              // P1.1 = RXD, P1.2=TXD2 I+ i5 Q1 z. l: s# Z- q
  P1SEL2 |= BIT1 + BIT2;                     // P1.4 = SMCLK, others GPIO
3 t3 r. p* z; Q. w  P2DIR = 0xFF;                             // All P2.x outputs  b+ K! T( f) R6 V" S
}
- m0 C9 p- E* F# yvoid led_gpio_init(void)
) x: F- E. b3 Z! _; j{
6 R( H. E/ i4 V2 [3 \: C}" O( p2 J2 Q- W8 B
void ad_gpio_init(void)6 D7 N' |- y' {/ m7 f& y
{: K2 h+ [% x# H9 A3 s/ `& U, G
}; b/ p! w6 ^5 _' k+ F
void uart_config(void), O; d& q8 F# E
{/ X1 }2 ^" T1 p" p
UCA0CTL1 |= UCSSEL_2;7 z( i' c! ]# D5 t5 B
  ' x3 x- ?8 X& @! B2 A: {6 ~
  UCA0BR0 = 104;                            // 1MHz 9600* [8 x  [! r( h6 R1 |/ q, M
  UCA0BR1 = 0;                              // 1MHz 9600+ i' R( V8 ]6 h" x; X
   UCA0MCTL = UCBRS2 + UCBRS0;  a% ]) _2 W: w" o
   UCA0CTL1 &= ~UCSWRST;
: n! c; h, E8 g" ~   IE2 |= UCA0RXIE;7 B, c# H; i( {% t3 ?+ x3 H) i3 L
         
% h* ]9 |" l0 |0 F* B}4 m; V. T# n1 |9 b( \
void ad_config(void)0 z4 V1 T: }* R& \  u
{! P- {# b- x5 M- ?* Y) h
   ADC10CTL0 = ADC10SHT_2 + MSC + ADC10ON + ADC10IE;6 V2 K% |1 l/ |$ f4 H" W9 w

3 K' Q  z; x8 a4 G  ADC10CTL1 = INCH_5 + CONSEQ_2 ;
' D! T; D; Q; O, O   ADC10AE0 |= 0x10;
& s  E$ Y" M/ v) S; Z
% @% r6 K" t, g# _  p  w  ADC10CTL0 |= ENC + ADC10SC;
6 v- {! ^; k& [9 g3 G
( r- m; \- w2 Y4 D/ H7 C$ G# s# o}
# J2 d* T) F4 ^" Avoid main()% ~3 U; ?  |$ ^& E4 A& j! P$ M' J
{
$ k) v) C+ t$ u; q& W) _+ ~   WDTCTL = WDTPW + WDTHOLD;/ E; o& g/ [% C3 t& z; Y
& m9 C) {7 t, _: v
  //sys_clk_config();
; S2 Y' E& w* |9 W# K- Y9 D; w4 }- p( c* v
  uart_gpio_init();
. N$ x' Z% R  a) i4 A/ |
+ b& l1 z: z3 I% [  led_gpio_init();6 S. X  s, K( p% s

9 Q7 b( t  M, r$ T  U! p  ad_gpio_init();$ u. P+ P" [; P' b

7 u+ G  t: C" \3 e( J  Y  uart_config();
' y% c. M) Q5 }  f* p
) f% @0 z/ ]/ y. U  ad_config();% p" N5 N* e) a
   __bis_SR_register(GIE);
+ a# t9 p# e7 ^  r1 j; X/ D1 y   while(1);# z$ V5 E- @& `0 j! f6 h# c7 _

4 v6 w  E; |  w3 K% T; s5 O+ q
  ~" q) Y  S3 |: q& [}
. ^: |; }+ R/ c0 T8 `#pragma vector = USCIAB0RX_VECTOR- O2 S7 t! W" Q+ F8 U8 o( ~, o
__interrupt void USCI0RX_ISR(void), d9 D5 h! o5 U- a
{
3 Y* R! N: F$ q" F" b/ Z   while(!(IFG2 & UCA0TXIFG));! ]# t; d2 [! Q- C/ d8 k
// UCA0TXBUF =0x33 ;// UCA0RXBUF;/ o5 B2 A- S; J. @
}
. h, G: G( @" D$ S4 z7 K, E#pragma vector  = ADC10_VECTOR' E! X( g# ^3 @8 L4 W, Z8 Y
__interrupt void ADC10_A0_ISR(void): s3 _! E9 s! ~6 _2 e; E! U. z" [  P
{
; ?" X$ u- l6 l; ?+ U/ \" n
+ U& Y7 {8 Z" r, {6 V2 x! D  while(!(IFG2 & UCA0TXIFG));
5 K2 j. b% D1 b; c   UCA0TXBUF = ((ADC10MEM*33)/1023);
% Q6 @. F4 F; m4 a   k = 10000;
" @$ d) p0 A  i: T6 L   while(k--);7 r! P7 _( T# V0 j

% i+ ^9 @* m6 D}
作者: zhoumi    时间: 2016-6-29 15:46
学习中,谢谢分享
$ u, I2 N: O" J
作者: wu68aq    时间: 2016-6-30 11:14
楼主辛苦了!7 t) t6 I) d  D* p/ `7 a





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