当前位置:首页 > 单片机 > 单片机
[导读]为了写一篇文章做铺垫--提醒着自己,,,,,,这两天一直在寻找#pragmavector=PORT1_VECTOR__interruptvoidP1_Interrupt()//P1口中断函数{}对于这两句话的解释,最起码让自己感觉能说服自己看了好多后自己的理解#pragmavec

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

这两天一直在寻找

#pragmavector=PORT1_VECTOR__interruptvoidP1_Interrupt()//P1口中断函数{}

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

看了好多后自己的理解

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

那么
#pragmavector=PORT1_VECTOR就应该这样理解告诉编译器下面有一个P1口的中断服务函数,你应该把这个中断函数的地址放在

__interrupt //告诉编译器这是个中断服务函数

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

,,,,,,,,,

正事,

对于引脚中断,学过51的都知道无非就是打开中断,,然后选择触发方式,然后写中断函数,然后再中断函数里清除中断标志(假如说.它不自动清除中断标志的话)

P1.2口有一的下降沿P1.0口的引脚反转

#include"io430.h"voidmain(void){//StopwatchdogtimertopreventtimeoutresetWDTCTL=WDTPW+WDTHOLD;P1DIR"=BIT0;//p1.0输出模式P1IE|=BIT2;//使能p1.2中断P1IES|=BIT2;//下降沿触发P1IFG&=~BIT2;//清除p1.2中断,,感觉可有可无,加上更显得代码很完善__enable_interrupt();while(1){}}#pragmavector=PORT1_VECTOR__interruptvoidP1_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"voidmain(void){//StopwatchdogtimertopreventtimeoutresetWDTCTL=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){}}#pragmavector=PORT1_VECTOR__interruptvoidP1_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口是一个整体,那就太好了,同时用中断检测多路,不怕信号同时到来,,,,,,


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