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

📄 main.asm

📁 采用的是凌阳的65系列单片机,型号是2408控制板中有10段水位以及衣物重量测试等功能
💻 ASM
📖 第 1 页 / 共 2 页
字号:
						
			SET				FLAG1,WORK				;工作标记			
			
			LDA				LED_BUF2				;.......浸泡灯闪烁
			ORA				#00000010B
			STA				SHINE2_H
			LDA				SHINE2_H
			AND				#11111101B
			STA				SHINE2_L
			LDA				LED_BUF3
			STA				SHINE3_H
			STA				SHINE3_L
				
			TST				W_FLAG,0
			BEQ				WK_NJP
			
			
			TST				FLAG2,BF_BG
			BNE				ARD
			LDA				#02H
			STA				LED_BUF4
			STA				LED_BUF5
			;进水				
			JSR				W_INPUT
			;一分钟的模糊洗	
			SET				FLAG1,N_MH
			LDA				#1
			STA				BT_M
			LDA				#60
			STA				BT_S
			JSR				XD_WORK
			CLR				FLAG1,N_MH		
			INC				WASH_TIMES
			;总时间开始减(开始显示剩余时间)
			SET				FLAG2,BF_BG
						
			;......如果是4档高水位就加2分钟洗涤时间..........
			LDA				SW_COUNT
			CMP				#7
			BCC				XD_BJS2	
			INC				WASH_TIMES
			INC				WASH_TIMES
XD_BJS2:		

ARD:
			
			
			
			
			TST				CX_COUNT,0			;判断浸泡时间
			BEQ				JS_CXN0				
			LDA				#25
JS_CXN0:			
			TST				CX_COUNT,1
			BEQ				JS_CXN1				
			LDA				#35
JS_CXN1:																							
			STA				BT_M										
			LDA				#60
			STA				BT_S
			;
			SET				FLAG2,FLAG_JP		;开浸泡标记
			JSR				XD_WORK
			CLR				FLAG2,FLAG_JP
			
WK_NJP:		


			CLR				W_FLAG,0
									
			LDA			    SHINE2_L			;.........洗涤灯闪烁
			STA				SHINE2_H
			LDA				SHINE2_H
			ORA				#00001000B
			STA				SHINE2_H
			AND				#11110111B
			STA				SHINE2_L
					
			TST				W_FLAG,1
			BEQ				LONG_JP4
			
			JMP				JP4	
LONG_JP4:	JMP				WK_NXD			
JP4:			
			
			TST				CX_COUNT,2
			BEQ				BZMH0
			SET				FLAG2,BF_BG
			JSR				W_INPUT
			JMP				XXDDX
														
BZMH0:											
			TST				CX_COUNT,3
			BEQ				BZMH1
			SET				FLAG2,BF_BG				
			JSR				W_INPUT
			JMP				XXDDX					
BZMH1:				
			
													
			TST				FLAG2,BF_BG
			BNE				ARD2
			;
			LDA				#02H
			STA				LED_BUF4
			STA				LED_BUF5
			;进水				
			JSR				W_INPUT
			
			;一分钟的模糊洗
			SET				FLAG1,N_MH
			LDA				#1
			STA				BT_M
			LDA				#60
			STA				BT_S
			JSR				XD_WORK
			CLR				FLAG1,N_MH		
			INC				WASH_TIMES			
			;总时间开始减(开始显示剩余时间)
			SET				FLAG2,BF_BG
			;......如果是4档高水位就加2分钟洗涤时间..........
			LDA				SW_COUNT
			CMP				#7
			BCC				XD_BJS
			INC				WASH_TIMES
			INC				WASH_TIMES
XD_BJS:			
						
ARD2:		

XXDDX:

			;........判断洗涤时间.........
			LDA				#60
			STA				BT_S
				
			TST				CX_COUNT,0
			BEQ				XD_TN0				
			LDA				#12
XD_TN0:			
			TST				CX_COUNT,1
			BEQ				XD_TN1				
			LDA				#12
XD_TN1:		
			TST				CX_COUNT,2
			BEQ				XD_TN2				
			LDA				#3
XD_TN2:		
			TST				CX_COUNT,3
			BEQ				XD_TN3				
			LDA				#2
