P1、P2端口上的每个管脚都支持外部中断。P1端口的所有管脚都对应同一个中断向量(Interrupt Vector),类似的,P2端口的所有管脚都对应另一个中断向量;通过PxIFG寄存器来判断中断来源于具体哪个管脚。
相关的寄存器如下表所示。
Register | Short Form | Register Type | Initial State |
Interrupt Flag | PxIFG | Read/write | Reset with PUC |
Interrupt Edge Select | PxIES | Read/write | Unchanged |
Interrupt Enable | PxIE | Read/write | Reset with PUC |
PxIFG:中断标志,1表示有中断事件待处理
PxIES:中断边沿选择,0表示上升沿触发,1表示下降沿触发
PxIE:GPIO中断使能,0表示禁用,1表示使能
程序示例
利用板上S2按键控制LED1灯闪烁,每按下一次,LED1灯闪烁一次。该程序还缺少按键消抖的功能。(G2 LaunchPad Rev1.5上P1.3没有连接电容及上拉电阻)
1 #include "io430.h"
2
3 #define LED1 BIT0
4 #define PUSH2 BIT3
5
6 //function declarations
7 void delay(void);
8
9 void main(void)
10 {
11 // Stop watchdog timer to prevent time out reset
12 WDTCTL = WDTPW + WDTHOLD;
13
14 //set P1.3 to input with pullup
15 P1OUT = 0;
16 P1OUT |= PUSH2; //initialize the pullup state
17 P1REN |= PUSH2; //enable internal pullup
18
19 //set P1.0 to output
20 P1DIR |= LED1; //P1.0 out to LED1, P1.3 remains input for PUSH2 button
21
22 //set the interrupt registers
23 P1IES |= PUSH2; //select high -> low transition
24 P1IFG &= ~PUSH2; //clear the flag for P1.3 before enabling the interrupt,
25 // to prevent an immediate interrupt
26 P1IE |= PUSH2; //enable interrupt for P1.3
27
28 __enable_interrupt(); //turn on the interrupts
29
30 while(1)
31 {
32 }
33
34 }
35
36 void delay(void)
37 {
38 volatile unsigned int i;
39 for(i = 0; i < 50000; i++);
40 }
41
42 //interrupt service routines
43 #pragma vector = PORT1_VECTOR
44 __interrupt void P1_ISR(void)
45 {
46 if((P1IFG & PUSH2) == PUSH2)
47 {
48 P1IFG &= ~PUSH2; //clear the interrupt flag
49
50 P1OUT |= LED1; //turn on LED1
51 delay();
52 P1OUT &= ~LED1; //turn off LED1
53 }
54 else
55 {
56 P1IFG = 0;
57 }
58 }
上一篇:MSP430 G2553 基本时钟模块+ (Basic Clock Module+)
下一篇:MSP430 G2553 LaunchPad设置GPIO
推荐阅读最新更新时间:2024-11-11 11:36
推荐帖子
- 招人共同组建团队,不是外包,月五万,招有志者,共同创业,知识转化为金经,你不要看不起我们
- 团队公开所有源码,和调试技术,包括财务,所有的利润除去费用后,全属个人成员,优秀者我们重用招聘要求:* 热爱旭日TOP团队,坚信旭日TOP团队会象WinRAR那样装入每一台电脑!* 会做人,能做事,有敬业精神* 有五年以上C++编程工作经历,练VisualC++编程,有上万行代码的项目编程经验* 熟练使用常用的OD或CE调试工具有游戏反调试经* 熟练使用常用的反编译工具,具有一定的逆向分析能力*了解pe
- tsfllf 嵌入式系统
- EEWORLD大学堂----高速电机的研究与开发
- JFET 工控电子
- 请教一个CCS6.2,调用汇编的出错的问题
- 我在ADC初始化程序里加了一句汇编指令,asm(RPT#10||NOP);可是编译一直显示有错误,但我把该指令改为asm(”NOP);编译可以通过,但会有警告。实在不知道错误出在哪里了,有没有大神能指点一下啊,下面是出错的截图。初始化程序:voidInitAdc(void){externvoidDSP28x_usDelay(Uint32Count);//TopoweruptheADCtheADCENCLKbit
- sizumiyazhao DSP 与 ARM 处理器
- 【ACM32G103RCT6开发板测评】+ RTC测试
- 测试ACM32G103RCT6的RTC时钟,设置和读取日期时间,串口和OLED显示。一、RTC时钟内部框图1.1、主要特性可计算00~99年之间的秒、分、时、日、周、月、年BCD时间显示自动闰年调整数字校准功能:通过调整最小时间单位(最大可调精度0.95ppm)来进行日历校准,调校后理论精度+/-0.477ppm周期唤醒中断闹钟功能可从管脚输出XTLF时钟信号供用户校准RTC计时器部分不复位2路输入上下沿(侵入)时间戳
- TL-LED 国产芯片交流
- 出ST官方的STM8和STM32F0开发板,送几本书
- 不定期清理一下,现在用不到的都出了板子基本都没用过,都只通了一下电下面的书大多都是全新的,付邮费送,邮费一般是首重10块,超1KG5块哦了,洗洗睡,明天还要继续搬砖下面是淘宝链接出ST官方的STM8和STM32F0开发板,送几本书楼主,你好!请问书籍是送的吗?如果可以的话,我想要以下几本:1、ARMCortex-M0从这里开始2、模拟电子技术3、EAGLE电路原理图与PCB设计方法及应用4、嵌入式系统原理与实践会不会太贪心了!?谢谢!------------
- 石玉 淘e淘
- 动手学深度学习(八):计算机视觉
- #(一)图像增广对图像进行随机变化(翻转和裁剪)能够扩大训练集的规模也能减少模型对某些属性的依赖,提高泛化能力.`torchvision.transforms`模块提供了翻转和裁剪的方法-`RandomHorizontalFlip()`50%几率使得图像向左或向右翻转-`RandomVerticalFlip()`50%几率使得图像向上或向下翻转-`RandomResizedCrop((200,200),scale=(0.1,1),ratio=(0.5,2))`
- EliorFoy 嵌入式系统
设计资源 培训 开发板 精华推荐
- 用于仪表的 8/10/12/14 位、1 通道 DAC
- LT1086CM 高效率双电源的典型应用
- 无线充电电动牙刷
- 自适应同步整流控制器SRK1000、配有逻辑电平SR MOSFET的反激式转换器演示板
- 使用 Diodes Incorporated 的 ZR78L052 的参考设计
- 使用 ROHM Semiconductor 的 BU4843 的参考设计
- NCV33072DR2G高阻差分放大器典型应用
- 用于无线局域网的 1.2V DC 至 DC 单路输出电源
- LTM4650EY 1.2V 和 1V 输出 DC/DC 模块稳压器的典型应用电路
- STP16CP05TTR低压16位恒流LED灌电流驱动器典型应用原理图