| 
 | 
	
    
 
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册  
 
x
 
本程序是单片机MSP430G2553  
, d% ~% Y& x+ Y/ ~; {% C1 x                 P1.2----------------------------UCA0TXD 串口发送端 
& ?. ^3 m! A3 t/ h2 \, K3 a' L           P1.1----------------------------UCA0RXD 串口接受端 
7 l3 d- S. Z0 W$ d           P1.0----------------------------红灯指示/ u, E" ?8 \# p% w* g. k 
           P1.6----------------------------绿灯指示' N/ C2 I* A5 F 
           P1.5----------------------------模拟电压输入2 S, N9 w: n: W# B: q 
利用主辅时钟为1MHZ,串口波特率9600,' u9 H* K2 u8 N. |9 p& x 
            波特率:1000000/9600=104 
& P! O& F* k5 _& r3 n                    UCA0BR0 = 104;               // 1MHz 9600- \% F) s7 p3 q9 F$ `" O3 }' ]9 l7 B. I 
                    UCA0BR1 = 0;                 // 1MHz 9600 
! q4 B4 c! h  T) |: I. c% f) B# Z 
& N/ L. h8 F) _' r% K+ i现象:1 F" {& Q# N! e  y1 H/ s 
   功能(1)看到 P1.5口输入不同的电压经AD采样后发送  
8 w9 B+ y) c. }   功能(2)打开电脑串口调试助手,发送区有数据待发送时,在接受区将看到相应的数据。% f; U+ g9 ~5 V 
******************************************************************************/ 
$ i8 a4 U; g& o9 d+ N#include <msp430g2553.h>4 g/ Q# Y1 }* ? 
float adc_voltage; 
% q1 ~# }! j- v( _8 G( C0 runsigned int k; 
1 L9 A: a, w0 i! s! Xvoid sys_clk_config(void) 
3 t' s  K$ ?, f# W4 Y2 d{0 I$ A/ `& }8 Y( t! a 
   //ACLK = ; MCLK = SMCLK = DCOCLK = 1.1MHZ 
4 ]6 F3 _/ W, K6 R5 I   DCOCTL = 0; 
) ~# P  y& Y- M- Q4 t2 x   BCSCTL1 = CALBC1_1MHZ;. }& T7 Y% M* P- n# E 
   DCOCTL = CALDCO_1MHZ; 
" m( s$ M* d# {. c}: e& U' P9 u% B) ^ 
void uart_gpio_init(void)6 i% |9 X0 y4 D0 F2 n 
{ 
2 |$ }% I% w  x1 R2 o8 s   //P1SEL |= BIT1 + BIT2; 
7 U7 p! I6 M( R6 ~& n   //P1SEL2  |= BIT1 + BIT2;. A% n' b7 s# H$ S 
   //P1DIR |= BIT2;5 x* s" ~1 r" f2 ? 
  P1DIR = 0xFF;                             // All P1.x outputs 
9 x3 w3 t+ l6 F, H  P1OUT = 0;                                // All P1.x reset 
1 D9 U+ ^. j+ q: ?! A4 I  P1SEL |= BIT1 + BIT2 + BIT4;              // P1.1 = RXD, P1.2=TXD" D/ S( q5 k0 ?* e  D, B 
  P1SEL2 |= BIT1 + BIT2;                     // P1.4 = SMCLK, others GPIO 
. R* u) ]5 h: W. J: I# F  P2DIR = 0xFF;                             // All P2.x outputs 
. L( l4 `2 D" r0 }}% z: N2 m9 p5 }) f+ j! @$ }& j# q 
void led_gpio_init(void)4 E) @% R( q8 s3 k2 b 
{ 
$ ]2 n, M7 d1 K8 g! ]$ v7 d}8 q- |8 ]' F* b' A: w) Y 
void ad_gpio_init(void) 
7 i0 }& Y3 X9 R/ h/ ^+ N/ z- r{9 h6 w% f: s! _ 
} 
( W" e4 P) a: x( L, k9 F. fvoid uart_config(void) 
  g+ V6 X- n2 c, c{ 
  L( `. }) v0 E/ q" d/ l2 T5 TUCA0CTL1 |= UCSSEL_2; 