XD_TN3:		
			STA				BT_M
			
			TST				CX_COUNT,2
			BNE				XD_BJS22
			TST				CX_COUNT,3
			BNE				XD_BJS22	
			;......如果是4档高水位就加2分钟洗涤时间..........
			LDA				SW_COUNT
			CMP				#7
			BCC				XD_BJS22
			INC				BT_M
			INC				BT_M	
XD_BJS22:		

			JSR				XD_WORK	;普通洗涤
			;........16s的平衡洗..........
			SET			FLAG2,FLAG_PHX
			LDA			#1
			STA			BT_M
			LDA			#16
			STA			BT_S
			JSR			XD_WORK
			CLR			FLAG2,FLAG_PHX
WK_NXD:			
			CLR				W_FLAG,1
			
			LDA				SHINE2_L		    ;...........漂洗灯闪烁
			STA				SHINE2_H
			LDA				SHINE3_H
			AND				#01H
			STA				SHINE3_L
			SET				FLAG2,BF_BG
			
			TST				W_FLAG,2				
			BEQ				WK_NPX
							
			JSR				T_LC1
			
			;>>>>>>>>>>>>>>>>>>>>>>>>第2次漂洗>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
			TST				CX_COUNT,3	
			BNE				WK_NPX
			JSR				T_LC1	
								
WK_NPX:
			
			CLR				W_FLAG,2		
			LDA				SHINE3_L			;............脱水灯闪烁
			STA				SHINE3_H
			LDA				SHINE3_H
			AND				#80H
			STA				SHINE3_L
			SET				FLAG2,BF_BG
			
			TST				W_FLAG,3	
			BEQ				LONG_JP15
		
			JMP				JP15	
LONG_JP15:			
			JMP				WK_NTS			
JP15:
			
			TST				CX_COUNT,3
			BNE				JP_PS
			JSR				W_OUTPUT
			JMP				N_P30S
JP_PS:				
			JSR				PS_30S
N_P30S:


				LDA				WASH_TIMES
				STA				ZT_T_SM					
				LDA				SYS_S
				STA				ZT_T_SS
				;保存灯
				 LDA			SHINE3_H
				 STA			ZT_L_H
				 LDA			SHINE3_L
				 STA			ZT_L_L
				
				
				;最后一次间脱周期判断
				TST				CX_COUNT,0
				BEQ				JT1_NE0
				LDA				#4		
JT1_NE0:				
				TST				CX_COUNT,1
				BEQ				JT1_NE1
				LDA				#4		
JT1_NE1:			
				TST				CX_COUNT,2
				BEQ				JT1_NE2
				LDA				#13		
JT1_NE2:			
				TST				CX_COUNT,3
				BEQ				JT1_NE3
				LDA				#3		
JT1_NE3:			
				STA				JT_T_SET
				JSR				JT_WORK	
				
				TST				CX_COUNT,2 ;(如果是轻柔程序就跳过连脱)
				BNE				CX3_NLTE
							
				;连脱
				TST				CX_COUNT,0
				BEQ				LT1_N0E				
				LDA				#5
				STA				LT_M
				LDA				#60
				STA				LT_S
				
LT1_N0E:
				TST				CX_COUNT,1
				BEQ				LT1_N1E				
				LDA				#5
				STA				LT_M
				LDA				#60
				STA				LT_S	
					
LT1_N1E:
				TST				CX_COUNT,3
				BEQ				LT1_N3E				
				LDA				#1
				STA				LT_M
				LDA				#60
				STA				LT_S
LT1_N3E:
				JSR				LT_WORK					
CX3_NLTE:		

				;关脱
				LDA				#1
				STA				BT_M
				LDA				#30
				STA				BT_S
				
	
				TST				CX_COUNT,3
				BEQ				GT_NCX44				
				LDA				#1
				STA				BT_M
				LDA				#15
				STA				BT_S																	
GT_NCX44:
				JSR				GT_WORK
				
				;停5S
				JSR				D5_S
			

WK_NTS:
			
				JSR				FINISH_W
             	JSR				$


;****************************************
;*										*
;*		NMI Interrupt Service Routine	*
;*										*
;****************************************
V_NMI:
		pha								; push A register
		txa								; transfer X to A
		pha								; push A register (ie. push X)
;
; NMI codes are placed here
;	
		pla								; pop A register
		tax								; transfer A to X
		pla								; pop A register (ie. pop X)
;
		rti
		
;****************************************
;*										*
;*		IRQ Interrupt Service Routine	* 
;*										*
;****************************************
V_IRQ:
		pha								; push A register
		txa								; transfer X to A
		pha								; push A register (ie. push X)
;
; IRQ codes are placed here
;	    
		
				TST				P_INT_Flag2,5
				BEQ				LONG_JP1
			
		  		JMP				N_LONG_JP1		
LONG_JP1:					
				JMP				N_BSI						
N_LONG_JP1:		

		;...................................................................................
		;
		;                 2MS时间处理
		;...................................................................................
				INC   			RAM_200MS
				INC				RAM_05S
				INC				RAM_01S	
				
				LDA				RAM_200MS
        		CMP				#100
        		BNE				R_N200MS					
		;...................................................................................
		;
		;                 200MS时间处理
		;...................................................................................
				LDA			P_TMR1_Count			;读低位      
				STA			SW_L
				LDA			P_TMR1_CountHi			;读高位
				STA			SW_H
				;
				LDA			#00H
       			STA			P_TMR0_1_Ctrl0			;关定时器
		        STA			RAM_200MS				;重新计算200MS
				STA			P_TMR1_CountHi
				STA			P_TMR1_Count
				;
				LDA			#40H
				STA			P_TMR0_1_Ctrl0			;开定时器计数
				
				;(得出来的值 保存在SW_H   SW_L 两个变量中............. ) 
				
				TST			FLAG4,0
				BEQ			P_OFF
				
				LDA			SW_H
				CMP			#00H
				BEQ			SWQB1
				JMP			SWQNB													
SWQB1:				
				LDA			SW_L
				CMP			#20H
				BCS			SWQNB
				
				DEC			POWER
				BNE			SWQNB
				
				CLR			FLAG3,WARM_FLAG
				lda 		P_BUZ_Ctrl
    			AND 		#11111001b
    			sta 		P_BUZ_Ctrl				

				SET			E_FLAG,SWQ
					
SWQNB:				
P_OFF:				
		;...................................................................................
R_N200MS:

				;.......排水阀延时7秒检测...............................
  		       	TST				PD,2
  		       	BEQ				T_PSC
  		       	CLR				FLAG1,PS_BH
				JMP				T_PSC2
T_PSC: 		    
   				SET				FLAG1,PS_BH		
T_PSC2:  		       				
				

				
				JSR				DISPLAY		;显示
				LDA				WASH_TIMES
				CMP				#0
				BNE				JKJP
			    TST				FLAG3,WARM_FLAG
				BNE				JKJP
				LDA				#1
				STA				WASH_TIMES
JKJP:								
				
				
				TST				FLAG2,BF_BG
				BEQ				T_NBG			
				TST				FLAG1,EOOR
				BNE				T_NBG	
				SM_SHOW			WASH_TIMES			
T_NBG:				

				;.......撞桶检测...........................................
				JSR				ZT_CHECK
				;........................................................
				TST				FLAG_MH,0			;模糊处理(允许标记)
				BEQ				MH_NALLOW										
				
				TST				PC,MH				;电位为高
				BEQ				PC_HH
				SET				FLAG_MH,UP		
PC_HH:				

				TST				PC,MH
				BNE				PC_LL
				TST				FLAG_MH,UP
				BEQ				PC_LL
				CLR				FLAG_MH,UP
				
				
			;;...............................
				CLC
				LDA				MH_JS_L
				ADC				#1
				STA				MH_JS_L
				BCC				MH_NJW
				INC				MH_JS_H
				CLC				
MH_NJW:								
			;;.....................................	


PC_LL:
			   
MH_NALLOW:

		;...................................................................................
			
				LDA				RAM_01S
				CMP				#50
				BNE				R_N01S
		;...................................................................................
		;
		;                 0.1S时间处理
		;...................................................................................
				TST				FLAG1,STOP
				BNE				TT_NS1
				TST				FLAG1,EOOR
				BNE				TT_NS1
				INC				R_ALL
TT_NS1:
				
				
		;...................................................................................		
				LDA				#0
				STA				RAM_01S				
R_N01S:
				
				LDA				RAM_05S
           		CMP				#244
          		BNE				LONG_JP2
				
				JMP				N_LONGJP2          		
