|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
#include <msp430x14x.h>
9 d& x% D2 N- w- vint i=0;& A- \8 d9 B: p3 d: f$ b" F
void init()//初始化时钟
2 j& O( m# y7 k3 b" `, w5 u{
( r! L, o8 \/ Q. }0 n4 z* S+ ~7 h. F; u unsigned int i;
* [ e! R$ P4 H% I5 A Z4 o% N$ j _DINT();//__disable_interrupt()
: z v: h! A0 u6 K BCSCTL1 &=~XT2OFF;//Basic clock System Control 1,Enable XT2CLK
5 }8 J0 n# G: q //即打开XT27 |$ P( M2 \7 G4 a; ]
do
. s2 g' i! u3 c2 n# U: o {7 v# P n* u$ o8 a* s( i# E$ ]
IFG1 &= ~OFIFG; // IFG1:Interrupt Flag 1 // 清除振荡器失效标志& ] D$ K1 D; h, C% q+ p! r1 O
for(i=0xFF;i>0;i--);// 延时,等待XT2起振. g9 J9 f# { V
}$ Y- h, t8 |) \6 k5 @5 Z
while((IFG1 & OFIFG) != 0);// 判断XT2是否起振,OFIFG=0则起振
& C$ v1 `$ o2 e BCSCTL2 =SELM1+SELS; //MCLK(SELM1),SMCLK时钟为XT2,都为8MHZ
+ p7 ^7 H+ r$ {3 B' D4 W: V1 U3 w//BCSCTL2:Basic Clock System Control 2+ C$ |, u( n2 {2 ]5 R+ n- R
}3 [3 _' c0 a; s! | N
void count_init()
/ O7 I9 a, x; W! v# t7 p3 O* N{
r# y' W# q# b( \6 @ P1SEL =0x00;+ Y0 t- R) X. v' q, x7 f* v
P1DIR&=~(BIT0+BIT1);
. z4 V* b: x2 R, p P1DIR|=BIT6;
- I% ]8 k5 N9 V, {8 L' c P1OUT=0X00;
- L# l2 ^) T! s6 |( e! D* x# z P1IES = 0x00; // P1.0选择上升沿中断
. ~3 }" T% _2 S3 L7 k; X P1IE = 0x01; // 打开中断使能
' O p; d5 x$ b4 {; D}% @9 o2 V; T7 f, v
int main( void )! u. j& a, K, u: O
{
, w7 w$ z& e$ A% N" g // Stop watchdog timer to prevent time out reset- ]" `, s5 _, m- D& C
WDTCTL = WDTPW + WDTHOLD;
7 A. V$ C* }& {: Q init();
0 O$ \) m! B: v) \ count_init();
9 d1 _# J( b( `, L- L1 ]$ V7 \# p& d _EINT(); //开总中断1 z4 e+ E+ F6 S
return 0;
% O- S: { E2 V: y0 b7 d8 ^+ _}: v# l1 J2 p$ T1 @+ j' P
#pragma vector=PORT1_VECTOR //外部中断计脉冲
6 S2 E4 S' ]2 i" n. ^9 _% C__interrupt void port1(void)9 s5 ?0 v1 c$ v% u% l
{4 M# E+ p$ |6 }9 w/ L
- w p" q( x3 Y; J4 R: X S
if(P1IFG&BIT0==BIT0)
& z5 @$ K* M! E ~. p$ ] { + V1 L" b' V" l& ~" o
P1IFG=0X00;
; X$ ?1 D7 r( k: ]& k9 |# W if((P1IN&BIT1)==BIT1)
( F4 ^0 G: G* ?) O) }+ B6 w i++;; [; Q; x m# Q& {! _- ]" |
else; F. W: K: I8 K* n* }, @
i--;
" P) O( D; ]9 a$ f: m) R if(i>=100)//接收的脉冲大于100则P1.6输出高电平,灯亮
! K4 i, \0 `$ g6 j3 L/ A, I P1OUT|=BIT6;
, m2 z$ j& l( t3 O0 ~4 \: k. [ else9 a P: V2 K/ x' h: `8 U7 Z
P1OUT&=~BIT6;
* }" w3 M# x% ` }2 A/ f0 L) l8 y# L- s& m
}; e! y2 D0 X8 r' q4 a7 a3 d
我打算用外部中断计电机脉冲个数,但是好像没有用,这是我写的一个外部中断测试,灯一直不亮,现在也不知道是什么原因,求帮助,已经困扰好久了,谢谢!
% X6 \" y6 w; d9 @7 v |
|