|
EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本程序是单片机MSP430G2553
. W2 d. a: W0 p% o4 z5 K P1.2----------------------------UCA0TXD 串口发送端
- {0 H4 D5 h3 p. B- a7 f P1.1----------------------------UCA0RXD 串口接受端
6 N" `+ F. r( g6 q7 r# b P1.0----------------------------红灯指示
% Q0 B, g- ], o P1.6----------------------------绿灯指示
3 I) X5 J6 v% j Y' M: c P1.5----------------------------模拟电压输入; P$ ]; d+ ^( a3 V, F
利用主辅时钟为1MHZ,串口波特率9600,% p* @" V& `0 j; {
波特率:1000000/9600=104
7 P; h+ Y' g+ S3 W$ C$ ~: a UCA0BR0 = 104; // 1MHz 9600
2 y3 C3 `, S/ r. ^ UCA0BR1 = 0; // 1MHz 9600% K9 ^0 B- r2 o( ~1 q8 V* G; }
! i$ R7 V- I6 i5 h7 m现象:
2 |( `) v) L s Q3 h 功能(1)看到 P1.5口输入不同的电压经AD采样后发送 : @: D8 q8 L( Q8 r
功能(2)打开电脑串口调试助手,发送区有数据待发送时,在接受区将看到相应的数据。
4 }! Y0 O+ \0 [8 {- a" q6 ?******************************************************************************/$ [0 }" d7 q8 H4 z1 z9 j8 t
#include <msp430g2553.h>/ f* B8 z& ]$ U5 ?! _
float adc_voltage;+ z) I) v& J) k5 x/ ^
unsigned int k;
( w& b6 X! @- T. G9 u" J" j! nvoid sys_clk_config(void)
$ j+ p, f( Z* [3 g; t/ M( c7 T' G( U0 d{
" L, B4 {- i2 G: { //ACLK = ; MCLK = SMCLK = DCOCLK = 1.1MHZ
/ C+ H& x( I! u5 G$ x6 m9 B: }5 Q DCOCTL = 0;. b( g f( R7 _0 m
BCSCTL1 = CALBC1_1MHZ;
6 O' s; ~& ^! Z- L! O DCOCTL = CALDCO_1MHZ;
3 z' K4 `( E+ r% b}# E( ?7 j' c3 E t& Z) @
void uart_gpio_init(void)
' l! g0 }# T# s z{6 i6 w4 W, D$ ]
//P1SEL |= BIT1 + BIT2;/ n$ b* J( ~3 m$ G6 a6 h
//P1SEL2 |= BIT1 + BIT2;
8 ?% M* ^0 T* O1 |8 T //P1DIR |= BIT2;
& d, n9 P% `2 i# L/ |8 k* F% r' X P1DIR = 0xFF; // All P1.x outputs
) C/ R7 {' e' @+ T% w7 W P1OUT = 0; // All P1.x reset. h1 R1 C( N) b8 C' a! N& T; @
P1SEL |= BIT1 + BIT2 + BIT4; // P1.1 = RXD, P1.2=TXD9 G9 f( U( [# |7 W T
P1SEL2 |= BIT1 + BIT2; // P1.4 = SMCLK, others GPIO
& I n7 `) q& Q }1 m W% | P2DIR = 0xFF; // All P2.x outputs+ \- ]5 n& L* u. Y- X+ M4 t) W- L; [
}
9 f. K( D2 [& S0 ~; Avoid led_gpio_init(void)
! Q( G4 R5 f7 f1 U' ^4 N% u{) O* ~; j) X1 f1 `; ~
}
, N& H7 C1 q8 Z8 d+ J4 |% qvoid ad_gpio_init(void)2 q- x2 x- g" h5 q
{
0 W( k" ?4 z1 I8 [" [3 D}$ B: @: m/ |1 @' O3 C. U+ j
void uart_config(void)
9 c1 y$ h5 U( _# o{! U/ @: l. C0 V9 U/ W) W4 o2 t
UCA0CTL1 |= UCSSEL_2;) n5 |% m3 \. M/ H- O0 d7 I: k
( |5 |- M' K0 Z/ K5 Q* o
UCA0BR0 = 104; // 1MHz 9600
& }7 w. }3 N( h3 R UCA0BR1 = 0; // 1MHz 9600- w) ^: Z2 X, c" m% l) \9 C ~
UCA0MCTL = UCBRS2 + UCBRS0;
; G, e( F/ m+ v2 ]: i UCA0CTL1 &= ~UCSWRST;; s& E, z2 \8 W# b4 W
IE2 |= UCA0RXIE;4 g* x& Z" H$ ~: f* T$ g
: i# B" i# \" k% x( ?5 n}1 y! s, d$ a# a2 o/ v3 y
void ad_config(void). @- ^8 v# d1 @. D( g1 g: X
{
C5 W o7 h3 K9 A0 d ADC10CTL0 = ADC10SHT_2 + MSC + ADC10ON + ADC10IE;2 A! T$ y. F) o8 N- q
: _% P! a- Q S1 l ADC10CTL1 = INCH_5 + CONSEQ_2 ; S" r0 L6 Y4 X- h4 k$ |( V& K
ADC10AE0 |= 0x10;
, I* [* @' q# U( `1 V! \8 w/ S
- W+ T8 U- m& R/ B9 X ADC10CTL0 |= ENC + ADC10SC;
# E9 k+ U1 E+ r7 Y+ S# j
/ }0 [0 L8 D: `$ M% e! ^}. z7 I6 K7 r1 V/ K [8 Q8 t
void main()3 t! ~: p# {. b# L
{
, Z I3 _3 e3 G, X& m7 w' L7 \+ T b WDTCTL = WDTPW + WDTHOLD;
+ o7 G% l- P4 {; [- O) A
+ t: O+ m5 N0 P; z //sys_clk_config();
& D# @0 a3 K4 P( S2 }' M1 \; K x) K7 K& G6 p
uart_gpio_init();
1 _! \1 K2 g- K) D" s0 Z, i7 I7 I0 V1 r. w0 E" _
led_gpio_init();: I3 x" h, P2 Z; C p3 g
' c; Z$ {! {/ I7 Z5 h# R% U. ?
ad_gpio_init();
' R7 c6 ?+ B$ U% f6 j( d- X3 N* {" x, I4 L: {
uart_config();/ w5 u6 i: r: o( V" G- q: x( m/ Z
: | ?( c3 {7 \+ s! U* ?1 A. V" o ad_config();
* }: @7 E$ T4 r7 T8 E8 Q' a0 S __bis_SR_register(GIE);& x: j$ E* q0 n0 C: j9 e
while(1);
& h( b) b# K# x9 N1 I. p6 p! V( _
1 M4 g! w' o3 l0 ~9 @$ G; `5 `4 V" r: Y+ v# j$ R ]
}8 @4 v9 |% Y. B/ @# {4 B
#pragma vector = USCIAB0RX_VECTOR
5 K& t' }" ~3 h) }; q__interrupt void USCI0RX_ISR(void)/ |4 ^, A v4 j. @8 M: z: [$ Y5 v
{) y0 p q! h! m* Y
while(!(IFG2 & UCA0TXIFG));9 c, e: F1 N: I/ | Z \$ A
// UCA0TXBUF =0x33 ;// UCA0RXBUF;
2 e$ ~' b& Y! m7 J1 ~, d) x}
, ^ q y' o3 S% c1 l. [6 Z#pragma vector = ADC10_VECTOR
- B$ A9 h5 n$ n* [) ~+ ]__interrupt void ADC10_A0_ISR(void)
: z1 p% X! v5 E* U{9 J* L: a. h! S) B
; }( }# M7 {( n2 ~9 J& ]0 J% R
while(!(IFG2 & UCA0TXIFG));( t x( _! `- f0 C: B( {2 j
UCA0TXBUF = ((ADC10MEM*33)/1023);+ B# ^ z# _' L- {
k = 10000;
) ~2 X2 n# l- W3 A$ p while(k--);
' A) c/ R# q. @7 {. D* W5 B# ?& ~4 U" _9 |, F; k
} |
|