MSP430引脚中断

发布者:幸福之舞最新更新时间:2016-12-19 来源: eefocus关键字:MSP430  引脚中断 手机看文章 扫描二维码
随时随地手机看文章

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

这两天一直在寻找

#pragma vector = PORT1_VECTOR
__interrupt void P1_Interrupt()//P1口中断函数
{
  
}

对于这两句话的解释,最起码让自己感觉能说服自己

看了好多后自己的理解

#pragma vector = PORT1_VECTOR
通俗来讲这句话是告诉C编译器,你下面的函数是P1口的中断函数,P1口有中断发生时就进入下面这个函数
__interrupt void P1_Interrupt()//P1口中断函数
{
  
}
那期间到底发生了什么
其实MSP430内部有一个中断向量表----中断向量表实际就是保存中断函数入口地址的存储单元空间
假如说,下面是表的一段,,,,假如说,,,,,
[object Object]

 

那么
#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(1)
  {
    
  }
}#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(1)
  {
    
  }
}#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口是一个整体,那就太好了,同时用中断检测多路,不怕信号同时到来,,,,,,


关键字:MSP430  引脚中断 引用地址:MSP430引脚中断

上一篇:单片机按键消抖分析
下一篇:keil中更改代码字体,颜色等

推荐阅读最新更新时间:2024-03-16 15:26

