世纪电源网社区logo
社区
Datasheet
标题
返回顶部
讨论

msp430中断问题

[复制链接]
查看: 241 |回复: 3
1
kimacer
  • 积分:471
  • |
  • 主题:14
  • |
  • 帖子:67
积分:471
LV6
高级工程师
  • 2023-3-28 14:57:54
#include<msp430x54x.h>

char flag;
void main()
{
P1DIR&=~BIT2;
P5DIR|=BIT0;
P5OUT|=BIT0;
_EINT(); //中断总开关 相当于51中的EA
P1IE|=BIT2; //相应的中断开关打开
P1IES&=~BIT2; //选择边沿触发 1为下降沿
while(1)
{
if(flag==1);
P5OUT&=~BIT0; //点亮LED
}
}

#pragma vector=PORT1_VECTOR
__interrupt void led()
{
if((P1IFG&BIT2)==BIT2)
flag=1;

P1IFG=0;
}

能产生中断,但是led只是闪烁一下,求解答???
收藏收藏
zhzzh177
  • 积分:395
  • |
  • 主题:23
  • |
  • 帖子:49
积分:395
LV4
初级工程师
  • 2023-3-31 15:09:49
  • 倒数3
 
按你的程序,应该是遇到P1中断后判断P1.2如果为高电平就设置flag为1,返回主程序后,如果flag为1就会把P5.0上的LED(接法应为VCC-LED-限流电阻-P5.0,低电平点亮)点亮。你说的LED只闪烁一下,是指上电时吗?如果已经进入中断了的话,又没有flag的清零,理应只要触发一次,LED就永远亮着了,不会灭掉,不会闪一下。另外,MSP430的P1和P2有GPIO中断功能,但它是个多源中断,也就是说在对应端口中断使能的情况下P1里无论8个脚中的哪个引脚达到触发条件的时候,都会引起中断,你现在程序里就是在中断服务程序中才去产判断是哪个引脚引起的中断的,所以如果没有P1IE|=BIT2;这个设置的话即使不是P1.2触发的,也可能会进中断服务程序,但不会达到设置flag为1的条件。当然你程序里由于这句存在,并不会出现P1.2以外的引脚引起P1中断的可能,P1IES&=~BIT2;设置的是0,也就是上升沿触发,只要P1.2由低电平变成高电平,就应该会永久的点亮LED了,硬件没有故障的话不会出现闪一下的现象。建议用万用表测P5.0上的电压,看看,新上电后是否为高,P1.2上升沿触发后是否P5.0变低,如果是这样,可能是LED坏了,特别是白蓝管芯在击穿后部分管子会出现难点亮,只闪一下,变暗或连续闪烁等再现。



Bnkuer
  • Bnkuer
  • 离线
  • LV4
  • 初级工程师
  • 积分:320
  • |
  • 主题:6
  • |
  • 帖子:46
积分:320
LV4
初级工程师
  • 2023-4-6 13:40:31
  • 倒数2
 
你的程序有问题,
while(1) { if(flag==1); P5OUT&=~BIT0; //点亮LED }}只是你在这里只是把P5。0变成0了 但是你没有在其他地方改变p5.0的值
你可以改成
while(1) { if(flag==1); P5OUT^=BIT0; // }}
z443233785
  • 积分:5343
  • |
  • 主题:117
  • |
  • 帖子:1003
积分:5343
LV8
副总工程师
最新回复
  • 2023-4-9 19:22:25
  • 倒数1
 
MSP430的中断分为3种:系统复位、不可屏蔽中断、可屏蔽中断
热门技术、经典电源设计资源推荐

世纪电源网总部

地 址:天津市南开区黄河道大通大厦8层

电 话:400-022-5587

传 真:(022)27690960

邮 编:300110

E-mail:21dy#21dianyuan.com(#换成@)

世纪电源网分部

广 东:(0755)82437996 /(138 2356 2357)

北 京:(010)69525295 /(15901552591)

上 海:(021)24200688 /(13585599008)

香 港:HK(852)92121212

China(86)15220029145

网站简介 | 网站帮助 | 意见反馈 | 联系我们 | 广告服务 | 法律声明 | 友情链接 | 清除Cookie | 小黑屋 | 不良信息举报 | 网站举报

Copyright 2008-2024 21dianyuan.com All Rights Reserved    备案许可证号为:津ICP备10002348号-2   津公网安备 12010402000296号