⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 复件 msp430f415阀门控制汇编原码.txt

📁 开发平台为IAR,上传为文本格式
💻 TXT
📖 第 1 页 / 共 2 页
字号:
/*****************************************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 + -