TinyOS在MSP430F2618上移植(三)之LCD
本节记录串口TFT LCD在TinyOS上的移植。1.8寸LCD显示屏采用ST7735控制器,使用SPI接口实现控制、显示数据的传输。 总体架构:分为3层结构,最底层位于相应的platforms中chips目录下,实现在特定平台上控制引脚连接,SPI接口连接,以及SPI配置。中间层实现了LCD基本操作,LCD初始化,提供给上层模块连接的接口,以及资源管理。最上层提供应用层模块连接的接口。 在本架构中,中间层和最高层提供相同的接口LCD16,该接口提供的实现方法有english_string,clear,single_color等,以及写完成事件writeDone。不同的是在最高层提供的接口LCD16中,并没有真正实现接口
[单片机]
基于MSP430行驶车辆检测器的设计
0  引言 近年来,车辆检测器作为交通信息采集的重要前端部分,越来越受到业内人士的关注。鉴于公路交通现代化管理和城市交通现代化管理的发展需要, 对于行驶车辆的动态检测技术——车辆检测器的研制在国内外均已引起较大重视。车辆检测器以机动车辆为检测目标,检测车辆的通过或存在状况,其作用是为智能交通控制系统提供足够的信息以便进行最优的控制。目前,常用的行驶车辆检测器主要有磁感应式检测器,超声波式检测器,压力开关检测器,雷达检测器,光电检测器以及视频检测器等,而环形线圈电磁感应式车辆检测器具有性能稳定、结构简单、检测电路易于实现、成本低、维护量少、适应面广等优点,市场应用范围最广。目前我国实际用于高速公路和城市道路的车辆检测器几乎全部是从
[单片机]
基于<font color='red'>MSP430</font>行驶车辆检测器的设计
MSP430单片机个人学习笔记
上点复位信号 :POR(Power On Reset) 上电清除信号 :PUC (Power Up Clear) CPU产生条件: POR产生时 启动看门狗时,看门狗定时器计满。 看门狗写入错误安全参数值 片内Falsh写入错误的安全参数 POR与PUC都会引发复位 复位后初始状态: /RST引脚被设置为复位模式 所有I/O引脚被设置为输入 外围模块被初始化 状态寄存器SR复位 看门狗激活,进入工作模式 程序计数器PC装入0xFFFEH处的地址,从此地址开始执行程序。 内部RC振荡器 系统复位后内部RC振荡器磨人为系统时钟,但精度比较差,不适合使用诸如串口通信场合波特率会随温度和电压变化而变化,不建议使用(约800
[单片机]
<font color='red'>MSP430</font>单片机个人学习笔记
MSP430Ware使用笔记 初始化XT1
1.平台说明 MSP430F5438 2.为什么使用MSPWare。 由于工作原因,学校中多使用STM32,STM32的DriverLib比较方便使用。初学MSP430重新回到了操作寄存器的时代,稍稍有点不适应。后来发现MSP也有DriverLib只是使用的人不多,就这范例文档一点一点摸索,并和寄存器操作相比较。经过了一段时间的努力也就熟悉了。 3.嵌入式系统编程趋势 个人认为,DriverLib会成为主流,这样可以缩短MCU使用的难度,在Flash和RAM容量不断提高的今天,不必去死抠每一个函数,如何更快上手MCU解决实际问题才是王道。刚刚推出市场的新MCU也具备DriverLib,缩短上手时间,更快占领市场。
[单片机]
基于MSP430为控制核心的设计方案
  本文出于对能源消耗及智能化水平的考虑,传统的路灯控制方式已不能满足社会发展的需求。在分析了单片机MSP430的性能优势之后,从绿色能源、节约能源和性价比的角度出发,提出了一个基于MSP430为控制核心的设计方案。单片机在规定亮灯时间内检测背景光强度,若背景光强度较弱启用热释电红外传感器开始探测人体和车辆发出的红外信号。当有人或车辆进入传感器探测区域,单片机输出脉宽调制信号PWM,并根据背景光强度调整LED路灯的亮度,选用合适的占空比来控制恒定电流源的工作电流来保证道路的可见度,从而完成对LED路灯的智能化控制。实验仿真结果充分证明了系统方案的可行性、高效性和稳定性。   近年来,随着经济的高速发展和汽车的逐渐普及,城市的交
[单片机]
基于<font color='red'>MSP430</font>为控制核心的设计方案
msp430的一些常用的C语言控制程序---ZLG7289
/**********************************************************/ //MSP430高级实验开发组件 - ZLG7289键盘显示组件示例程序 //时钟设置: ////ACLK=N/A,MCLK=SMCLK=default(DCO~800k) //硬件连接: //// MSP430 Broad ZLG7289 Broad //// ------------------ ------------------ //// | VCC | ------ | VCC | //// | P65 | ------ | CS
[单片机]
msp430f149通过蓝牙HC-05与手机通讯
前面一篇实现蓝牙HC-05、06与单片机的连接及与手机通信的总结中详细介绍了蓝牙与STC系列MCU的连接与配置,这次将msp430f149通过UART1与蓝牙HC-05连接,并实现与手机通信作简单总结。 通信效果:发送一段字码,蓝牙接收到后自动返回。 msp430f149是一款比较常用的16位单片机,拥有两个串口模块,UART0(RXD:P11,TXD:P22)和UART1(RXD:P37,TXD:P36)。通常UART0较为常用,可用作BSL下载,或用作串口(蓝牙)通信。最近试了下UART1,觉得将他用于蓝牙通信非常合适。 1、端口连接 端口连接依然是差分连接,如下图: 2、HC-05基本配置 这里不详细说明,
[单片机]
<font color='red'>msp430</font>f149通过蓝牙HC-05与手机通讯
单片机MSP430精准配置高速串口波特率的方法
在实际项目大批量生产调试设备时,笔者发现同样版本的程序在不同设备上运行时效果不一致,一部分设备串口通信正常,另外一部分串口通信不正常。通过示波器对多个设备的串口波特率及系统时钟频率测试,发现不同设备之间的系统时钟频率及波特率存在差异,与理论值不一致,用示波器测试出的系统时钟频率及波特率与理论值偏差较大。由于系统时钟频率的偏差导致波特率设置值超过了串口所允许的最大误差值,故而导致串口通信失败。其根本原因是系统的时钟频率会随环境温度、电压或其他因素变化。 1 原因分析 在异步通信中,波特率是很重要的指标,表示为每秒传送二进制数码的位数,反映了异步串行通信的速度。MSP430的波特率发生器使用一个分频计数器和一个调整器来构成
[单片机]
单片机<font color='red'>MSP430</font>精准配置高速串口波特率的方法
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

更多每日新闻
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved