|
EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本程序是单片机MSP430G2553 ( I! I5 m) E. G* C3 O
P1.2----------------------------UCA0TXD 串口发送端
) n# G$ d1 _1 L3 r& R+ A! j P1.1----------------------------UCA0RXD 串口接受端
, n: z9 R: Q3 b8 y# \/ d P1.0----------------------------红灯指示
6 `! E! j* f$ s) F1 T: K4 w P1.6----------------------------绿灯指示
' h o5 M2 A6 N# |) n/ w0 k) [& S P1.5----------------------------模拟电压输入" D9 s/ t6 H) ?/ A, c* p2 r b0 c" I- [3 z
利用主辅时钟为1MHZ,串口波特率9600,' P/ B8 C% `* }, v3 E: F' v
波特率:1000000/9600=104
+ `% K/ s9 R. t8 f. j UCA0BR0 = 104; // 1MHz 96009 ]! P0 n9 Q) t9 T8 I- S
UCA0BR1 = 0; // 1MHz 9600
+ \2 _$ h/ z+ Z# k7 |% o/ ], y
& y: n" l& j3 W% f! C+ L现象:
8 N! z2 x4 {: t* b: Y7 b' U 功能(1)看到 P1.5口输入不同的电压经AD采样后发送 ; s6 ]( V* M8 P! |( i1 Y- L
功能(2)打开电脑串口调试助手,发送区有数据待发送时,在接受区将看到相应的数据。
C' Y1 Z2 {, }& T/ {******************************************************************************/' |1 d$ U, R0 T
#include <msp430g2553.h>$ M$ ]; F' X; d* W
float adc_voltage;
2 U, E( s$ P! v1 @0 kunsigned int k;
, P$ W4 z& u% b) u3 M cvoid sys_clk_config(void)* N! d8 s( ?5 E5 V! L4 d! `' L0 N
{) k7 [0 d7 T' Q$ D8 S9 ]
//ACLK = ; MCLK = SMCLK = DCOCLK = 1.1MHZ$ K' G0 _) z1 X# t
DCOCTL = 0;( w3 n# t% j- U9 Z0 E
BCSCTL1 = CALBC1_1MHZ;
' q6 O. |3 l; H( ~% i8 e+ @ DCOCTL = CALDCO_1MHZ;
7 Z6 s" p* c6 V* [/ S9 u9 ?. c}* g1 a$ y! i, {3 |$ I$ O
void uart_gpio_init(void)
. f, u+ y% j7 Z) g) p& m{9 k1 z& S; j. a
//P1SEL |= BIT1 + BIT2;
9 {; e. ~: ]' i9 K3 B) w //P1SEL2 |= BIT1 + BIT2;
9 x5 ~% G5 l. L5 R+ B# b5 n //P1DIR |= BIT2;5 h2 C& k" L* i
P1DIR = 0xFF; // All P1.x outputs3 u+ X# v6 ?# A; m
P1OUT = 0; // All P1.x reset0 t* ~+ w: r3 s- \
P1SEL |= BIT1 + BIT2 + BIT4; // P1.1 = RXD, P1.2=TXD0 {$ J- Y, v) G
P1SEL2 |= BIT1 + BIT2; // P1.4 = SMCLK, others GPIO8 f- W3 A6 u T
P2DIR = 0xFF; // All P2.x outputs7 \1 W0 U, Q5 {) s+ z5 H5 [& h
}
; r6 c5 {) I2 v; s* n. J9 y; X. Nvoid led_gpio_init(void)1 } v2 R& g1 g0 i6 w
{
) C6 j c8 v" b' N}) Y0 e3 N/ ~2 Y/ @( ?5 Q
void ad_gpio_init(void)7 n& e+ n% c5 Q+ [* m
{( t) s4 G1 B: o% @ Z% M' j
}) U8 a8 W' |/ }5 s0 B: ?, E" S
void uart_config(void)
! B& m! ~1 D- T8 }8 u" R8 H2 c/ W% b{
% I7 ~8 a% y7 RUCA0CTL1 |= UCSSEL_2;$ C. ~ V# Z- a+ E: w
5 k n) Z2 [/ n. Y1 G
UCA0BR0 = 104; // 1MHz 9600- k* @. k# V% Q
UCA0BR1 = 0; // 1MHz 9600
* i3 U: V2 Q3 g4 W; X4 n G: d8 q UCA0MCTL = UCBRS2 + UCBRS0;
9 v+ H0 n# Q; j0 Z UCA0CTL1 &= ~UCSWRST;
: F: X* {3 A" j, O" f% S5 h) M IE2 |= UCA0RXIE;
! F# S$ p6 t9 W& h0 `( W
J2 e( g, b \2 d: S}( t) l: ]( v& @; O0 T4 ?
void ad_config(void)
' Y$ F* V7 R, ]2 {- y3 S{/ b5 h* Q8 o# B* e: {1 @
ADC10CTL0 = ADC10SHT_2 + MSC + ADC10ON + ADC10IE;/ Q T& P& R, M+ [
. ]. Y0 @8 ^ f. Q ADC10CTL1 = INCH_5 + CONSEQ_2 ;
' s9 }7 s9 l) L ADC10AE0 |= 0x10;
$ s1 x# S* u" f% R I2 a$ Q8 F3 P- z) f) G
ADC10CTL0 |= ENC + ADC10SC;) I: ~9 o0 m! g' G+ A; T
0 n. W+ h1 H! m* O+ j3 `, K* j}
- c# X9 v3 Q4 V: H: Bvoid main()2 E. O" Z8 g- r8 x
{! z) ]" K. p" u
WDTCTL = WDTPW + WDTHOLD; J# A. R, d. ^/ B3 b
: G+ L" V9 @3 \- \. }: l
//sys_clk_config();7 ]6 D, H' }0 }; a8 p; M
0 z/ B: e# H/ K7 v uart_gpio_init();( U" A9 z* c4 \" ]
3 W- n+ C" J1 l
led_gpio_init();
7 ]( P$ Q0 _4 d1 ~' W* A1 j
4 p) a' }! G0 M& }) M1 w ad_gpio_init();6 F. h& W0 E% w, ~6 O6 k/ b' Z& _' T
( Q4 C9 a# w" p4 k# d
uart_config();% t7 M2 e* D+ F! g9 Q1 J# U
. D) g% T, S4 ]. l
ad_config();7 |* }* b2 t7 T6 K
__bis_SR_register(GIE);3 j% `/ U' S# V0 M8 ^
while(1);
# L' q& w) a% D" y2 b+ b
* s% h) c2 z/ e1 A% @" ^
" G( `7 P9 C" j( k1 ?}8 c( f/ f* {- j; b) O
#pragma vector = USCIAB0RX_VECTOR- z/ n1 L! q/ g5 r
__interrupt void USCI0RX_ISR(void)
/ |0 L# B7 r7 Y4 `2 D6 Y{
' ?9 |0 `9 {% N1 ^" | while(!(IFG2 & UCA0TXIFG));
7 A( z J; f. i// UCA0TXBUF =0x33 ;// UCA0RXBUF;- {/ u% S5 E: [. ^. m3 U+ M) p: p& ^
}
) d4 C% ]# J, V5 B6 ~. h#pragma vector = ADC10_VECTOR
9 \. {9 J' K. \__interrupt void ADC10_A0_ISR(void)* {. \' c/ A* S* a6 N
{
9 ~# M) B+ W2 [2 m: p4 \% e. Y* s
while(!(IFG2 & UCA0TXIFG));
2 z# y% r3 m- |6 Q UCA0TXBUF = ((ADC10MEM*33)/1023);! Y# R- K% q0 Q: i
k = 10000;: b5 G* I6 {5 g" b6 m8 [
while(k--);( G% ^$ U. l7 z& K: Z+ S6 ^& q
$ B: w u w7 ?} |
|