📄 复件 msp430f415阀门控制汇编原码.txt
字号:
bic.b #0FFh,&P6SEL ;I/O
bic.b #0ffh,&P6DIR ;P6.1/6.0 in
bis.b #074h,&P6DIR ;P6.5/6.4/6.3/6.2 out
bic.b #074h,&P6OUT ;输出0
;----------------------------------------------------------
SetupFLL bis.b #XCAP10PF,FLL_CTL0
nop
nop
nop
nop
nop
SetupBT bic.b #0ffh,BTCTL
bis.b #BT_fLCD_31K,BTCTL
nop
SetupLCD bic.b #0ffh,LCDCTL
bis.b #LCDSG0_1+LCD4MUX+LCDON,LCDCTL
bis.b #LCDSON,LCDCTL
bis.b #0FCh,&P5SEL
SetupLCDM bic.b #0ffh,&LCDM1
bic.b #0ffh,&LCDM2
bic.b #0h,&LCDM3
bic.b #0h,&LCDM4
bic.b #0h,&LCDM5
bic.b #0h,&LCDM6
bic.b #0h,&LCDM7
bic.b #0h,&LCDM8
nop
/////////////////////////////////////////////
/*阀门初试状态S0的设定*/
SetupS0 //Init_state,(开A关B)/B开A关/A开B开
call #Disp0
OpenA_S0 bit.b #AOpened,&P3IN ;检测A的状态
jnz CloseB_S0 ;A已开,关B
bis.b #OpenA,&P3OUT ;A未开,开A
call #DELAY2 ;延时10秒
bit.b #AOpened,&P3IN ;检测A的状态
jz S0_2S_A ;A未开,延时等待
bic.b #OpenA,&P3OUT ;A已开,清除OpenA
jmp CloseB_S0 ;关B
S0_2S_A call #DELAY2S ;延时2秒
bit.b #AOpened,&P3IN ;检测A的状态
jz AlarmA_S0 ;A未开,A报警
bic.b #alarm_A,&P6OUT ;A已开,清除alarm_A
bic.b #OpenA,&P3OUT ;清除OpenA
jmp CloseB_S0
AlarmA_S0 bis.b #alarm_A,&P6OUT ;A报警
jmp S0_2S_A ;跳转再次检测A状态
CloseB_S0 bit.b #BClosed,&P2IN ;检测B的状态
jnz SetupS0_1 ;B已关,跳转
bis.b #CloseB,&P2OUT ;B未关,关B
call #DELAY2 ;延时10秒
bit.b #BClosed,&P2IN
jz S0_2S_B ;B未关,延时等待
bic.b #CloseB,&P2OUT ;B已关,清除CloseB
jmp SetupS0_1 ;跳转
S0_2S_B call #DELAY2S ;延时2秒
bit.b #BClosed,&P2IN
jz AlarmB_S0 ;B未关,B报警
bic.b #alarm_B,&P6OUT ;B已关,清除alarm_B
bic.b #CloseB,&P3OUT ;清除CloseB
jmp SetupS0_1
AlarmB_S0 bis.b #alarm_B,&P6OUT ;B报警
jmp S0_2S_B
;----------------------------------------------------------
SetupS0_1
mov #2,v_state ;初始状态编号
bic.b #(closed+opening+closing),va_flag
bis.b #opened,va_flag
bic.b #(opened+opening+closing),vb_flag
bis.b #closed,vb_flag
call #Disp1
ret
/////////////////////////////////////////////////////////////////////////////////
N1 DEFINE 13
N2 DEFINE 5
BAT0 DEFINE 00H
V_PRW0 DEFINE 00H
mov.b #5 , va_delay_const
mov.b #13 , vb_delay_const
/////////////////////////////////////////////////////////////////////////
DELAY1 mov #N1 , R14 //延时N1*2s子程序,为2s的整数倍,因为为13,所以为延时26s
LOOP1 mov #2666 , R15
LOOP1_1 dec R15
jnz LOOP1_1
dec R14
jnz LOOP1
ret
;----------------------------------------------------------
DELAY2 mov #N2 , R14 //延时N2*2s子程序,为2s的整数倍,因为为5,所以为延时10s
LOOP2 mov #2666 , R15
LOOP2_1 dec R15
jnz LOOP2_1
dec R14
jnz LOOP2
ret
;----------------------------------------------------------
DELAY2S mov #1 , R14 //延时2s子程序,为2s的整数倍,因为为1,所以为延时2s
LOOP3 mov #2666 , R15
LOOP3_1 dec R15
jnz LOOP3_1
dec R14
jnz LOOP3
ret
;----------------------------------------------------------
Disp0 bis.b #0E0h,&LCDM1
bis.b #00Bh,&LCDM2
ret
Disp1 bis.b #060h,&LCDM1
bis.b #000h,&LCDM2
ret
Disp2 bis.b #0C0h,&LCDM1
bis.b #007h,&LCDM2
ret
Disp3 bis.b #0E0h,&LCDM1
bis.b #005h,&LCDM2
ret
Disp4 bis.b #060h,&LCDM1
bis.b #00Ch,&LCDM2
ret
Disp5 bis.b #0A0h,&LCDM1
bis.b #00Dh,&LCDM2
ret
Disp6 bis.b #0A0h,&LCDM1
bis.b #00Fh,&LCDM2
ret
Disp7 bis.b #0E0h,&LCDM1
bis.b #000h,&LCDM2
ret
Disp8 bis.b #0E0h,&LCDM1
bis.b #00Fh,&LCDM2
ret
Disp9 bis.b #0E0h,&LCDM1
bis.b #00Dh,&LCDM2
ret
;----------------------------------------------------------------------------------
/*
TA0_ISR //定时中断子程序段
xor.b #08H , P2OUT
add.w #1000 , &CCR0
bis.b #sec_2s_f , flag1
bic.w #010H , 0(SP)
reti
TAX_ISR
add &TAIV , PC
reti
jmp CCR1_ISR
jmp CCR2_ISR
CCR1_ISR
bic #(CCIFG + CCIE) , &TACCTL1
reti
CCR2_ISR
bic #(CCIFG + CCIE) , &TACCTL2
reti
PORT1_INT
bic.b #0FFH , &P1IE //P1口禁止中断
bic.b #0CH , &IE1
bic.b #0FFH , &P1IFG //P1口中断标志位置0
bic.b #0CH , &IFG1
reti
PORT2_INT
bic.b #0FFH , &P2IE //P2口禁止中断
bic.b #0FFH , &P2IFG //P2口中断标志位置0
reti
TBCCR0_INT
bic #TBIE + TBIFG , &TBCTL
reti
TBCCR1_INT
ADD &TBIV , PC //加入Timer_A中断向量
reti
jmp TBCCR1_ISR
jmp TBCCR2_ISR
jmp TBCCR3_ISR
jmp TBCCR4_ISR
jmp TBCCR5_ISR
jmp TBCCR6_ISR
TBCCR1_ISR
bic #(CCIFG+CCIE), &TBCCTL1
reti
TBCCR2_ISR
bic #(CCIFG+CCIE), &TBCCTL2
reti
TBCCR3_ISR
bic #(CCIFG+CCIE), &TBCCTL3
reti
TBCCR4_ISR
bic #(CCIFG+CCIE), &TBCCTL4
reti
TBCCR5_ISR
bic #(CCIFG+CCIE), &TBCCTL5
reti
TBCCR6_ISR
bic #(CCIFG+CCIE), &TBCCTL6
reti
TX0_INT
bic.b #UTXIE0 , &IE1
bic.b #UTXIFG0 , &IFG1
bic.b #UTXE0 , &ME1
reti
RX0_INT
bic.b #URXIE0 , &IE1
bic.b #URXIFG0 , &IFG1
bic.b #URXE0 , &ME1
reti
UART1TX_INT
bic.b #UTXIE1 , &IE2
bic.b #UTXIFG1 , &IFG2
bic.b #UTXE0 , &ME2
reti
UART1RX_INT
bic.b #URXIE1 , &IE2
bic.b #URXIFG1 , &IFG2
bic.b #URXE0 , &ME2
reti
ADC_INT
bic.b #04H , &IE2
bic.b #04H , &IFG2
reti
WDT_INT
bic.b #WDTIFG , &IFG1
bic.b #WDTIE , &IE1
reti
COMPARATORA_INT
bic.b #CAIE + CAIFG , &CACTL1
reti
NMI_INT
bic #WDTNMI , &WDTCTL
bic.b #NMIIFG , &IFG1
reti
*/
;----------------------------------------------------------
COMMON INTVEC
ORG RESET_VECTOR ; 0xFFFE Reset [Highest Priority] */
DW RESET
ORG TIMERA0_VECTOR ; 0xFFEC Timer A CC0 */
DW TA0_ISR
ORG TIMERA1_VECTOR
DW TAX_ISR
ORG PORT2_VECTOR
DW PORT2_INT
ORG PORT1_VECTOR
DW PORT1_INT
ORG TIMERB0_VECTOR
DW TBCCR0_INT
ORG TIMERB1_VECTOR
DW TBCCR1_INT
ORG UART0TX_VECTOR
DW TX0_INT
ORG UART0RX_VECTOR
DW RX0_INT
ORG UART1TX_VECTOR
DW UART1TX_INT
ORG UART1RX_VECTOR
DW UART1RX_INT
ORG ADC_VECTOR
DW ADC_INT
ORG WDT_VECTOR
DW WDT_INT
ORG COMPARATORA_VECTOR
DW COMPARATORA_INT
ORG NMI_VECTOR
DW NMI_INT
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -