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

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

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