3 i+ ^0 S( X) \3 I   
" B7 c5 i! f1 v& f5 ]2 ]  UCA0BR0 = 104;                            // 1MHz 9600- K3 P/ X4 q0 I$ X 
  UCA0BR1 = 0;                              // 1MHz 9600 
/ V- V! K) V* q  ~: r   UCA0MCTL = UCBRS2 + UCBRS0; 
  J- M0 @( O% S% Q: A1 c   UCA0CTL1 &= ~UCSWRST;( o4 \+ S# \- m$ e4 f$ d 
   IE2 |= UCA0RXIE;* p8 d" @7 L6 Z9 ^2 W# W0 ?7 M 
          
/ \9 P/ b. ?6 L( s/ j} 
9 x+ k5 K! \8 ?* R  j8 ^# ?) zvoid ad_config(void)7 S, ]0 Q- R) |/ o8 _1 S 
{ 
( k( r- h9 }4 O, o) j0 W   ADC10CTL0 = ADC10SHT_2 + MSC + ADC10ON + ADC10IE; 
; c3 g3 R7 p7 ^% C. {- P% E; W7 x8 f 
5 J& z1 I" w4 |: V5 V  ADC10CTL1 = INCH_5 + CONSEQ_2 ;5 U0 E6 X' @+ v# v) a0 D$ h% v 
   ADC10AE0 |= 0x10; 
+ r& X7 k8 x3 y. v; }" P# }2 |: f- i6 W' `7 a* t. U; H6 H 
  ADC10CTL0 |= ENC + ADC10SC; 
9 L$ M+ z, w/ S/ P, k. Y; k# ~: ?9 H0 o" C# x  I. v 
} 
' T8 F5 ?8 }% E) T& h$ O5 {void main()8 e$ W- J$ |; t5 [+ J) s8 ? 
{ 
% |; T* g9 F5 h- Q, F8 ?   WDTCTL = WDTPW + WDTHOLD;9 K2 S+ v* V4 ^ 
2 ]( S  U0 A5 @ 
  //sys_clk_config(); 
0 t8 D+ ^( ~& L/ d2 v9 h4 V6 ?" J' f 
  uart_gpio_init(); 
3 P$ j+ e: n, h1 _3 l& C! U 
" x3 V& n) F# y, |) ^( F  led_gpio_init();" H: ]4 t# @4 ? 
 
) [0 u" n9 y# B/ S- C4 ?# }0 E( i; ^  ad_gpio_init();5 m9 P7 a# C* o- l  |# T 
 
  a4 S, o8 Z$ f! h  uart_config(); 
3 a/ v2 ~* t- V; r4 ]  J) p  R, @  O- g3 ?4 [( L' |! {7 Z. p 
  ad_config(); 
+ m' ]4 f7 L7 _0 [) S% M   __bis_SR_register(GIE); 
: [; G) O. L; A   while(1);; \7 K5 [+ w# ` 
2 v' y6 x5 o+ Q5 B2 }# y 
% q4 d7 r: V6 ]1 Y 
} 
$ S, i: I( @+ v0 C+ E5 U1 g#pragma vector = USCIAB0RX_VECTOR3 r( Y" y7 B: r# G/ l( x. } 
__interrupt void USCI0RX_ISR(void)8 F- _- I" R0 |- J+ ? 
{* n' f9 K: X2 j) W* b 
   while(!(IFG2 & UCA0TXIFG)); 
! S7 V" F1 Z1 [* K8 n// UCA0TXBUF =0x33 ;// UCA0RXBUF; 
, _) ]! V5 ]& p- |0 T} 
4 s; `1 ^4 C1 `. B#pragma vector  = ADC10_VECTOR; D* u4 x" ~/ M: }. ~- Q( @- q4 S1 m 
__interrupt void ADC10_A0_ISR(void) 
" s$ U$ h7 _) Q1 ^/ m" e{9 V# y" E6 R, z4 u. c) O 
 
8 ~1 X8 F6 y& I1 C8 t$ C, b  while(!(IFG2 & UCA0TXIFG)); 
0 S" q; D: r" l: p. F7 ?   UCA0TXBUF = ((ADC10MEM*33)/1023);% a4 |7 }1 {' T# l 
   k = 10000; 
+ U3 ]0 F# B$ i% M+ j   while(k--); 
, A+ O' ^- e7 {3 g! G 
% X/ T# i* U- u: N; z6 H3 {6 n} |   
 
 
 
 |