3-MSP430引脚中断
为了写一篇文章做铺垫--提醒着自己,,,,,,
这两天一直在寻找
#pragma vector = PORT1_VECTOR
__interrupt void P1_Interrupt()//P1口中断函数
{ }
对于这两句话的解释,最起码让自己感觉能说服自己
看了好多后自己的理解
#pragma vector = PORT1_VECTOR
通俗来讲这句话是告诉C编译器,你下面的函数是P1口的中断函数,P1口有中断发生时就进入下面这个函数
__interrupt void P1_Interrupt()//P1口中断函数
{ }
那期间到底发生了什么
其实MSP430内部有一个中断向量表----中断向量表实际就是保存中断函数入口地址的存储单元空间
假如说,下面是表的一段,,,,假如说,,,,,
那么
#pragma vector = PORT1_VECTOR
就应该这样理解
告诉编译器下面有一个P1口的中断服务函数,你应该把这个中断函数的地址放在


__interrupt //告诉编译器这是个中断服务函数
再举一个例子,假设写一个串口接收中断函数
#pragma vector=UART0RX_VECTOR __interrupt void Uart_Receive()
{
}
其实
#pragma vector=UART0RX_VECTOR
后面的
UART0RX_VECTOR就是在告诉编译器,下面的中断函数是串口接收中断服务函数,你要把它的服务函数地址放到保存串口接收中断服务函数的地址里
对了后面
PORT1_VECTOR P1口中断
PORT2_VECTOR P2口中断
UART0RX_VECTOR 串口接收中断
UART0TX_VECTOR 串口发送中断
TIMER0_A0_VECTOR 定时器A中断
干脆盗一张图


,,,,,,,,,
正事,
对于引脚中断,学过51的都知道无非就是打开中断,,然后选择触发方式,然后写中断函数,然后再中断函数里清除中断标志(假如说.它不自动清除中断标志的话)
P1.2口有一的下降沿P1.0口的引脚反转
#include "io430.h"
void main( void )
{
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD; P1DIR |= BIT0;//p1.0输出模式 P1IE |= BIT2;//使能p1.2中断
P1IES |= BIT2;//下降沿触发
P1IFG &= ~BIT2;//清除p1.2中断,,感觉可有可无,加上更显得代码很完善 __enable_interrupt();
while()
{ }
}
#pragma vector = PORT1_VECTOR
__interrupt void P1_Interrupt()//P1口中断函数
{
if(P1IFG&BIT2) //P1.2口来中断啦
{
P1IFG &= ~BIT2;//清除P1.2引脚中断标志位
P1OUT ^= BIT0;//P1.0引脚取反
}
}





假如说我P1.2和P1.3都想用中断呢
P1.2口有一的下降沿P1.0口的引脚反转
P1.3口有一的下降沿P1.1口的引脚反转
#include "io430.h"
void main( void )
{
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD; P1DIR |= BIT0;//p1.0输出模式
P1DIR |= BIT1;//p1.1输出模式 P1IE |= BIT2;//使能p1.2中断
P1IES |= BIT2;//下降沿触发
P1IFG &= ~BIT2;//清除p1.2中断 P1IE |= BIT3;//使能p1.3中断
P1IES |= BIT3;//下降沿触发
P1IFG &= ~BIT3;//清除p1.3中断 __enable_interrupt();
while()
{ }
}
#pragma vector = PORT1_VECTOR
__interrupt void P1_Interrupt()//P1口中断函数
{
if(P1IFG&BIT2)//如果P1.2有中断
{
P1IFG &= ~BIT2;//清除P1.2引脚中断标志位
P1OUT ^= BIT0;//P1.0引脚取反
}
if(P1IFG&BIT3)//如果P1.3有中断
{
P1IFG &= ~BIT3;//清除P1.3引脚中断标志位
P1OUT ^= BIT1;//P1.1引脚取反
}
}


