|
EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本程序是单片机MSP430G2553 ! x/ e8 Z& g( u: j) i
P1.2----------------------------UCA0TXD 串口发送端1 ?) ?5 ^& r2 k
P1.1----------------------------UCA0RXD 串口接受端, f& ^! C9 m" i, j0 O* [+ O. J3 o# o
P1.0----------------------------红灯指示0 [8 e7 m( D% o& L R4 v0 `
P1.6----------------------------绿灯指示2 b2 p2 Y4 j! W) p
P1.5----------------------------模拟电压输入
6 O. k7 O" A5 k# r; f1 H' Z4 P利用主辅时钟为1MHZ,串口波特率9600,
& \; ^0 q7 p8 T+ v3 N! I. i 波特率:1000000/9600=104- Q1 u7 t6 F& M& ?
UCA0BR0 = 104; // 1MHz 9600" F8 S" s6 D( y, |
UCA0BR1 = 0; // 1MHz 9600
' p. Z- H( r+ Z1 H U0 z
4 I, ?$ F( t9 h! C现象:
2 p) F4 m# y" X5 B% R) W 功能(1)看到 P1.5口输入不同的电压经AD采样后发送
. n$ T& p" N! w 功能(2)打开电脑串口调试助手,发送区有数据待发送时,在接受区将看到相应的数据。
, J k: t8 `) C! o0 @ R5 m& q* Y******************************************************************************/7 H9 [: b$ U3 p* ]/ U1 A! t
#include <msp430g2553.h>
4 `3 ]5 J! ^& F, {8 K! [ j. tfloat adc_voltage;2 f( E: ], F$ G
unsigned int k;1 d2 {3 X! g% g! X Q" d3 Y- b
void sys_clk_config(void)
7 v/ g# z/ }# C9 \{
& G4 w* J# `5 J" [$ S$ { //ACLK = ; MCLK = SMCLK = DCOCLK = 1.1MHZ
8 ]# X) |. h5 `7 O* |& _0 { DCOCTL = 0;
" @1 D) F+ [5 x# a: q! Q% g( q' ] BCSCTL1 = CALBC1_1MHZ;
$ M: M/ u6 W7 | DCOCTL = CALDCO_1MHZ;
l: x+ A8 n) d; L \6 r( ?7 |}8 O3 }+ D' K: a4 k; O% H; W1 B' Q8 I
void uart_gpio_init(void). Y$ @. ^9 M3 y1 }
{" Z0 p6 G* `* V6 r- W. ?
//P1SEL |= BIT1 + BIT2;% I, _- O) v! Y, w1 b: a: X& g
//P1SEL2 |= BIT1 + BIT2;' `" o% \; S, _1 b# {2 ?. c
//P1DIR |= BIT2;% v4 E+ H s# o+ n- ~, Q0 o0 K+ X% M
P1DIR = 0xFF; // All P1.x outputs' G% z" C6 `3 D
P1OUT = 0; // All P1.x reset
2 N8 {8 _$ n) V/ f% V2 ? P1SEL |= BIT1 + BIT2 + BIT4; // P1.1 = RXD, P1.2=TXD
: r: f" P+ a. U |& M P1SEL2 |= BIT1 + BIT2; // P1.4 = SMCLK, others GPIO
$ _2 ~# H* q! |4 b/ W" r" _1 Q$ j P2DIR = 0xFF; // All P2.x outputs( S1 _' ~. n4 ~' z* w$ q
}" @" M$ E4 i+ J) l$ ~
void led_gpio_init(void)! o& [! V) j" O$ X' C) A
{3 g% a; P7 G$ m7 w T7 g
}' P5 l3 w' i% R( I' Y7 n- r2 e
void ad_gpio_init(void)
$ Y8 w3 b3 a. f" @" ~{ ]9 [; l* P% h6 Q+ T; i+ `
}
% \5 ^. B1 A$ N3 P& z$ a kvoid uart_config(void)" w1 B+ D, `& e
{7 }) w7 f- _' z8 I
UCA0CTL1 |= UCSSEL_2;, i% E7 [6 C/ n ]
5 N1 v5 E( C6 l1 P, ]
UCA0BR0 = 104; // 1MHz 9600
9 ]* X0 P. Y0 A6 d: M1 v: L6 B# D UCA0BR1 = 0; // 1MHz 9600
1 C3 D. X; r6 l1 q& U UCA0MCTL = UCBRS2 + UCBRS0;
0 G. p" K: r3 x& E, P$ M UCA0CTL1 &= ~UCSWRST;
' ?! o. X% O5 U" U! C4 W% ] IE2 |= UCA0RXIE;
/ t$ W$ X9 d4 j. ^ ( O# u9 R7 e( P6 @. J
}1 k8 n- d8 m* y' B0 K9 _0 h
void ad_config(void)
: b4 q- K8 B2 D/ h' O' I* {{
1 A7 n" T. {) x& [6 p ADC10CTL0 = ADC10SHT_2 + MSC + ADC10ON + ADC10IE;4 J, e, o4 F V! e; u
$ r8 V. O. K% P) Y
ADC10CTL1 = INCH_5 + CONSEQ_2 ;6 t& |4 s- \9 u8 i8 J2 B. Y
ADC10AE0 |= 0x10;
1 m5 g! ?% U1 N( |
: W8 x) V3 i" V# p7 v$ J ADC10CTL0 |= ENC + ADC10SC;
1 G1 t6 B: |7 l# X% r- V# }" k- w: w/ a6 H% ?7 m" @8 I% `5 L
}+ H& f/ E; N% K& w1 k# k
void main()% \: y. c" w: i2 a7 X. y$ ]1 ]' k8 o
{7 F! g- m* f: c! g% [
WDTCTL = WDTPW + WDTHOLD;
9 Y. g& D9 C2 Z* b( _
3 [/ v4 ]* t1 k/ T( n) \. U //sys_clk_config();! E9 O. Y& j3 |$ B, n5 g" l8 A
7 R! t/ W, y2 N
uart_gpio_init();
: J6 S2 S* z2 Y. n' m" @3 s4 { H5 t5 m4 c
led_gpio_init();# G" [* O# f- F/ D! Z" v* x5 f
1 p6 X# j/ r9 u0 X# | ad_gpio_init();3 F5 W1 p; h; q" M3 O% g" a, V
# A+ O- r* W0 I4 R* B
uart_config();
, K7 z' M( ^' B% y( a1 k% q+ b8 v. ?$ W' E2 Q; s$ l7 W
ad_config();
8 \9 h& y9 [! C8 P6 M! g/ T __bis_SR_register(GIE);
8 ?* M3 x) {, d9 a; o while(1);! N$ N( E8 K: o7 y; J* `3 J1 k
- J) ~- |* p2 G. M' C( B" L+ f
U& @6 ^: H8 B. z3 v3 O! n, h}9 }8 O, {; p4 f
#pragma vector = USCIAB0RX_VECTOR0 P. N/ @' }5 X2 S9 g; T) x
__interrupt void USCI0RX_ISR(void)
' d1 ]" a" p. x' N/ P! y; a{
7 Z) z4 B+ K' O while(!(IFG2 & UCA0TXIFG));* ~# v0 P/ P0 h& m# J
// UCA0TXBUF =0x33 ;// UCA0RXBUF;2 B5 n l/ I2 p9 U7 J
}
' a. n+ x7 Q# Q7 L0 ]( X2 r9 v#pragma vector = ADC10_VECTOR, }. s8 T# c& w2 `
__interrupt void ADC10_A0_ISR(void)* v. I8 I' Z: m, d, W( q) h, b" H
{
# D5 F" ?/ \5 y+ n4 b" T7 x$ @8 q* n
while(!(IFG2 & UCA0TXIFG));
1 F$ t. Q. |3 ^$ h+ ? UCA0TXBUF = ((ADC10MEM*33)/1023);
s( U. [# T6 D* L# P& r k = 10000;
+ e! G# j$ l8 N+ k" }( d) t# l while(k--);) a1 S6 o# w- O. t. i3 a/ A9 Y
- \* i; w, A* p# T& w
} |
|