专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
TI
外部中断小问题,小伙伴们看进来
2019-07-15 16:00
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
TI MCU
8065
15
1406
利用IO口的两个引脚作为外部中断信号的输入引脚进行外部中断判断,主程序中已进入低功耗LPM3状态,然后写外部中断程序,请问这有做的话可以实时检测中断信号并进入相应的中断程序吗???或者说应该把外部中断程序放在循环中呢!!!
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
15条回答
心里美萝卜
2019-07-16 23:47
你好
我利用IO口写了一个检测外部中断的程序,调试的时候却出了问题,能帮我看看哪里出问题了吗
#include "msp430x24x.h"
unsigned char flag;
void main(void)
{
WDTCTL = WDTPW + WDTHOLD;
TACCTL0=CCIE;//开启定时器A中断
TACCR0=1000-1;
TACTL=TASSEL_1+ID_3+TACLR+MC_1;//选择ACLK作为时钟源,时钟八分频,定时器清除位
P1DIR = 0x9F;
P1OUT = 0x00;
P2DIR = 0xFF;
P2OUT = 0x00;
P3DIR = 0xFF;
P3OUT = 0x00;
P4DIR = 0xFF;
P4OUT = 0x00;
P5DIR = 0xFF;
P5OUT = 0x00;
P6DIR = 0xFF;
P6OUT = 0x00;
/****P1.5中断触发********/
P1IES^=BIT5;//设置为上升沿触发
P1IFG&=~BIT5;//清除终端标志位
P1IE|=BIT5;//设置终端使能
/*****P1.6中断触发******/
P1DIR&=~BIT6;//中断引脚P1.6设置为输入端口
P1IES|=BIT6;//设置为下降沿触发
P1IFG&=~BIT6;//清除终端标志位
P1IE|=BIT6;//设置终端使能
//P1DIR|=BIT0;//MCU工作状态标志
_EINT();
__bis_SR_register(LPM3_bits ); // Enter LPM3, enable interrupts
while(1)
{
//__bis_SR_register(LPM3_bits ); // Enter LPM3, enable interrupts
}
}
#pragma vector =PORT1_VECTOR
__interrupt void P1_Interrupt(void)
{
if((P1IFG&0X40)==BIT6)//判断TLV3691是否产生低电平中断信号
{
P1IFG&=~BIT6;//中断标志清除
P2OUT&= ~(BIT7);//P2.0 LED等灭
flag=0;
//__bis_SR_register(LPM3_bits ); // Enter LPM3, enable interrupts
}
else if((P1IFG&0X20)==BIT5)//判断TLV3691是否产生高电平中断信号
{
P1IFG&=~BIT5;//中断标志清除
//__bic_SR_register_on_exit(LPM3_bits); // Clear LPM3 bits from 0(SR)
P2OUT|=BIT7;//P2.0 LED灯亮
flag=1;
}
}
#pragma vector =TIMERA0_VECTOR
__interrupt void TIMER_A(void)
{
if(flag==1)
{
P1OUT^=BIT1;
}
else if(flag==0)
{
P1OUT&=~(BIT1);
}
}
复制代码
加载中...
查看其它15个回答
一周热门
更多
>
相关问题
CPLD的方波输出
4 个回答
11个版本Quartus II 软件下载,安装包网盘合集,附教程,47G!
20 个回答
请大家帮忙到21IC发展大家谈支持我申请新版面
20 个回答
【通知】21ic中国电子网服务条款 (所有人员必读)
1 个回答
满载而归乙亥年,大展鸿途庚子年---集签赢好礼
20 个回答
相关文章
×
关闭
采纳回答
向帮助了您的知道网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
TI
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
×
付费偷看金额在0.1-10元之间
确定
×
关闭
您已邀请
0
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
- #include "msp430x24x.h"
- unsigned char flag;
- void main(void)
- {
- WDTCTL = WDTPW + WDTHOLD;
-
- TACCTL0=CCIE;//开启定时器A中断
- TACCR0=1000-1;
- TACTL=TASSEL_1+ID_3+TACLR+MC_1;//选择ACLK作为时钟源,时钟八分频,定时器清除位
-
- P1DIR = 0x9F;
- P1OUT = 0x00;
- P2DIR = 0xFF;
- P2OUT = 0x00;
- P3DIR = 0xFF;
- P3OUT = 0x00;
- P4DIR = 0xFF;
- P4OUT = 0x00;
- P5DIR = 0xFF;
- P5OUT = 0x00;
- P6DIR = 0xFF;
- P6OUT = 0x00;
-
- /****P1.5中断触发********/
- P1IES^=BIT5;//设置为上升沿触发
- P1IFG&=~BIT5;//清除终端标志位
- P1IE|=BIT5;//设置终端使能
- /*****P1.6中断触发******/
- P1DIR&=~BIT6;//中断引脚P1.6设置为输入端口
- P1IES|=BIT6;//设置为下降沿触发
- P1IFG&=~BIT6;//清除终端标志位
- P1IE|=BIT6;//设置终端使能
-
-
- //P1DIR|=BIT0;//MCU工作状态标志
- _EINT();
- __bis_SR_register(LPM3_bits ); // Enter LPM3, enable interrupts
-
- while(1)
- {
- //__bis_SR_register(LPM3_bits ); // Enter LPM3, enable interrupts
- }
- }
- #pragma vector =PORT1_VECTOR
- __interrupt void P1_Interrupt(void)
- {
- if((P1IFG&0X40)==BIT6)//判断TLV3691是否产生低电平中断信号
- {
- P1IFG&=~BIT6;//中断标志清除
- P2OUT&= ~(BIT7);//P2.0 LED等灭
- flag=0;
- //__bis_SR_register(LPM3_bits ); // Enter LPM3, enable interrupts
- }
- else if((P1IFG&0X20)==BIT5)//判断TLV3691是否产生高电平中断信号
- {
- P1IFG&=~BIT5;//中断标志清除
- //__bic_SR_register_on_exit(LPM3_bits); // Clear LPM3 bits from 0(SR)
- P2OUT|=BIT7;//P2.0 LED灯亮
- flag=1;
- }
- }
- #pragma vector =TIMERA0_VECTOR
- __interrupt void TIMER_A(void)
- {
- if(flag==1)
- {
- P1OUT^=BIT1;
- }
- else if(flag==0)
- {
- P1OUT&=~(BIT1);
- }
- }
复制代码一周热门 更多>