1804|0

3836

帖子

19

TA的资源

纯净的硅(中级)

楼主
 

MSP430F5529的P1P2口作中断功能寄存器配置 [复制链接]

P1、P2口作中断功能寄存器配置(涉及的x只能为1或者2)
1、PxIV,Px 口中断向量寄存器(仅低5位到低1位为有效位)
中断向量值  中断源              中断标志        中断优先级
00h         无中断
02h         Px.0口中断           PxIFG.0         最高
04h         Px.1口中断           PxIFG.1
06h         Px.2口中断           PxIFG.2
08h         Px.3口中断           PxIFG.3
0Ah         Px.4口中断           PxIFG.4
0Ch         Px.5口中断           PxIFG.5
0Eh         Px.6口中断           PxIFG.6
10h         Px.7口中断           PxIFG.7         最低
2、PxIES,Px口中断触发沿选择寄存器
0        上升沿PxIFGx标志位置位
1        下降沿PxIFGx标志位置位
3、PxIFG,Px口中断标志寄存器
0  无中断
       1  有中断
4、PxIE,Px 口中断使能寄存器
0  关闭相应端口中断
   1  使能相应端口中断
这里顺便提一下IO中断函数的写法:
#pragma vector=PORTx_VECTOR
__interrupt void 自定义中断函数名(void)
{
//中断服务函数
}
P1、P2口作中断功能使用举例
说明:在此例程中,先打开LED1,关闭LED2,每当检测到按键的下降沿便会进入中断,中断的服务程序是将LED1和LED2状态取反。其实,次程序存在误触发,如果知道要进行哪个IO口中断的话,在执行中断服务程序之前可以进行误触发检测(即延时并检测按键是否按下,不过,这个好像只适合下降触发触发)。
#include
void main()
{
      WDTCTL = WDTPW + WDTHOLD; // Stop WDT
     
      P8DIR |= BIT2 + BIT1;//设置P8.1、P8.2为输出
      P8OUT |=  BIT2;//P8.2为输出为1
      P8OUT &= ~BIT1;//P8.1为输出为0
      _EINT();            //开启总中断
      P1DIR &=~BIT7; //设置P1.7为输入
      P1OUT |= BIT7; //上拉,有时候不上拉可以,有时候不可以,所以最好上拉
      P1REN |= BIT7; //设为输入时必须加上此寄存器配置
      P1IE  |= BIT7; //打开P1.7口中断
      P1IES &=~BIT7; //触发方式为下降沿
      P1IFG &=~BIT7; //清中断标志位
     
      LPM3;//进入低功耗3
}
#pragma vector = PORT1_VECTOR
__interrupt void Port1(void)
{
      P8OUT ^= BIT2 + BIT1;//P8.1、P8.2为输出取反
      P1IFG &=~BIT7;  //清中断标志位
}

 
点赞 关注

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表