为了写一篇文章做铺垫--提醒着自己,,,,,,

这两天一直在寻找

#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引脚中断的更多相关文章

  1. 关于STM32的外部引脚中断的问题

    今天想用自己以前的比较干净的工程模板做一个东西,,,,,,,在添加上引脚中断的时候,,突然想知道自己配置的中断优先级是否正确执行,,,,, 以前刚学习32的时候测试过是可以的,,不过今天发现了一个大问 ...

  2. TI CC2541的引脚中断.

  3. MSP430:中断简介

    (5).中断应用程序举例(外部中断): void interrupt_initial() { P1DIR&=~BIT7;      //P1.7为输入 P1IE|=0x80;      //P ...

  4. MSP430单片机的中断

    这篇文章是从网上转载过来的,原文章地址:http://www.21ic.com/jichuzhishi/mcu/questions/2012-12-21/154794.html 中断是MSP430微处 ...

  5. 关于MSP430中断机制

    中断很大程度上体现了一款单片机的性能,从这一点将MSP430在中断方面做得很不错,主要是提供了非常丰富的中断源,基本的有IO中断,定时器中断和一些接口中断(SPI,UART,I2C)等等.     现 ...

  6. MSP430常见问题之IO端口类

    Q1:请问430 的I/O 中断能不能可靠的响应60ns 的脉冲信号, 就是来了一个60ns 的脉冲,430 的中断会有丢失吗?A1:端口支持的最高8M的时钟,无法响应这么快的频率. Q2:430是3 ...

  7. STM32 GPIO外部中断总结

    一.STM32中断分组: STM32 的每一个GPIO都能配置成一个外部中断触发源,这点也是 STM32 的强大之处.STM32 通过根据引脚的序号不同将众多中断触发源分成不同的组,比如:PA0,PB ...

  8. STM32F0xx_EXIT中断配置详细过程

    Ⅰ.概述 EXIT外部中断在使用到按键或者开关控制等应用中比较常见,低功耗中断唤醒也是很常见的一种.因此,EXIT在实际项目开发中也是比较常见的一种. STM32F0中外部中断EXIT属于中断和事件的 ...

  9. Msp430概述

    总结一下MSP430给我的印象吧,感觉他就是一个迷你型的arm 1:MSP430采用的是精简指令,他只有27条核心的汇编指令,这一点和arm相同,arm同样是采用精简指令,而80c51采用的是冗余指令 ...

随机推荐

  1. php.ini 不生效问题extension

    date.timezone = PRC extension_dir = "ext"

  2. Android-Service生命周期

    Service的基本概念,以及Service的生命周期: 一.Service的基本概念: 一个Service就是应用程序的组件,可以在后台长期跑,或者是为其他的应用提供功能上的支持.Service一般 ...

  3. smarty模板原理

    smarty模板原理   模板主要是用来让前端和后端分离的,前台页面只是一个前台页面,后台页面用php代码写逻辑,写完逻辑拿到前台显示. 一.写法 一般需要以下:写3个页面: 1.显示页面aa.htm ...

  4. Arduino 报错总结

    Arduino出现avrdude: stk500_getsync(): not in sync: resp=0x00 )首先检查是否选择了合适的板子,选错主板型号也会造成上述错误 )重新安装驱动,换个 ...

  5. hdu 2202 最大三角形 (凸包)

    最大三角形 Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

  6. java代码性能优化总结(转载)

    原文链接:http://developer.51cto.com/art/201511/496263.htm 前言 代码优化,一个很重要的课题.可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改 ...

  7. 解决 webx.ml 中The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path 问题

    在Eclipse 的项目  上,点击鼠标右键 选中 ,并 Finish 即可.

  8. Ubuntu 安装snmp报Unlinked OID in IPATM-IPMC-MIB: marsMIB ::= { mib-2 57 }错误

    首先运行下面的脚本(脚本摘自:http://www.th7.cn/system/lin/201304/38800.shtml) #!/bin/bashfor i in /usr/share/mibs/ ...

  9. 统计学习方法 AdaBoost

    提升方法的基本思路 在概率近似正确(probably approximately correct,PAC)学习的框架中, 一个概念(一个类),如果存在一个多项式的学习算法能够学习它,并且正确率很高,那 ...

  10. Device Tree Usage( DTS文件语法)

    http://elinux.org/Device_Tree_Usage Device Tree Usage     Top Device Tree page This page walks throu ...