请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:MSP430F5529 工具/软件:Code Composer Studio
我正在尝试创建一个基本程序、该程序将在按下 SW2时切换 LED2。 我认为设置正确、但我认为我的中断功能是问题所在。 你们能在这里发现我的错误吗? 提前感谢您。
;------------------------------------------------------------------ ;与 TI Code Composer Studio 一起使用的 MSP430汇编代码模板 ;;;;;;--------------- cdecls C、list、"msp430.h" ;包含设备头文件 ;----------------- .def 复位 ;导出程序入口点到 ;使链接器知道它。 .defSW2_ISR ;------------------------------------------------------ .text ;汇编到程序内存中。 保留 ;覆盖 ELF 条件链接 ;并保留当前部分。 .retainrefs ;并保留任何具有的段 ;对当前段的引用。 ;------------------------------------------------------------------ 复位: MOV.w #_STACK_END、SP ;初始化 stackpointer StopWDT: MOV.w #WDTPW|WDTHOLD、&WDTCTL;停止看门狗计时 器设置: bs.b#00000001b、&P1DIR;将 P1.0设置为输出(LED1) BIS.b #10000000b、&P4DIR ;将 P4.7设置为输出(LED2) BIC.b #00000001b、&P1OUT;关闭 LED1 BIC.b#10000000b、&P4OUT;关闭 LED2 BIC.b#00000010b、&P2DIR;将 P2.1设置为 SW1的输入 BIS.b#00000010b、&P2REN;在 P2.1上启用上拉电阻 BIS.b#00000010b、&P2OUT;正确的 IO BIC.b#00000010b、&P1DIR 所需;将 P1.1设置为 SW2 bs.b#00000010b、&P1REN 的输入;在 P1.1 bs.b#00000010b、&P1OUT 处启用上拉电阻器;正确的 IO 所需 BIS.w #GIE、SR ;启用全局中断 BIS.b#00000010b、&P2IE;从位1启用端口2中断 bis.b#00000010b、&P2IES;将中断设置为从高电平到低电平的调用 BIC.b#00000010b、&P2IFG;清除中断标志 BIS.b#00000010b、&P1IE;从位1启用端口1中断 bis.b#00000010b、&P1IES;将中断设置为从高电平到低电平的调用 bic.b#00000010b,&P1IFG;清除中断标志 ;--------------- ;这里的主循环 ;-------------------------------------------------------------------------- InfLoop: JMP$;在这里循环,直到中断 SW2_ISR: BIC.b #00000010b、&P1IFG ;清除中断标志 ChkSw: bit.b #02h、&P1IN ;检查是否按下 SW2 ;(P1IN 上的0000_0010) jnzLExit;如果不为零,则 SW2未按下 ;循环并再次检查 去抖:MOV.w #2000,R15 ;设置为(2000 * 10 cc) SWD20ms:Dec.w R15 ;减量 R15 NOP NOP NOP NOP NOP NOP NOP Jnz SWD20ms ;延迟? bit.b #00000010b、&P1IN ;验证 SW2是否仍然按下 jnzLExit;如果不是,请等待 SW2,按 “LEDON”: BIS.b #008h、&P4OUT ;打开 LED1 SW2WAIT:bit.b #002h、&P1IN ;测试 SW2 JZ SW2等待 ;等待 SW2被释放 BIC.b #008h、&P4OUT ;关闭 LED1 LExit: 重提 ;---------------------------------------------------------------- ;堆栈指针定义 ;----------------- .global __stack_end .sect .stack ;------------------------------------------------------------------------------------------------ ;中断矢量 ;----- .sect ".reset" ;MSP430复位向量 短路复位 .sect ".int20" ;P1.x 矢量 SW2_ISR .end