LONG_JP2:
				JMP				R_N05S
N_LONGJP2:          		
          		
       	;...................................................................................
		;
		;                 0.5S时间处理
		;...................................................................................
 				INV 			FLAG1,MH_SHINE
       			
       			;........工作中的灯闪烁处理..............
       			TST				FLAG1,WORK
       			BEQ				TD_NW
				
				TST				FLAG1,7
				BNE				TD_NW
				       			
       			TST				FLAG1,STOP
       			BEQ				TL_NS
				LDA				SHINE2_H
       			STA				LED_BUF2
       			LDA				SHINE3_H
       			STA				LED_BUF3
       			JMP				TD_NW					       											
TL_NS:
       			TST				FLAG1,MH_SHINE
       			BEQ				T_SS							
       			LDA				SHINE2_H
       			STA				LED_BUF2
       			LDA				SHINE3_H
       			STA				LED_BUF3
       			JMP				T_SS2
T_SS:       			
 			    LDA				SHINE2_L
 			    STA				LED_BUF2
 			    LDA				SHINE3_L
       			STA				LED_BUF3	    
T_SS2:       			
       			
TD_NW:       			
			
				;........错误报警........
				TST				FLAG3,WARM_FLAG
				BEQ				T_NBJ				
				
				LDA				P_BUZ_Ctrl
				EOR				#00000110b
    			sta 			P_BUZ_Ctrl	
    			
    			DEC				WARM_T
    			BNE				T_NBJ
    			
    			lda 			P_BUZ_Ctrl
    			AND 			#11111001b
    			sta 			P_BUZ_Ctrl	
    			CLR				FLAG3,WARM_FLAG					
T_NBJ:				
       		
       	;...........................................................
       		
       			INC				RAM_1S
       			LDA				RAM_1S
       			CMP				#2
       			BNE				R_N1S	
       		
       	;...................................................................................
		;
		;                 1S时间处理
		;...................................................................................

				
				TST				FLAG1,STOP
				BNE				TT_NS2
				
				TST				FLAG1,SYS_G
       			BEQ				T_TNG			
      			
      			TST				FLAG1,EOOR
				BNE				T_TNG
      			
      			DEC				BT_S
      			BNE				T_TNG
      			
      			LDA				#60
      			STA				BT_S
      			 				
       			DEC				BT_M
       			BNE				T_TNG
       			
       			CLR				FLAG1,SYS_G
       			
T_TNG:       		
       			TST				FLAG1,SM_G
       			BEQ				T_NSM
       			TST				FLAG1,EOOR
				BNE				T_NSM
      			DEC				SYS_S
      			BNE				T_NSM
      			
      			LDA				#60
      			STA				SYS_S 	
      					
       			DEC				WASH_TIMES
       			
T_NSM:       		
       		
       			TST				FLAG3,BH_JS
       			BEQ				T_NBH
       			TST				FLAG1,EOOR
				BNE				T_NBH
				TST				FLAG1,STOP
				BNE				T_NBH		
      			DEC				BH_S
      			BNE				T_NBH
      			CLR				FLAG3,BH_JS
T_NBH:       		
       			
       			TST				FLAG3,YZW
       			BEQ				T_NYZYZ
       			DEC				YZ_T
       			BNE				T_NYZYZ
       			CLR				FLAG3,YZW
T_NYZYZ:       			
       		
TT_NS2:			       		
       		
       		   
        ;...........................................................	
       	;...........................................................
				LDA				#0
            	STA				RAM_1S
R_N1S:
				LDA				#0
				STA				RAM_05S
R_N05S:       
        
        
				SET				P_INT_Flag2,5
N_BSI:   ;不是时基中断就跳转到这里


		pla								; pop A register
		tax								; transfer A to X
		pla								; pop A register (ie. pop X)
;
		rti
		
;****************************************
;*										*
;*		Interrupt Vector Table			*
;*										*
;****************************************
VECTOR:			.SECTION     
		DW		V_NMI					; Non-mask interrupt vector(no use)
		DW		V_Reset					; Reset vector
		DW		V_IRQ					; IRQ interrupt vector

;****************************************
;*										*
;*		End Of Interrupt Vector Table	*
;*										*
;****************************************
.END									; end of program

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -