我希望 LED3保持亮起7秒、然后在1秒振荡的情况下闪烁三次、然后移至 LED4。 我已经让 LED3保持7秒、然后转到 LED4、但我仍然不知道如何使它闪烁这三次。 (它是交通信号灯)。
代码:
;------------------------------------------------------------------
;这里是主循环
;------------------------------------------------------------------
MOV.w #0x0001、R5
MOV.w #0x001F、&P3DIR
bisw #MC0|MC1、&TA0CTL;定时器递增/递减
BIS.w #TACLR、&TA0CTL;清除计时器 TAR。
BIS.w #tassel__ACLK、&TA0CTL;使用 ACLK (32 KHz)。
BIS.w #ID0|ID1、&TA0CTL;8分频。
BIC.w #TAIFG、&TA0CTL;清除中断标志。
BIS.w #TAIE、&TA0CTL;启用定时器 TA0中断。
MOV.w #0x0001、&TA0CCR0
NOP
BIS.w #LPM3|GIE、SR
NOP
;中断。
TA0_ISR
cmp.w #TA0IV_TAIFG、&TA0IV;检查定时器是否溢出。
jnz not _correct_flag
CMP.w #0x0001、R5
JZ LED1;溢出。
CMP.w #0x0002、R5
JZ LED2
CMP.w #0x0003、R5
JZ LED3
CMP.w #0x0004、R5
JZ led4.
LED1
MOV.b #0x0001、&P3OUT;0000 0001 = BIT0
BIS.b #BIT1、&P3OUT
包含 R5
MOV.w #0x5000、&TA0CCR0
TI
LED2
MOV.b #0x0002、&P3OUT;0000 0010 = BIT1
包含 R5
MOV.w #0x5000、&TA0CCR0
TI
LED3
MOV.w #0x0004、&P3OUT;0000 0100 = BIT2
包含 R5
MOV.w #0x3800、&TA0CCR0
TI
LED4.
MOV.b #0x0008、&P3OUT;0000 10000 = BIT3
MOV.w #0x0001、R5
MOV.w #0x5000、&TA0CCR0
TI
不正确的标志
BIC.w #TAIFG、&TA0CTL;这是 ISR。 清除中断标志
TI
;------------------------------------------------------------------
;堆栈指针定义
;------------------------------------------------------------------
.global __stack_end
.sect .stack
;------------------------------------------------------------------
;中断矢量
;------------------------------------------------------------------
.sect ".reset"
短路复位
.sect ".int52"
.short TA0_ISR
.end