工具/软件: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 环路