其实自己有点疑惑,,,为什么灯同时亮灭呢!同时触发,同时检测吗?,难道P1口是一个整体,那就太好了,同时用中断检测多路,不怕信号同时到来,,,,,,
3-MSP430引脚中断的更多相关文章
- 关于STM32的外部引脚中断的问题
今天想用自己以前的比较干净的工程模板做一个东西,,,,,,,在添加上引脚中断的时候,,突然想知道自己配置的中断优先级是否正确执行,,,,, 以前刚学习32的时候测试过是可以的,,不过今天发现了一个大问 ...
- TI CC2541的引脚中断.
- MSP430:中断简介
(5).中断应用程序举例(外部中断): void interrupt_initial() { P1DIR&=~BIT7; //P1.7为输入 P1IE|=0x80; //P ...
- MSP430单片机的中断
这篇文章是从网上转载过来的,原文章地址:http://www.21ic.com/jichuzhishi/mcu/questions/2012-12-21/154794.html 中断是MSP430微处 ...
- 关于MSP430中断机制
中断很大程度上体现了一款单片机的性能,从这一点将MSP430在中断方面做得很不错,主要是提供了非常丰富的中断源,基本的有IO中断,定时器中断和一些接口中断(SPI,UART,I2C)等等. 现 ...
- MSP430常见问题之IO端口类
Q1:请问430 的I/O 中断能不能可靠的响应60ns 的脉冲信号, 就是来了一个60ns 的脉冲,430 的中断会有丢失吗?A1:端口支持的最高8M的时钟,无法响应这么快的频率. Q2:430是3 ...
- STM32 GPIO外部中断总结
一.STM32中断分组: STM32 的每一个GPIO都能配置成一个外部中断触发源,这点也是 STM32 的强大之处.STM32 通过根据引脚的序号不同将众多中断触发源分成不同的组,比如:PA0,PB ...
- STM32F0xx_EXIT中断配置详细过程
Ⅰ.概述 EXIT外部中断在使用到按键或者开关控制等应用中比较常见,低功耗中断唤醒也是很常见的一种.因此,EXIT在实际项目开发中也是比较常见的一种. STM32F0中外部中断EXIT属于中断和事件的 ...
- Msp430概述
总结一下MSP430给我的印象吧,感觉他就是一个迷你型的arm 1:MSP430采用的是精简指令,他只有27条核心的汇编指令,这一点和arm相同,arm同样是采用精简指令,而80c51采用的是冗余指令 ...
随机推荐
- Android菜鸟成长记1--环境的搭配和第一个项目的构建
一.配置Android环境 1.下载JavaJDK的本地,然后拷贝出来(因为Android实在java的基础上开发的,所以要先配置java环境) 2.java环境变量的配置 配置方法(我的电脑上-&g ...
- 性能检测工具介绍-Linux系统命令行
本文介绍的关于Linux自带命令进行性能检测的介绍,详细介绍这些linux自带的工具的使用. 一.uptime uptime命令的显示结果包括服务器已经运行了多长时间,有多少登陆用户和对服务器性能的总 ...
- hibernate执行session.createQuery(hql)时hql若有参数则报错
项目从Jboss换位Tomcat服务器,打开如下Hql都报错: SELECT COUNT(*) FROM SystemUser WHERE STATUS != -1 解决方法:在Lib中加入antlr ...
- Python笔记——break的注意事项
在python中有个控制流的语句:break 它是用来终止循环语句的,不管此时循环体进行到哪,只要碰到break都停止执行循环语句. 1.举例脚本: #!/usr/bin/env python for ...
- SAP 常用函数
1. 访问本地 或别的服务器上文件 函数 CALL METHOD CL_GUI_FRONTEND_SERVICES=>EXECUTE EXPORTING DOCUME ...
- abap常用函数
1.读取生产订单状态函数 call function 'STATUS_READ' exporting client = sy-mandt ...
- 01背包问题:POJ3624
背包问题是动态规划中的经典问题,而01背包问题是最基本的背包问题,也是最需要深刻理解的,否则何谈复杂的背包问题. POJ3624是一道纯粹的01背包问题,在此,加入新的要求:输出放入物品的方案. 我们 ...
- mysql innodb存储引擎介绍
innodb存储引擎1.存储:数据目录.有配置参数为“ innodb_data_home_dir ” .“ innodb_data_file_path ” 和 “innodb_log_group_ho ...
- Android之ListView——ArrayAdapter的学习与总结
问题:当ListView选定的ListItem视图中存在一些UI组件,如CheckBox,希望保存状态,但实际上第一次完成时发现勾选后的选项在列表往下滑再滑回去后,状态没有保存 解决过程: 1)思考后 ...
- c++ 操作注册表
1. 注册表简介 注册表是为Windows NT和Windows95中所有32位硬件/驱动和32位应用程序设计的数据文件,用于存储系统和应用程序的设置信息.16位驱动在Winnt (Win ...
