IO中断的使用
1.寄存器
PxIE IO中断使能寄存器
PxIES 中断触发边沿选择。0上升沿,1下降沿
PxIFG 中断标志位寄存器。事件发生后被置1,响应后需要手动置0
寄存器的使用方法与day1相同,不再赘述
2.中断函数的写法
#pragma vector=PORT1_VECTOT;
//#pragma为系统编译指令;vector=后加中断向量地址的宏定义,如定时器TIMER0_A1_VECTOR;
__interrupt void PORT1(void)
//__interrupt中断服务关键字(前面是两道下划线);PORT1为函数名,可自定义
{
//用户代码
}
3.按键通过中断控制LED
根据按键S2的状态,控制绿色LED灯。每按下S2一次,LED改变一次亮灭状态。
#includeint main()
{
WDTCTL = WDTPW | WDTHOLD;
P1DIR = BIT6;
P1REN = BIT3;
P1OUT = BIT3;
P1IE = BIT3;//开P1.3中断
P1IES = BIT3;//P1.3中断触发边沿选择下降沿,0为上升沿,1为下降沿;
P1IFG &= ~BIT3;//P1.3中断标志位置0
_BIS_SR(GIE);//开总中断
while(1)
{
__no_operation(); //什么都不做
}
}
#pragma vector=PORT1_VECTOR
__interrupt void PORT1(void)
{
P1OUT ^= BIT6;
P1IFG &= ~BIT3;//中断标志位置0
}
完成GPIO初始化后,务必要使用_BIS_SR(GIE)指令来开总中断,否则不会相应中断请求。
关键字:MSP430G2553 中断学习 初始化设置
引用地址:
MSP430G2553学习笔记 DAY2 中断学习及初始化设置
推荐阅读最新更新时间:2024-11-08 17:31
zigbee学习之路(四):按键控制(中断方式)
一.前言 通过上次的学习,我们学习了如何用按键控制led,但是在实际应用中,这种查询方式占用了cpu的时间,如果通过中断控制就可以解决这个问题,我们今天就来学习按键控制的中断方式。 二.原理分析 传统的51单片机如果要使用中断,也要对相应的寄存器进行控制,cc2530芯片也不例外,而且相对复杂。需要配置多个中断寄存器,下面来一一介绍。 这个寄存器是来控制端口0中断使能的,要开启中断,应设为1. 这个是配置各种中断使能的,我们只需要配置P0IE. 这个是配置中断触发方式的,根据上次的按键原理图,我们应该选择低下降沿触发模式。 中断状态标志位,当中断没有发生或者结束时,应将标志位置0. 三.程序代码 #includ
[单片机]
MSP430G2553测试程序(呼吸灯)
//MSP430G2553 呼吸灯演示程序 - 使用Timer_A,Up Mode, DCO SMCLK // // 介绍: 该程序利用TIMER A 的 UP模式 在P1.6脚产生PWM输出 // 将CCR0设置为1500来定义PWM的周期,利用循环不断改变CCR1的值, // 实现利用改变PWM的占空比来改变LED亮度. // ACLK = na, SMCLK = MCLK = TACLK = default DCO // // MSP430G2553 // ----------------- // /|| XIN|- // | | | // --|RST XOUT|- // | | // | P1.6/TA1|-- CCR1
[单片机]
MSP430G2553测试程序(状态机检测按键)
//原始状态P1.6亮,P1.0暗,利用状态机进行按键检测,按下并释放的瞬间P1.0翻转,P1.6翻转 // // MSP430G2xx3 // ----------------- // /|| XIN|- // | | | // --|RST XOUT|- // P1.3|KEY P1.6|-- LED // | P1.0|-- LED // Built with IAR Embedded Workbench Version: 5.40 / // Timer A0 interrupt service routine #pragma vector=TIMER0_A0_VECTOR
[单片机]
我学MSP430G2553的心得之一
学习MSP430G2553,已有7天有余。个人觉着:低功耗是其最大亮点。为此可谓是处心积虑。因而中断/低功耗模式在430的应用中便显得千娇百媚,楚楚动人!这里,先跟大伙看下这个中断的情况。 #include msp430g2553.h #include in430.h int main(void) { WDTCTL = WDTPW + WDTHOLD; //禁止看门狗计数 P1DIR=BIT0+BIT1;//P1.01设置为输出,P1.4/5是输入 P1OUT=BIT0+BIT1+BIT4+BIT5;//P1.01为高,P.4/5上拉 P1REN=BIT4+BIT5;//P1.4上拉使能
[单片机]
MSP430G2553 频率、占空比、脉冲宽度测量
测量频率、占空比、脉冲宽度等信号数字量应该算是430中比较简单的一个实验,而且幸运的是TI官方的示例程序中有相关的内容。 传送门: https://dev.ti.com/tirex/explore/node?devices=MSP430G2553&node=AFB5DJx-bgFTI4ERhplnuw__IOGqZri__LATEST https://dev.ti.com/tirex/explore/node?devices=MSP430G2553&node=AFB5DJx-bgFTI4ERhplnuw__IOGqZri__LATEST 进行测量的重点是对信号上升沿和下降沿的捕获,这一点利用定时器的捕获功能就可以实现。
[单片机]
STM32单片机----外部中断EXTI学习
可屏蔽中断和不可屏蔽中断: 按照是否可以被屏蔽,可将中断分为两大类:不可屏蔽中断(又叫非屏蔽中断)和可屏蔽中断。不可屏蔽中断源一旦提出请求,CPU必须无条件响应,而对可屏蔽中断源的请求,CPU可以响应,也可以不响应。CPU一般设置两根中断请求输入线:可屏蔽中断请求INTR(Interrupt Require)和不可屏蔽中断请求NMI(NonMaskable Interrupt)。对于可屏蔽中断,除了受本身的屏蔽位控制外,还都要受一个总的控制,即CPU标志寄存器中的中断允许标志位IF(Iinterrupt Flag)的控制,IF位为1,可以得到CPU的响应,否则,得不到响应。 GPIO口与EXTI外中断的映像图:
[单片机]
MSP430G2553ADC要点总结
一、 ADC10的结构 ①10位ADC内核 ADC10内核是一个10位的模/数转换器,并能够将结果存放在转换存储器中。该内核使用两个可编程的参考电压(VR+和VR-)定义转换的最大值和最小值。**当输入模拟电压等于或者高于VR+时, ADC10输出满量程值03FFH,当输入电压等于或小于VR-时, ADC10输出0。**输入通道和参考电压定义在转换控制存储器中。转换结果可以是直接的二进制或者是补码格式。当使用二进制时转换公式是: N_ADC=1023×(V_IN-V_(R-))/(V_(R+)-V_(R-) ) 控制寄存器 : ADC10CTL0和ADC10CTL1来配置 开关控制 : ADC10ON 除少数例外,AD
[单片机]
LCD实验学习笔记(八):中断
s3c2440有60个中断源(其中15个为子中断源)。 31个32位的通用寄存器,6个程序状态寄存器。有6种工作模式(系统/用户模式,快中断模式,管理模式,数据访问中止模式,中断模式,未定指令中止模式)。每种模式都有16个通用寄存器和1(或2)个程序状态寄存器。 R15(pc)是程序计数器,R14(lr)是连接寄存器,在异常时自动保存pc备份,r13(sp)是栈指针寄存器。 CPSR是当状程序状态寄存器。其 为控制位, 为中断禁止位, 为快中断禁止位, 为CPU状态位, 为工作模式位。, 程序状态寄存器(PSR)的F位 设为1,禁用快速中断(FRQ)。 程序状态寄存器(PSR)的I位 设为1,禁用普通中断(IRQ)。 SPSR程序
[单片机]