This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/MSP430G2553:有关如何实现中断按钮的问题

Guru**** 2599415 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/649226/ccs-msp430g2553-questions-on-how-to-implement-a-interrupt-push-button

器件型号:MSP430G2553

工具/软件:Code Composer Studio

下面的代码设置 了一个交通信号灯、从绿色开始10秒、 然后变为黄色(绿色和红色一起) 5秒、最后变为红色并持续5秒。 我想在代码中实现一个按钮中断、每分钟被识别一次、并用作一个交叉指示器。 按下按钮后将延迟1秒、然后转到黄色指示灯(绿色和红色)并从此处继续。

感谢您的任何帮助。

;时钟/计时器

         CLR.b DCOCTL (&D)

         MOV.b &CALBC1_1MHz、&BCSCTL1

         OR.w #DIVA_2、&BCSCTL1

         MOV.b #DCO0+DCO1、&DCOCTL

         MOV.b #LFXT1S_2、&BCSCTL3

         MOV.w #tassel_1 + MC_0 + TACLR + ID_3 + TAIE、&TA0CTL

         MOV.w #tassel_1 + MC_0 + TACLR + ID_3 + TAIE、&TA1CTL    ;ACLK、停止、清除 TAR

         MOV.w #CCIE、&TA0CCTL0;CCR0中断被启用

         MOV.w #9375,&TA0CCR0;

         MOV.w #CCIE、&TA0CCTL1;CCR0中断被启用

         MOV.w #3750、TA0CCR1

         MOV.w #CCIE、&TA0CCTL2

         MOV.w #5625、&TA0CCR2

; I/O

         CLR.b &P1OUT

         MOV.b #0xFF、&P1DIR

         BIC.b #BIT3、&P1DIR

         BIS.b #BIT3、&P1OUT

         BIS.b #BIT3、&P1IN

         BIS.b #BIT3、&P1REN

         BIS.b #BIT6、&P1OUT

         OR.w #MC_1、&TA0CTL

         MOV.w #GIE+LPM3、SR           ;转至 LPM 使能中断

JMP 跳转               

TIMERA0_ISR:

         XOR.b #BIT0、&P1OUT

         XOR.b #BIT6、&P1OUT

           TI

TIMERA01_ISR:

         ADD.w TA0IV、PC

         TI

         JMP 黄色

         JMP 红色

         TI

         TI

         TI

黄色:

         BIS.b #BIT0、&P1OUT

         TI

红色:

         XOR.b #BIT6、&P1OUT

         TI

     

loop:;轮询循环

         bit.b #BIT3、&P1IN

         JZ 步行

         BIC.b #BIT3、&P1OUT

步行:

         bit.b #BIT3、&P1IN

         jnz   循环

         BIS.b #BIT6、&P1OUT

         JMP 环路

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    您可以参考 MSP 代码示例以获取帮助。 下面是使用 GPIO 作为输入中断的示例代码。  

    ;-版权所有-、BSD_EX
    ;版权所有(c) 2014,德州仪器公司
    ;保留所有权利。
    ;
    ;以源代码和二进制形式重新分发和使用,无论是否修改
    ;只要
    满足以下条件;
    
    ;;;*源代码的重新分发必须保留上述版权
    ; 声明、此条件列表和以下免责声明。
    ;;*
    二进制形式的再发行必须复制上述版权
    ; 通知、本条件列表和中的以下免责声明
    ; 分发时提供的文档和/或其他材料。
    ;
    *德州仪器公司的名称和名称均不
    相同; 其贡献者可用于认可或推广衍生产品
    ; 未经特定的事先书面许可。
    ;
    本软件由版权所有者和贡献者“按原样”提供
    ;以及任何明示或暗示的保证,包括但不限于;
    对适销性和特定
    用途适用性的暗示保证不予承认。 在任何情况下,版权所有者或
    ;作者都不对任何直接、间接、偶然、特殊的、
    ; 惩罚性或必然的损害(包括但不限于
    :采购替代产品或服务;丧失使用、数据或利润;
    或业务中断)、但出于任何责任理论;
    无论是在合同中、严格的责任还是
    由于使用本软件而以任何方式产生的侵权行为(包括疏忽或其他)
    ;即使被告知可能会造成此类损害。
    ;
    
    ;
    MSP430代码示例免责声明
    ;
    MSP430代码示例是自包含的低级程序,通常
    以
    高度简洁的方式演示单个外设功能或器件功能。 为此,代码可能依赖于器件的加电默认
    值;
    在组合多个示例中的代码时,必须注意寄存器值和设置,如时钟配置和注意;以避免潜在的副作用
    。 有关 GUI 的信息,另请参见 www.ti.com/grace;
    有关外设配置的 API 函数库方法,请参见 www.ti.com/msp430ware。
    ;;--/
    版权--;*********
    
    ;MSP430FR243x 演示-来自 LPM3的 P1.3上的软件端口中断服务
    ;
    说明:P1.3上的高/低转换将第一次触发 P1ISR。
    ;在到达 P1ISR 时,设备退出 LPM3模式,并执行
    ;main()中包含切换 LED 的部分代码。
    ;
    ACLK =默认 REFO ~32768Hz,MCLK = SMCLK =默认 DCODIV ~1MHz
    ;
    MSP430FR2433
    ; --------
    ; /|\| |;
    || |;
    -|RST |;
    | |;
    /|\| |;
    -o--|P1.3 P1.0|->LED
    ; \|/| |;
    | |
    ;
    Cen Fang
    ; Wei Zhao
    ; Texas Instruments Inc.
    ;2013年9月
    ;使用 IAR 嵌入式工作平台 v6.20构建
    ;********
    #include 
    ;------------------------------------------------------------------
    RSEG CSTACK ;定义堆栈段
    ;-----------------
    RSEG 代码
    ;-----------------
    复位 MOV.w #SFE (CSTACK)、SP ;初始化 stackpointer
    MOV.w #WDTPW+WDTHOLD、&WDTCTL;停止 WDT
    
    设置 P1 BIC.b #BIT0、&P1OUT ;清除 P1.0输出
    BIS.b #BIT0、&P1DIR ;P1.0输出
    
    BIS.b #BIT3、&P1OUT ;将 P1.3配置为上拉
    BIS.b #BIT3、&P1REN ;P1.3上拉寄存器使能
    BIS.b #BIT3、和 P1IES ;P1.3低/高边沿
    BIS.b #BIT3、&P1IE ;P1.3中断被启用
    
    BIC.w #LOCKLPM5、PM5CTL0 ;解锁 I/O 引脚
    
    BIC.b #BIT3、&P1IFG ;P1.3 IFG 清除
    
    主循环 bis.w #LPM3+GIE、SR ;输入 LPM3并产生中断
    NOP ;用于调试
    XOR.b #BIT0、&P1OUT ;P1.0 =切换
    JMP 美因环路
    
    ;-----
    P1_ISR;端口1中断
    ;------------------------------------
    BIC.b #BIT3、&P1IFG ;清除 P1.3 IFG
    BIC.w #LPM3、0 (SP) ;从 LPM3出口下
    重提
    ;----------------------------------------------------------------
    常见的 INTVEC ;中断矢量
    ;-----
    org) RESET_VECTOR ; POR,外部 复位
    DW 复位
    org) Port1_vector ;端口1向量
    DW P1_ISR
    结束
    

    此致、

    冬季