在我的MSP430上按下按钮时,尝试在汇编中编写ISR。我已经按照网络上的一些说明进行操作,但是我很难将ISR“连接”到按钮按下。
具体来说,我正在尝试将一个按钮连接到端口P1.1以运行我的ISR。
我已完成的步骤
1)启用P1.1 P1IE |= BIT1;
2)选择H-> L转换:P1IES |= BIT1;
3)清除标志寄存器:P1IFG &= ~BIT1;
4)启用全局中断:__enable_interrupt();
尽管如此,我想我错过了一些东西。我不明白如何告诉程序运行我的ISR,不幸的是我没有在网上找到任何关于这部分非常清楚的指南。这是我的装配ISR:
.cdecls C,LIST,"msp430.h"
.sect ".text:_isr"
buttonISR: push R4
mov.w #1000, R4
loop: dec.w R4
jnz loop
reti
.sect BUTTON_ISR
.word buttonISR
.end
答案 0 :(得分:1)
好吧我明白了。显然,中断向量表是硬编码的存储空间。从数据表中,我发现端口1的中断向量是0xFFDE,转换为INT47
,因此我将汇编程序的底部部分更改为:
.sect ".int47"
.word buttonISR
.end
现在效果很好!