|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
#include <msp430x14x.h>! R4 Y" g, a- n' m# R
int i=0;1 b3 x& L, A5 h! O: s
void init()//初始化时钟" K9 Y: J1 F b$ c
{4 H0 ~+ G0 g" C& F$ c" K. G" _
unsigned int i;. ?* G! v. p& R6 u' ?3 I3 x
_DINT();//__disable_interrupt(): C3 l5 t( i7 A; Q1 M
BCSCTL1 &=~XT2OFF;//Basic clock System Control 1,Enable XT2CLK
1 T" j3 {( ?; `- [# x2 H //即打开XT26 h; @+ _/ @9 M8 j& s5 z
do
5 w, u7 |7 Z8 a* F; {! ^, q | {
" N$ J! T1 r0 [! \& C& h IFG1 &= ~OFIFG; // IFG1:Interrupt Flag 1 // 清除振荡器失效标志, X, t) V% w) [6 {3 S
for(i=0xFF;i>0;i--);// 延时,等待XT2起振% P0 S8 {2 e; h0 y
}& F& {3 X! u$ t! L4 [# M1 E
while((IFG1 & OFIFG) != 0);// 判断XT2是否起振,OFIFG=0则起振 4 {8 s1 C; L6 `9 A! D+ ~, \
BCSCTL2 =SELM1+SELS; //MCLK(SELM1),SMCLK时钟为XT2,都为8MHZ
/ R& l8 X- l9 u/ {; e0 D) G, I; B7 o//BCSCTL2:Basic Clock System Control 2
. W* x- j- D6 O" _. W; J- }) b}
T0 H0 W9 S. P2 b* q7 o: P( Bvoid count_init()
, _8 B3 S: Z- }{# D" m) S: c2 Y% N. Y$ s1 [/ j; r( {
P1SEL =0x00;. G( M' l6 b$ j8 |- Y1 ~
P1DIR&=~(BIT0+BIT1);* M% z+ G! W" {+ I: i
P1DIR|=BIT6;9 R$ Z/ M# e$ b1 d$ a/ }8 E9 D
P1OUT=0X00;
, E f9 X- X' p m" h, n8 f P1IES = 0x00; // P1.0选择上升沿中断! ~; o/ B% t/ y5 T$ F; s( ? m+ G# |
P1IE = 0x01; // 打开中断使能
4 ]1 \. [ a X3 J7 ]! ]+ r/ C* ], e}
% t7 {! A' b" n2 Oint main( void )
) y+ h! i9 _* s: r% ] U{
0 {; W0 {/ C( B' h0 n // Stop watchdog timer to prevent time out reset( s2 E$ h9 ^! \) c4 O
WDTCTL = WDTPW + WDTHOLD;
% A, Z3 j0 ]; Q& F0 J init();% X3 h1 f3 u0 h5 f/ ]
count_init();
( y3 _% Q$ Z/ i: ^ R, O7 K6 g _EINT(); //开总中断- v! O% i- _ M- s: m3 J
return 0;
" m6 c! t3 p4 M5 r}
# Z( D1 x3 L7 J6 [! Z#pragma vector=PORT1_VECTOR //外部中断计脉冲
8 z8 h, {# J+ s5 x; ?5 U__interrupt void port1(void)
7 f" U, v3 h! C v7 }{
1 d$ w, `- I4 f- y n4 S) _; ?# O- g+ B3 U5 [
if(P1IFG&BIT0==BIT0)
) m; ^9 W1 O# G& ` { / l4 b ^! t$ W. O4 d) w
P1IFG=0X00;0 G6 k& g4 w) e( j9 g: B
if((P1IN&BIT1)==BIT1)1 N' M j! K+ b7 u0 o% [
i++;. h- u- b; a' j# B/ G; w4 O
else: f$ Q: g( Y/ }, O6 j& v& r3 Y
i--;
' z8 x9 i4 A$ I3 X y if(i>=100)//接收的脉冲大于100则P1.6输出高电平,灯亮
+ b% S1 E; t! u* r P1OUT|=BIT6;
+ R$ k7 _+ Q7 y( v* F/ q else# J/ `/ |" s9 [! f# t
P1OUT&=~BIT6;5 D- }- u; g5 p
}. S+ G! M* V( v k" i, z
} x3 S7 K* J( k |% y$ `! z
我打算用外部中断计电机脉冲个数,但是好像没有用,这是我写的一个外部中断测试,灯一直不亮,现在也不知道是什么原因,求帮助,已经困扰好久了,谢谢!
9 {1 q, B: G* G J( X |
|