|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本程序是单片机MSP430G2553
8 Y1 ?" ^8 \, [* h2 `. { P1.2----------------------------UCA0TXD 串口发送端6 A, v& g2 e- h
P1.1----------------------------UCA0RXD 串口接受端
3 Q) e E ^3 c- t' a( Q P1.0----------------------------红灯指示! R8 P# \$ v! S" U4 _6 ^
P1.6----------------------------绿灯指示& M2 a7 ^8 X/ O
P1.5----------------------------模拟电压输入
9 W* i Y5 l6 }( K' n% U利用主辅时钟为1MHZ,串口波特率9600,1 I4 G. W+ B5 b; `4 u) Q
波特率:1000000/9600=104
9 X# `1 {2 f! s1 [9 j UCA0BR0 = 104; // 1MHz 9600
6 s9 N* \5 s2 H( P# j# G UCA0BR1 = 0; // 1MHz 9600
3 ] J& o4 H' f4 F% a4 H e* d, R3 M+ `- d$ X2 t
现象:
) D) c7 x& y* \* a 功能(1)看到 P1.5口输入不同的电压经AD采样后发送 8 ]# Q2 u4 H& B* M; S* {! F
功能(2)打开电脑串口调试助手,发送区有数据待发送时,在接受区将看到相应的数据。6 P. p' Z% Z, a/ x) U' M. }
******************************************************************************/
' N' D' L" ?/ k9 y R0 `4 }, H#include <msp430g2553.h>0 |" L9 e/ }7 B0 S" ~9 |
float adc_voltage;3 t1 `1 \$ o" a" ?" n
unsigned int k;
% E) A/ V% [* J rvoid sys_clk_config(void)1 N! X6 q" m- ~ n# p" E# F
{
1 j4 _* c7 {! p- ?" e //ACLK = ; MCLK = SMCLK = DCOCLK = 1.1MHZ& m Q% Q+ f- k5 x6 S
DCOCTL = 0;# N: g$ P4 N2 i% D
BCSCTL1 = CALBC1_1MHZ;; T; Z1 |; q; ^* z! g( g8 O
DCOCTL = CALDCO_1MHZ;. q9 D- Y4 p( U1 e# z
}9 Q( `* |4 b0 B( I/ u
void uart_gpio_init(void)9 w' ?* g% M& y) _( H
{/ @ M- s( h0 S' [; f
//P1SEL |= BIT1 + BIT2;6 L7 @) x* J5 |( T* E# D, T
//P1SEL2 |= BIT1 + BIT2;" [9 X7 Z$ ^- m5 w. }+ T
//P1DIR |= BIT2;4 s: X. X* n F
P1DIR = 0xFF; // All P1.x outputs3 X; X% u& R$ J) F; m, ?$ R
P1OUT = 0; // All P1.x reset
9 ?' ~) j5 V, x7 b$ b P1SEL |= BIT1 + BIT2 + BIT4; // P1.1 = RXD, P1.2=TXD
2 i3 H$ b: ` W8 g P1SEL2 |= BIT1 + BIT2; // P1.4 = SMCLK, others GPIO
6 e; u# ^$ Q1 C8 L8 l( H+ _$ U1 s2 c P2DIR = 0xFF; // All P2.x outputs; U0 r1 g. q2 @6 D2 a# ?
}
9 _& A% o8 n+ M% f! Q5 L5 T Bvoid led_gpio_init(void)% z! i& r0 ~7 H5 o( H5 w( [
{
$ a& ~/ _3 V* \( j) a3 E}
* v: Z& ?( u {- L2 Y) svoid ad_gpio_init(void): `# W7 l& m# _, W
{
$ R! M# ]/ J5 v9 ^. n}
# X- z8 O5 `$ v5 e! Y: X& q) z$ nvoid uart_config(void)
( B, U5 ]* p' O r4 \{
* {& T$ V: t5 X; ?4 `: {# R: V/ M9 b; uUCA0CTL1 |= UCSSEL_2;
, u9 W7 J4 W% u* \) j% h: v/ m3 u) M 8 a9 u- S: l7 |3 P) @- P6 |
UCA0BR0 = 104; // 1MHz 9600
" T! A2 f! J3 r/ B6 J+ W UCA0BR1 = 0; // 1MHz 9600
7 Z4 [, @0 ]5 D# e- j UCA0MCTL = UCBRS2 + UCBRS0;, {+ z0 [& n# }, E& r
UCA0CTL1 &= ~UCSWRST;1 [/ ?* G) B2 \+ s3 E+ m. W; j
IE2 |= UCA0RXIE;
2 W/ M5 O- {) ~( x: v8 N # r) n4 L8 G W
}
3 O' g, p- I# F' avoid ad_config(void)
4 G7 e9 N. x3 ^{
9 i% h. c( {$ z7 B3 T4 L ADC10CTL0 = ADC10SHT_2 + MSC + ADC10ON + ADC10IE;
. g) y G2 L7 a" U: x7 `: H8 X9 p1 k! Z8 P2 i$ ^
ADC10CTL1 = INCH_5 + CONSEQ_2 ;
* q& a( g* r; ~$ G2 n ADC10AE0 |= 0x10;* n0 ?# d4 W8 S# x) y; ^: M3 E; p
" ~) ~" s8 Y- P$ E ADC10CTL0 |= ENC + ADC10SC;/ _- h. Q& C8 \. \& Q: @7 _ ?3 {
( T$ ~# v Z! {1 y% q}2 O/ |( d* D. J9 Z& ^! i
void main()6 x( T+ B3 w' h+ T# \" e8 b6 K- y4 N3 P
{
3 }* b+ E$ E9 O& r* m WDTCTL = WDTPW + WDTHOLD;
6 Y+ Y. ]) g6 j0 K1 P. C
$ B+ A* A$ J# a0 |; K3 @( U //sys_clk_config();
' q+ V; C( j8 N: d$ f j
% U, M# E. w* |) _: O" J: a! w uart_gpio_init();, d* o/ ~, s- @6 S2 S
" a- M1 i" I- W+ z
led_gpio_init();
: f. X5 b7 S2 `$ I6 D f% _! {( t! z' j$ [9 A
ad_gpio_init();5 S$ p+ D2 ?1 }; Y% I+ z. w7 c
- Z/ q! U& A* b$ k$ O7 S8 U8 T' b uart_config();
: ]/ e0 f2 o: s' ^$ H- p
; j9 ]$ y4 P1 F I' w2 c ad_config();( |" q' E, K. V' R3 I! u
__bis_SR_register(GIE);
- Y' u, J+ P# n* t while(1);
5 ^# w) E4 N4 p* O% i' G. k0 \+ M! }) b* N- _
: c2 Z5 q- M j
}
' Y7 E( R& r+ M: A* N4 t" X#pragma vector = USCIAB0RX_VECTOR
/ {/ t2 _/ c2 o( }% T0 p6 ~: U__interrupt void USCI0RX_ISR(void)
# F( O2 M4 s4 {: ?" U2 N{) [ f4 w8 t) R- x1 E- D9 r
while(!(IFG2 & UCA0TXIFG));
7 w' _- o, b/ {! o6 S5 E- G1 A// UCA0TXBUF =0x33 ;// UCA0RXBUF;- H$ |& \0 u) j4 t6 d3 m p
}) ` e5 y( r& b4 S
#pragma vector = ADC10_VECTOR
( r, N& H, [1 J& u2 _& @__interrupt void ADC10_A0_ISR(void)
2 _" ^# t& v3 R! Y# M8 M3 f{
& ~) n/ v1 j" ?7 A. f1 [; B% t6 c
9 s: r" Y3 o% Q while(!(IFG2 & UCA0TXIFG));, T: h' E$ {/ z
UCA0TXBUF = ((ADC10MEM*33)/1023);9 v7 {- }1 G3 [5 O4 S3 f+ b
k = 10000;
V9 B' D/ g1 e8 n4 z while(k--);
) z6 s$ H" j8 D o& A" k
7 p5 Q, m9 h6 R, {- o9 y& V0 \} |
|