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采用的是冗余指令 ...
随机推荐
- 安装和部署ZkeaCMS
ZkeaCMS是基于EasyFrameWork,使用ASP.NET MVC4开发的开源CMS. ZkeaCMS一个内容管理软件(网站).ZkeaCMS不仅只是管理内容,更是重新定义了布局.页面和组件, ...
- Diagramming for WinForms 教程一(读取图元数据)
1,新建“Visual c#” Windows窗体应用程序. 2,从“工具箱”的“Diagramming”选项卡下,托出“DiagramView”控件到Form1上.控件的"Name&quo ...
- Ubuntu下搭建Android编译环境
Ubuntu一台新机器的一些环境搭建新增一个3TB的硬盘,挂载方法,大于2TB的得parted来进行分区1: sudo parted /dev/sda2: mklabel gpt3: unit TB4 ...
- iOS设计模式-Block实现代理的逻辑
在A页面,点击跳转到B页面,B页面操作完,回到A页面,并刷新A页面的内容.典型的例子,就是在一个列表里,点击新增,跳到新增页面,新增完,把数据传回给列表页,并刷新列表页里的内容. 这个,我平时一般是通 ...
- 写shell脚本速查笔记
linux shell脚本的语法蛋疼,而且对于java开发人员来说又不常用,常常是学了一次等到下次用的时候又忘记了.因此制作这个速查笔记,用于要写shell脚本时快速回忆&速查. 获取当前脚本 ...
- 在sqlserver存储过程中给in参数传带逗号值的办法,如传'1','2','3'这样的
最近在一项目修改中,要在存储过程中给in参数传值,语句写的也对,但怎么执行都得不出结果,如果把这语句直接赋值.执行,却能得出结果,很是奇怪,如: 直接执行select schoolname from ...
- 剑指offer题目51-60
面试题51:数组中重复的数字 public class Solution { public boolean duplicate(int numbers[],int length,int [] dupl ...
- spring默认启动位置以及contextConfigLocation设置源码解析
这几天在看spring的源码,涉及到spring启动位置的部分,下面就看看spring到底是从哪儿开始加载的.本文使用的是spring3.0M3 首先spring的加载会借助一个监听器ContextL ...
- c++之socket,阻塞模式
这里描述下socket的阻塞模式: 首先,socket有几个函数 socket() 创建socket bind() 绑定socket到一个地址 listen() 开启soket监听 accept() ...
- 【Java学习笔记】<集合框架>对字符串进行长度排序
package 测试; import java.util.Comparator; public class ComparatorByLength implements Comparator { //定 ...
