📄 复件 msp430f415阀门控制汇编原码.txt
字号:
/*****************************************Copyright (c)**************************************************
** RM2015, The 10th EDU BLDG
** ZheJiang University, HangZhou
** E-mail:chenqiong0011@163.com
**--------------------------------------------File Info-------------------------------------------------
** File name: V18_F145.asm
** Last modified Date: 2007-07-18
** Last Version: 1.0
**------------------------------------------------------------------------------------------------------
** Created by: JIANG Hao
** modified date: 2007-07-18
** Version: 1.0
** Descriptions: The original version
**********************************************************************************************************/
#include "msp430x41x.h"
#include "V18.h"
ORG 0F800H
RESET mov.w #027EH , SP
call #_init
MAIN eint
bit #sec_2s_f , flag1
jnc MAIN1
bic #sec_2s_f , flag1
xor.b #010h , P2OUT ///////调试用
call #check_state
MAIN1 bis.w #SCG1 + SCG0 + CPUOFF , SR
jmp MAIN
/////////////////////////////////////////////////////////////////////////////
;S0:Init_state->S1/S2/S3 v_state=0 本程序为2
;S1:AOpened,BClosed v_state=2
;S2:BOpened,AClosed v_state=5
;S3:AOpened,BOpened v_state=8
;TS01:S0->S1,OpenA,CloseB v_state=1
;TS12:S1->S2,OpenB,CloseA v_state=3
;TS23:S2->S3,OpenA v_state=6
;TS32:S3->S2,CloseA v_state=7
;TS21:S2->S1,OpenA,CloseB v_state=4
check_state
cmp.b #0 , v_state
jz chk_vst0 //
cmp.b #1 , v_state
jz chk_vst1 //
cmp.b #2 , v_state
jz chk_vst2 //
cmp.b #3 , v_state
jz chk_vst3 //
cmp.b #4 , v_state
jz chk_vst4 //
cmp.b #5 , v_state
jz chk_vst5 //
cmp.b #6 , v_state
jz chk_vst6 //
cmp.b #7 , v_state
jz chk_vst7 //
cmp.b #8 , v_state
jz chk_vst8 //
mov.b #2 , v_state
jmp check_r //
;----------------------------------------------------------
chk_vst0
jmp check_r
;----------------------------------------------------------
chk_vst1 ;TS01:S0->S1
mov.b va_delay_const,va_delay_cnt
bit.b #opened,va_flag
jc chk_vst11
bic.b #(closed+closing),va_flag
bis.b #opening,va_flag
bis.b #OpenA,&P3OUT
dec.b va_delay_cnt
jnz chk_vst1r
bic.b #(OpenA+CloseA),&P3OUT
chk_vst11
mov.b vb_delay_const,vb_delay_cnt
bit.b #closed,vb_flag
jc chk_vst12
bic.b #(opened+opening),vb_flag
bis.b #closing,vb_flag
bis.b #CloseB,&P2OUT
dec.b vb_delay_cnt
jnz chk_vst1r
bic.b #(OpenB+CloseB),&P2OUT
chk_vst12
mov.b #2,v_state
chk_vst1r
jmp check_r
;----------------------------------------------------------
chk_vst2
bic.b #(closed+opening+closing),va_flag
bis.b #opened,va_flag
bic.b #(opened+opening+closing),vb_flag
bis.b #closed,vb_flag
bic.b #(OpenA+CloseA),&P3OUT
bic.b #(OpenB+CloseB),&P2OUT
call #Disp1
bit.b #AHi,&P3IN
jnc check_r
mov.b #3,v_state
jmp chk_vst3
;----------------------------------------------------------
chk_vst3 ;开B,关A
mov.b vb_delay_const,vb_delay_cnt
bit.b #opened,vb_flag
jc chk_vst31
bic.b #(closed+closing), vb_flag
bis.b #opening,vb_flag
bis.b #OpenB,&P2OUT
dec.b vb_delay_cnt
jnz chk_vst3r
bic.b #(OpenB+CloseB),&P2OUT
bic.b #(opening+closed+closing), vb_flag
bis.b #opened,vb_flag
chk_vst31
mov.b va_delay_const,va_delay_cnt
bit.b #closed,va_flag
jc chk_vst32
bic.b #(opened+opening), va_flag
bis.b #closing,va_flag
bis.b #CloseA,&P3OUT
dec.b va_delay_cnt
jnz chk_vst3r
bic.b #(CloseA+OpenA),&P3OUT
bic.b #(opened+opening+closing), va_flag
bis.b #closed,va_flag
chk_vst32
mov.b #5,v_state
call #Disp2
chk_vst3r
jmp check_r
;----------------------------------------------------------
chk_vst4 ;开A,关B
mov.b va_delay_const,va_delay_cnt
bit.b #opened,va_flag
jc chk_vst41
bic.b #(closed+closing), va_flag
bis.b #opening,va_flag
bis.b #OpenA,&P3OUT
dec.b va_delay_cnt
jnz chk_vst4r
bic.b #(OpenA+CloseA),&P2OUT
bic.b #(opening+closed+closing), va_flag
bis.b #opened,va_flag
chk_vst41
mov.b vb_delay_const,vb_delay_cnt
bit.b #closed,vb_flag
jc chk_vst42
bic.b #(opened+opening), vb_flag
bis.b #closing,vb_flag
bis.b #CloseB,&P2OUT
dec.b vb_delay_cnt
jnz chk_vst4r
bic.b #(CloseB+OpenB),&P2OUT
bic.b #(opened+opening+closing), vb_flag
bis.b #closed,vb_flag
chk_vst42
mov.b #2,v_state
call #Disp2
chk_vst4r
jmp check_r
;----------------------------------------------------------
chk_vst5 //state=5(S2),stable,BA=10,B阀开,A阀关
bic.b #(opened + opening + closing) , va_flag
bis.b #closed , va_flag
bic.b #(opening + closed + closing) , vb_flag
bis.b #opened , vb_flag
//
bic.b #OpenA + CloseA , &P3OUT
bic.b #OpenB + CloseB , &P2OUT
call #Disp2
//if BH=1,then state6(TS23)
bit.b #BHi , &P2IN
jnc chkvst51
mov.b #6 , v_state
mov.b va_delay_const , va_delay_cnt
jmp chk_vst6
chkvst51 //if BL=1,then state4(TS21)
bit.b #BLow , &P2IN
jnc check_r
mov.b #4 , v_state
mov.b va_delay_const , va_delay_cnt
mov.b vb_delay_const , vb_delay_cnt
jmp chk_vst4
;----------------------------------------------------------
chk_vst6 //state=6(TS23),transient,开A阀
bit.b #opened , va_flag
jc chk_vst61
bic.b #(closed + closing) , va_flag
bis.b #opening , va_flag
bis.b #OpenA , &P3OUT //opening A
dec.b va_delay_cnt
jnz chk_vst6r
bic.b #OpenA , &P3OUT //stop opening A
bic.b #(opening + closed + closing) , va_flag
bis.b #opened , va_flag
mov.b va_delay_const , va_delay_cnt
chk_vst61 //auto to S3
mov.b #8 , v_state
call #Disp3
chk_vst6r jmp check_r
;----------------------------------------------------------
chk_vst7 //state=7(TS32),transient,关A阀
bit.b #closed , va_flag
jc chk_vst71
bis.b #CloseA , &P3OUT //closing A
bic.b #(opened + opening) , va_flag
bis.b #closing , va_flag
dec.b va_delay_cnt
jnz chk_vst7r
bic.b #CloseA , &P3OUT //stop closing A
bic.b #(opened + opening + closing) , va_flag
bis.b #closed , va_flag
mov.b va_delay_const , va_delay_cnt
chk_vst71 //auto to S2
mov.b #5 , v_state
call #Disp2
chk_vst7r jmp check_r
;----------------------------------------------------------
chk_vst8 //state=8(S3),stable,BA=11,B阀开,A阀开
bic.b #(opening + closed + closing) , va_flag
bis.b #opened , va_flag
bic.b #(opening + closed + closing) , vb_flag
bis.b #opened , vb_flag
//
bic.b #OpenA +CloseA , &P3OUT
bic.b #OpenB + CloseB , &P2OUT
call #Disp3
//if BL=1,then state7(TS32)
bit.b #BLow , &P2IN
jnc check_r
mov.b #7 , v_state
mov.b va_delay_const , va_delay_cnt
mov.b vb_delay_const , vb_delay_cnt
jmp chk_vst7
;----------------------------------------------------------
check_r ret //end of _check_state
///////////////////////////////////////////////////////////////////////////////////////////////
_init //初始化子程序段
StopWDT mov #WDTPW + WDTHOLD , &WDTCTL //关掉看门狗
;----------------------------------------------------------
SetupP1 //P1初始化,用于按键inc、shift和func的输入
bic.b #0FFh,&P1SEL ;I/O
bic.b #0FFh,&P1DIR ;P1.7(Inc)/1.6(Shift)/1.5(Func)in
bis.b #0E0h,&P1IE ;开中断
bic.b #0E0h,&P1IFG ;清中断标志位
;----------------------------------------------------------
SetupP2 //P2初始化,用于阀门B的BE、BHi、BLow、BOpend、BClosed信号输入;CloseB、OpenB信号输出
bic.b #0FFh,&P2SEL ;I/O
bic.b #0FFh,&P2DIR ;P2.2/2.3/2.4/2.5 in
bis.b #043h,&P2DIR ;P2.6/2.1/2.0 out
bic.b #0FFh,&P2OUT ;输出0
bic.b #0FFh,&P2IE ;关中断
;----------------------------------------------------------
SetupP3 //P3初始化,用于阀门A的AE、AHi、ALow、AOpend、AClosed信号输入;CloseA、OpenA信号输出
bic.b #0FFh , &P3SEL ;I/O
bic.b #0ffh , &P3DIR ;P3.2-3.5 in
bis.b #043h , &P3DIR ;P3.0/3.1/3.6 out
bic.b #0FFh , &P3OUT ;输出0
;----------------------------------------------------------
SetupP6 //P6初始化,用于电源电压检测与电源和控制阀报警
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -