|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
#include <msp430x14x.h> M8 p) ?5 i" n% _# G' `6 x
int i=0;- l: g, W5 L( F8 o3 J
void init()//初始化时钟( T0 T6 B$ ?* k% V6 ?
{: }: V' t+ Y3 w4 r1 T) v/ m
unsigned int i;
; n. J( H0 Q8 ~: `# e _DINT();//__disable_interrupt()
( O) F! s9 H" D( l$ o0 G: { BCSCTL1 &=~XT2OFF;//Basic clock System Control 1,Enable XT2CLK1 S$ }) i3 Q' Y' c
//即打开XT2
( ~" U6 ^7 R5 a p do# V+ U) U7 t0 ^# c( D! ?
{
+ P" d, G" b c+ s IFG1 &= ~OFIFG; // IFG1:Interrupt Flag 1 // 清除振荡器失效标志' Q8 S* i% P; \1 U" ~# }% ?
for(i=0xFF;i>0;i--);// 延时,等待XT2起振
8 Z% W* ^1 U, k5 C/ a }
; r8 Z( c! {4 k& _ while((IFG1 & OFIFG) != 0);// 判断XT2是否起振,OFIFG=0则起振
1 V. @! [5 F+ e5 e! P BCSCTL2 =SELM1+SELS; //MCLK(SELM1),SMCLK时钟为XT2,都为8MHZ
, q0 B% Q0 _5 b9 u# |) w$ o( Q. ]//BCSCTL2:Basic Clock System Control 2+ Q% _+ h- N. C/ }& Z2 w
}
6 E' K x8 G& C" n2 j& {void count_init()( W/ U( c+ R3 }. j; ?* C; E, ^) b
{
% S. K# k( R1 j3 Y; t P1SEL =0x00;9 q$ \' o: D7 F" J4 L
P1DIR&=~(BIT0+BIT1);
, {2 v. i( N; K- w2 ? P1DIR|=BIT6;
. L, F5 Q: s6 ?7 v9 S) S) y' d( m8 c P1OUT=0X00;
) a) N3 a8 y$ Y P1IES = 0x00; // P1.0选择上升沿中断
6 l! L ^4 T5 Q5 E3 R |2 N$ w P1IE = 0x01; // 打开中断使能
" P* u, k9 L" x8 `9 Q' U}) l0 d: I ^9 i- n+ @& d
int main( void )* h( n" Q* |, p m
{, X/ d; E+ M. T% }( M# a4 `2 C% n
// Stop watchdog timer to prevent time out reset
+ ^/ S1 O8 U% p) b8 ^ WDTCTL = WDTPW + WDTHOLD;, v( ^3 S4 E8 P1 S: @7 ~, E( `
init();$ m' n& N* R2 Z
count_init();
$ p0 ]" X! e6 L- R3 i _EINT(); //开总中断
v" O1 ]; }; { v$ M+ d return 0;
7 `; j0 q- A4 w0 x}4 e$ M$ X3 I5 W3 i+ G
#pragma vector=PORT1_VECTOR //外部中断计脉冲
k, K S7 {* J__interrupt void port1(void)7 k4 [: Y& t) B. b3 f
{" Z2 L/ O5 s2 L3 Q7 B5 s: F
9 C: ~* U; i; k5 v T1 d5 [
if(P1IFG&BIT0==BIT0)
v) _5 J& k# O/ r { * `' ?. k+ n& G+ f c+ v) S
P1IFG=0X00;0 X: e6 |: b2 ]" m/ p* p' U
if((P1IN&BIT1)==BIT1)8 C4 [5 X1 J& `+ l; X2 Y) F
i++;
/ S9 J. m. p! k9 P4 e else- L$ x( m& Q0 ?5 l
i--;2 _6 q0 V) @3 l, s
if(i>=100)//接收的脉冲大于100则P1.6输出高电平,灯亮
2 L$ g/ k1 d, C( @, }3 Y P1OUT|=BIT6;
0 \7 B6 }: q5 Q2 x else' D0 S) e# g( U' { a9 R+ q. Y! u
P1OUT&=~BIT6;
2 Z j! g& }& M4 V }& m6 l* F$ x, a X
}
8 J7 H' i. o# a我打算用外部中断计电机脉冲个数,但是好像没有用,这是我写的一个外部中断测试,灯一直不亮,现在也不知道是什么原因,求帮助,已经困扰好久了,谢谢!1 a& j* d# O# b7 k4 ^: a
|
|