|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
#include <msp430x14x.h>1 P* ]1 R, Q! J3 Q4 v
int i=0;
; j$ U# a' D& V1 wvoid init()//初始化时钟& L% Q' U2 ]/ S* e8 q3 k5 e
{
6 V) p8 r& ~1 N# @ unsigned int i;
) Y- j* Y# Z# ~, H _DINT();//__disable_interrupt()* f# d) `9 U/ S: D" _7 f
BCSCTL1 &=~XT2OFF;//Basic clock System Control 1,Enable XT2CLK
0 F2 g, S: { X6 D //即打开XT24 \+ l; h* H) M1 e( x2 I/ f m
do
* l m; M+ y6 V5 d) q% I* ` {7 A5 L) G5 y P
IFG1 &= ~OFIFG; // IFG1:Interrupt Flag 1 // 清除振荡器失效标志
: i% ^2 _( K9 O for(i=0xFF;i>0;i--);// 延时,等待XT2起振" B' A4 y; o) Y9 ?# q0 n
} k# E& z* U8 N9 C: ~: y& B
while((IFG1 & OFIFG) != 0);// 判断XT2是否起振,OFIFG=0则起振 # d) L0 }- _+ Y
BCSCTL2 =SELM1+SELS; //MCLK(SELM1),SMCLK时钟为XT2,都为8MHZ7 X. I1 V- P/ }2 r5 q H) d
//BCSCTL2:Basic Clock System Control 2
$ ^. f4 L8 E% A$ H' J& e+ ?}9 K' t& y1 ]& }- G# m
void count_init()) [( y5 f9 z( m; G* S, e' b
{
I) z" j$ }3 p4 J v1 `/ b P1SEL =0x00;% L+ u% g1 Z8 P+ u5 v4 K* R+ _
P1DIR&=~(BIT0+BIT1);
+ k- A z" i# \) u P1DIR|=BIT6;
' ]2 X8 Z# M. m( y2 z6 t P1OUT=0X00;. ^! K0 W, o! {8 t2 n
P1IES = 0x00; // P1.0选择上升沿中断
( N p$ d) f7 C0 [ P1IE = 0x01; // 打开中断使能! N/ r7 Q- u' [) {/ e
}$ L% M# W, t; q; t8 k
int main( void )
+ J; ]. s! L8 d: V{
1 U* @' p3 M' `; n6 \ // Stop watchdog timer to prevent time out reset
# E6 c! o2 M1 s* j1 B# U3 { WDTCTL = WDTPW + WDTHOLD;, D& n- V8 G8 n* `
init();2 L! i7 T* v& _ L' ]: F
count_init();% w8 x! c; U! @ V6 }4 H
_EINT(); //开总中断8 `9 Z5 c/ `0 ~$ C
return 0;! V9 e# ]* m: t) D4 Y! g0 U7 O
}
9 p- l& W$ M! F& T6 R#pragma vector=PORT1_VECTOR //外部中断计脉冲
- N( s% R5 {: h: C; Z/ B! A__interrupt void port1(void)$ Y$ ] m7 T" q2 M S6 K. D4 U
{4 @* A6 s/ a, `. n& r
, e7 H6 P6 J H
if(P1IFG&BIT0==BIT0)- J# W7 r4 B$ g6 w
{ ) {8 P* b4 w$ f7 i
P1IFG=0X00;" v, t+ h8 y4 g/ |
if((P1IN&BIT1)==BIT1)1 t# z u9 T% r5 k/ q7 d& q* W
i++;6 U4 W2 i6 @6 Y2 v- s5 u
else. H% T7 q7 m1 P& o2 C7 A
i--;, O; x8 v6 ?4 o) r& [
if(i>=100)//接收的脉冲大于100则P1.6输出高电平,灯亮
7 O* q3 P% `8 W. x3 e T+ Q8 y* ~ P1OUT|=BIT6;4 |& G7 G- i$ t& A( X- x! @& D
else c X( E+ l) E! f
P1OUT&=~BIT6;
9 e* r" y0 f: m/ n/ V O" W }9 n1 q8 S3 |: Y
}4 k- s/ `% U* ^, P% b
我打算用外部中断计电机脉冲个数,但是好像没有用,这是我写的一个外部中断测试,灯一直不亮,现在也不知道是什么原因,求帮助,已经困扰好久了,谢谢!; H: i1 z- c1 n0 S6 P3 p: _
|
|