打印
[MCU]

外部中断测试

[复制链接]
439|28
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
kangzj|  楼主 | 2020-1-11 21:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <msp430x14x.h>
int i=0;
void init()//初始化时钟
{
   unsigned int i;
   _DINT();//__disable_interrupt()
   BCSCTL1 &=~XT2OFF;//Basic Clock System Control 1,Enable XT2CLK
                      //即打开XT2
   do
   {
     IFG1 &= ~OFIFG;        // IFG1:Interrupt Flag 1                                                // 清除振荡器失效标志
      for(i=0xFF;i>0;i--);// 延时,等待XT2起振
   }
   while((IFG1 & OFIFG) != 0);// 判断XT2是否起振,OFIFG=0则起振               
   BCSCTL2 =SELM1+SELS;       //MCLK(SELM1),SMCLK时钟为XT2,都为8MHZ
//BCSCTL2:Basic Clock System Control 2
}
void count_init()
{
   P1SEL =0x00;
   P1DIR&=~(BIT0+BIT1);
   P1DIR|=BIT6;
   P1OUT=0X00;
   P1IES = 0x00;               // P1.0选择上升沿中断
   P1IE  = 0x01;               // 打开中断使能
}
int main( void )
{
  // Stop watchdog timer to prevent time out reset
  WDTCTL = WDTPW + WDTHOLD;
  init();
  count_init();
  _EINT();           //开总中断
  return 0;
}
#pragma vector=PORT1_VECTOR   //外部中断计脉冲
__interrupt void port1(void)
{

  if(P1IFG&BIT0==BIT0)
  {  
    P1IFG=0X00;
    if((P1IN&BIT1)==BIT1)
    i++;
    else
    i--;
    if(i>=100)//接收的脉冲大于100则P1.6输出高电平,灯亮
      P1OUT|=BIT6;
    else
      P1OUT&=~BIT6;
  }
}
我打算用外部中断计电机脉冲个数,但是好像没有用,这是我写的一个外部中断测试,灯一直不亮,现在也不知道是什么原因

使用特权

评论回复

相关帖子

沙发
dingy| | 2020-1-11 21:48 | 只看该作者
可能是硬件出了问题吧   建议检查下硬件

使用特权

评论回复
板凳
houcs| | 2020-1-11 21:51 | 只看该作者
#include <msp430x24x.h>
int i=0;
void init()//初始化时钟
{
   unsigned int i;
   BCSCTL1 &=~XT2OFF;//Basic Clock System Control 1,Enable XT2CLK
                      //即打开XT2
   do
   {
     IFG1 &= ~OFIFG;        // IFG1:Interrupt Flag 1                                                // 清除振荡器失效标志
      for(i=0xFF;i>0;i--);// 延时,等待XT2起振
   }
   while((IFG1 & OFIFG) != 0);// 判断XT2是否起振,OFIFG=0则起振               
   BCSCTL2 =SELM1+SELS;       //MCLK(SELM1),SMCLK时钟为XT2,都为8MHZ
}
void count_init()
{
   P1DIR|=BIT6;
   P1IES = 0x00;               // P1.0选择上升沿中断
   P1IE  = 0x03;               // 打开中断使能
   P1IFG = 0X00;
}
void main( void )
{
  // Stop watchdog timer to prevent time out reset
  WDTCTL = WDTPW + WDTHOLD;
  init();
  count_init();
  _EINT();           //开总中断
}
#pragma vector=PORT1_VECTOR   //外部中断计脉冲
__interrupt void port1(void)
{

  if(P1IFG&BIT0)
  {  
    P1IFG=0X00;
    P1OUT|=BIT6;
  }
  if(P1IFG&BIT1)
  {
    P1IFG=0X00;
    P1OUT&=~BIT6;
  }
}

使用特权

评论回复
地板
liliang9554| | 2020-1-11 21:56 | 只看该作者
可以在proteus中仿真一下

使用特权

评论回复
5
zhaoxqi| | 2020-1-11 22:02 | 只看该作者
在主函数里是不是应该加上一个while(1);?

使用特权

评论回复
6
spark周| | 2020-1-11 22:06 | 只看该作者
#include <msp430x24x.h>
int i=0;
void init()//初始化时钟
{
   unsigned int i;
   BCSCTL1 &=~XT2OFF;//Basic Clock System Control 1,Enable XT2CLK
                      //即打开XT2
   do
   {
     IFG1 &= ~OFIFG;        // IFG1:Interrupt Flag 1                                                // 清除振荡器失效标志
      for(i=0xFF;i>0;i--);// 延时,等待XT2起振
   }
   while((IFG1 & OFIFG) != 0);// 判断XT2是否起振,OFIFG=0则起振               
   BCSCTL2 =SELM1+SELS;       //MCLK(SELM1),SMCLK时钟为XT2,都为8MHZ
}
void count_init()
{
   P1DIR|=BIT6;
   P1IES = 0x00;               // P1.0选择上升沿中断
   P1IE  = 0x03;               // 打开中断使能
   P1IFG = 0X00;
}
void main( void )
{
  // Stop watchdog timer to prevent time out reset
  WDTCTL = WDTPW + WDTHOLD;
  init();
  count_init();
  _EINT();           //开总中断
   while(1);
}
#pragma vector=PORT1_VECTOR   //外部中断计脉冲
__interrupt void port1(void)
{

  if(P1IFG&BIT0)
  {  
    P1IFG=0X00;
    P1OUT|=BIT6;
  }
  if(P1IFG&BIT1)
  {
    P1IFG=0X00;
    P1OUT&=~BIT6;
  }
}

使用特权

评论回复
7
kangzj|  楼主 | 2020-1-11 22:09 | 只看该作者
中断脉冲计数是很好的方式

使用特权

评论回复
8
zwll| | 2020-1-11 22:16 | 只看该作者

while((IFG1 & OFIFG) != 0);// 判断XT2是否起振,OFIFG=0则起振,,这个主要是检查晶振的起针情况的

使用特权

评论回复
9
yszong| | 2020-1-11 22:19 | 只看该作者
楼主的硬件连接正确吗?

使用特权

评论回复
10
pengf| | 2020-1-11 22:21 | 只看该作者
外部的中断信号是否存在?

使用特权

评论回复
11
renyaq| | 2020-1-11 22:24 | 只看该作者
中断配置的哪个IO

使用特权

评论回复
12
ousj| | 2020-1-11 22:26 | 只看该作者
楼主这个中断信号存在吗

使用特权

评论回复
13
zwll| | 2020-1-11 22:28 | 只看该作者
这个软件看着没有问题。

使用特权

评论回复
14
supernan| | 2020-1-11 22:31 | 只看该作者
外部中断的代码很多呢。

使用特权

评论回复
15
lizye| | 2020-1-11 22:33 | 只看该作者
建议楼主检查硬件吧。

使用特权

评论回复
16
pangb| | 2020-1-11 22:38 | 只看该作者
把原理图粘贴一下。

使用特权

评论回复
17
jiaxw| | 2020-1-11 22:40 | 只看该作者
IO的电平电压是多大?

使用特权

评论回复
18
zhanghqi| | 2020-1-11 22:43 | 只看该作者
脉冲信号是否有问题

使用特权

评论回复
19
liliang9554| | 2020-1-11 22:46 | 只看该作者
使用示波器测量一下IO的信号。

使用特权

评论回复
20
jlyuan| | 2020-1-11 22:51 | 只看该作者
可能硬件的 问题。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

672

主题

7007

帖子

2

粉丝