|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
#include <msp430x14x.h>
8 v! g' d* w/ C9 Z2 l' @int i=0;4 D( D5 P( O8 z1 r
void init()//初始化时钟+ Q1 {' f; J6 z- Y T' E
{9 L, A7 M- Z+ j' m' t# H! D
unsigned int i;
0 W5 G% b; a f% T0 J _DINT();//__disable_interrupt(); G6 ^; g& ?" q0 u
BCSCTL1 &=~XT2OFF;//Basic clock System Control 1,Enable XT2CLK8 t5 C9 X' {# o8 x" L+ C# E
//即打开XT2
4 J6 w# l$ X5 \+ H do
; X! H% N4 s* j {
6 ^$ Z4 G8 A/ |8 u9 b. q8 x6 ? IFG1 &= ~OFIFG; // IFG1:Interrupt Flag 1 // 清除振荡器失效标志 _+ A5 r, h. |3 T) k
for(i=0xFF;i>0;i--);// 延时,等待XT2起振/ ^# X" O5 O8 M
}
G- k: }; }0 N# g5 i0 J. s. B8 k while((IFG1 & OFIFG) != 0);// 判断XT2是否起振,OFIFG=0则起振
3 v* l9 _' P/ ~* Z; u BCSCTL2 =SELM1+SELS; //MCLK(SELM1),SMCLK时钟为XT2,都为8MHZ$ G$ @% b, l" }' H
//BCSCTL2:Basic Clock System Control 2
. F- i' \) T" ^+ T, D0 L}+ R) U& d$ U( A/ ~8 u# A
void count_init()
# _% |" f8 z* a8 M* s{, q' q( D+ p% d( d
P1SEL =0x00;
& b7 Q' t- R- ]9 R- X" z P1DIR&=~(BIT0+BIT1);; e* t$ R! [2 F. z, w' l
P1DIR|=BIT6;
& f! X! x+ B$ n# n P1OUT=0X00;! Q7 k! N* n$ w0 Q0 x
P1IES = 0x00; // P1.0选择上升沿中断/ c' A' a/ s7 h6 \1 d7 }, M q6 u0 ?, [
P1IE = 0x01; // 打开中断使能. O( M+ D @- V4 m7 z
}
5 x4 t: Q# q# }9 o; t; Eint main( void )
( r* B, ^9 i- D8 o0 q9 {{% t1 q u/ m5 ^' Q" w% ~1 d
// Stop watchdog timer to prevent time out reset
7 U6 l6 _5 _) t1 s) z- | D3 e- O WDTCTL = WDTPW + WDTHOLD;4 ] ^: I9 j- x% c) B
init();0 y5 o6 i( m: D. n; Q) F
count_init();, a' A' o( V% U. V& f
_EINT(); //开总中断4 s8 u( D: A* `0 N( M& F- _
return 0;
& v6 R3 {: |/ D; Y) c6 K4 W8 e}
( V4 R$ v6 s% `7 e$ W, }0 p6 e#pragma vector=PORT1_VECTOR //外部中断计脉冲
9 p' q; a. Z0 T__interrupt void port1(void)
2 S* |, y$ w5 w2 e{% ]9 p6 e2 @0 s
9 R4 |2 E {) q) r
if(P1IFG&BIT0==BIT0)! T Q8 i' \3 ?
{ , S) q9 R7 h9 l' J/ s
P1IFG=0X00;
3 _% c; Q2 [+ ^0 W# m8 C' Q if((P1IN&BIT1)==BIT1)
% d# W3 ]2 T9 H i++;
6 r. f' r& e: M- d else
4 X. Z2 R N7 D# G, S- A4 u# H i--;
1 ^3 h- G2 S3 U7 t+ J if(i>=100)//接收的脉冲大于100则P1.6输出高电平,灯亮
7 m# V' _# Z1 E" H P1OUT|=BIT6;
$ U, _) w/ h8 A; W else( K8 s' m J7 c% R: ~
P1OUT&=~BIT6;
B' O: u1 G6 e+ n; h$ s }
: A, Z! r+ O$ V7 R* B}9 v$ X L. S: t9 m. X" q5 U
我打算用外部中断计电机脉冲个数,但是好像没有用,这是我写的一个外部中断测试,灯一直不亮,现在也不知道是什么原因,求帮助,已经困扰好久了,谢谢!1 `$ I* S2 n9 w
|
|