MSP430:中断简介
(5)、中断应用程序举例(外部中断):
void interrupt_initial()
{
P1DIR&=~BIT7; //P1.7为输入
P1IE|=0x80; //P1.7中断允许
P1IES|=0x00; //P1.7上升沿触发
P1IFG=0; //P1.7中断标志清除,对于多源中断必须先清中断标志再打开中断
_EINT(); //总中断允许
}
#pragma vector=PORT1_VECTOR
__interrupt void Port_1(void)
{
P1IFG&=~BIT7; //P1.7中断标志清除
/*在此写中断服务子程序*/
}
关闭局部中断一般是给想关的特殊功能寄存器相关位置0
同样以P1口外部中断为例:
关闭局部中断:
P1IE&=~BIT0;//关闭P1.0外部中断
(2)、打开、关闭全局中断:
_EINT();//打开总中断,相当于51的EA=1;
_DINT();//关闭总中断,相当于51的EA=0;
(3)、各中断向量Interrupt Vectors:
#define BASICTIMER_VECTOR (0 * 2u) /* 0xFFE0 Basic Timer */
#define PORT2_VECTOR (1 * 2u) /* 0xFFE2 Port 2 */
#define USART1TX_VECTOR (2 * 2u) /* 0xFFE4 USART 1 Transmit */
#define USART1RX_VECTOR (3 * 2u) /* 0xFFE6 USART 1 Receive */
#define PORT1_VECTOR (4 * 2u) /* 0xFFE8 Port 1 */
#define TIMERA1_VECTOR (5 * 2u) /* 0xFFEA Timer A CC1-2, TA */
#define TIMERA0_VECTOR (6 * 2u) /* 0xFFEC Timer A CC0 */
#define ADC12_VECTOR (7 * 2u) /* 0xFFEE ADC */
#define USART0TX_VECTOR (8 * 2u) /* 0xFFF0 USART 0 Transmit */
#define USART0RX_VECTOR (9 * 2u) /* 0xFFF2 USART 0 Receive */
#define WDT_VECTOR (10 * 2u) /* 0xFFF4 Watchdog Timer */
#define COMPARATORA_VECTOR (11 * 2u) /* 0xFFF6 Comparator A */
#define TIMERB1_VECTOR (12 * 2u) /* 0xFFF8 Timer B CC1-6, TB */
#define TIMERB0_VECTOR (13 * 2u) /* 0xFFFA Timer B CC0 */
#define NMI_VECTOR (14 * 2u) /* 0xFFFC Non-maskable */
#define RESET_VECTOR (15 * 2u) /* 0xFFFE Reset [Highest Priority] */
最新文章
- 构建一个基本的前端自动化开发环境 —— 基于 Gulp 的前端集成解决方案(四)
- CentOS7安装NodeJS6.9
- SQL Server 得到数据库中所有表的名称及数据条数
- sed 使用
- java系列: 对不起,JavaFX——Java 8目前还不能救你(zz)
- CSS3实现的渐变按钮,在IE7、IE6下的滤镜使用。
- Javascript与C#相互调用
- ARM开发板系统移植-----rootfs的制作
- 基于jQuery的前端如何做到无伤迁移
- 201521123026《JAVA程序设计》第14周学习总结
- Python的闭包和装饰器
- 详解margin: auto
- Flink+Kafka 接收流数据并打印到控制台
- springmvc 对日期的转换与处理
- MVC 2nd
- JavaScript HTML DOM,BOM
- Python+Matplotlib制作动画
- 洛谷 P1123 取数游戏
- Python3------装饰器详解
- 第二百九十节,MySQL数据库-MySQL命令行导出导入数据库,数据库备份还原