当前位置:首页 > 单片机 > 单片机
[导读]为了写一篇文章做铺垫--提醒着自己,,,,,,这两天一直在寻找#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口是一个整体,那就太好了,同时用中断检测多路,不怕信号同时到来,,,,,,


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

在微控制器领域,MSP430与STM32无疑是两颗璀璨的明星。它们各自凭借其独特的技术特点和广泛的应用领域,在市场上占据了重要的位置。本文将深入解析MSP430与STM32之间的区别,探讨它们在不同应用场景下的优势和局限...

关键字: MSP430 STM32 单片机

摘 要:为了能通过串口采集电能参数,完成一种基于串口的三相电能采集设备的研制,设计了电能采集设备的硬件和软件部分。其中硬件采用MCU+专用电能计量芯片的结构,结构简单;软件则用于实现输入、输出、三相电能参数的采集和串行通...

关键字: 电能采集 ATT7022B MSP430 串口

点击上方蓝字关注我们!楼宇自动化系统具备多种功能,可在工业和商业环境中提升工作者的舒适度和安全性。通过创新微控制器技术,这些功能可以变得更加智能和经济。TI 推出的MSP430™MCU 可以帮助您在楼宇自动化解决方案中,...

关键字: MCU MSP430 楼宇自动化

点击上方蓝字关注我们!楼宇自动化系统具备多种功能,可在工业和商业环境中提升工作者的舒适度和安全性。通过创新微控制器技术,这些功能可以变得更加智能和经济。TI 推出的MSP430™MCU 可以帮助您在楼宇自动化解决方案中,...

关键字: MCU MSP430 楼宇自动化

点击上方蓝字关注我们!楼宇自动化系统具备多种功能,可在工业和商业环境中提升工作者的舒适度和安全性。通过创新微控制器(MCU)技术,这些功能可以变得更加智能和经济。为设计出更出色的楼宇自动化解决方案,应选择合适的元件来实现...

关键字: MCU MSP430 楼宇自动化

点击上方蓝字关注我们!楼宇自动化系统具备多种功能,可在工业和商业环境中提升工作者的舒适度和安全性。通过创新微控制器(MCU)技术,这些功能可以变得更加智能和经济。为设计出更出色的楼宇自动化解决方案,应选择合适的元件来实现...

关键字: MCU MSP430 楼宇自动化

点击上方蓝字关注我们!让我们试想一下一种可以减少模拟组件数量并缩小电路板尺寸的设计。使用这种设计,您可以针对特定应用定制功能,并针对性能、功耗、尺寸和成本进行优化。现在,一个简单的MSP430™MCU就可以满足上述所有功...

关键字: MCU MSP430

作为光源,无论从发光效率、全彩色,还是寿命,都已取得了辉煌的成果,而且还在不断深化之中。LCD发明以来,背光源在不断地进步,由单色到彩色,由厚到薄,由侧置荧光灯式到平板荧光灯式。

关键字: 3寸TFT MSP430 驱动

液位测控仪是属于智能化仪器仪表的一种(指采用了微处理器的仪器仪表),其发展始于70年代。它是一种集测量与控制于一体的智能化产品,适用于石油化工、冶金、电力、制药、环保等行业中各种介质的液位测量。

关键字: MSP430 单片机 称重式液位仪

空间定向测试仪是一种应用非常广泛的电子测量仪器,尤其是伴随着微电子技术的发展,空间定向测试仪在车辆、舰船、飞行器等导航领域中的应用日趋成熟。

关键字: MSP430 超低功耗 空间定向测试仪
关闭
关闭