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

📄 hr52_10_p4.asm

📁 采用的是凌阳的65系列单片机,型号是2408控制板中有10段水位以及衣物重量测试等功能
💻 ASM
字号:
;;..........................P4.................................
.PUBLIC				JP_GET_NUM         ;浸泡中的洗洗停停
JP_GET_NUM:			.PROC
					TST			CX_COUNT,0  ;  		22		20 		19		10   	9   	0  
					BEQ			XDW_CX0				
					
					LDA			BT_M			;25-----22
					CMP			#23
					BCC			CX0_BTD0
					SET			FLAG2,FLAG_JPW	 ;洗					
CX0_BTD0:								
					LDA			BT_M			;22-------20
					CMP			#23
					BCS			CX0_BTD2			
					LDA			BT_M
					CMP			#21
					BCC			CX0_BTD2
					CLR			FLAG2,FLAG_JPW			
CX0_BTD2:
					
					LDA			BT_M			;20-------19
					CMP			#21
					BCS			CX0_BTD3			
					LDA			BT_M
					CMP			#20
					BCC			CX0_BTD3
					SET			FLAG2,FLAG_JPW			
CX0_BTD3:
			
					LDA			BT_M			;19-------10
					CMP			#20
					BCS			CX0_BTD4			
					LDA			BT_M
					CMP			#11
					BCC			CX0_BTD4
					CLR			FLAG2,FLAG_JPW			
CX0_BTD4:
			
					LDA			BT_M			;10-------9
					CMP			#11
					BCS			CX0_BTD5			
					LDA			BT_M
					CMP			#10
					BCC			CX0_BTD5
					SET			FLAG2,FLAG_JPW			
CX0_BTD5:			

					LDA			BT_M			;9-----------0
					CMP			#10
					BCS			CX0_BTD6			
					CLR			FLAG2,FLAG_JPW			
CX0_BTD6:			
					
XDW_CX0:					

					TST			CX_COUNT,1	;		32     30		29		20	    19		10   	9     0		 
					BEQ			XDW_CX1
					
					LDA			BT_M			;35--------32
					CMP			#33
					BCC			CX1_BTD0
					SET			FLAG2,FLAG_JPW	 ;洗					
CX1_BTD0:								
					LDA			BT_M			;32-------30
					CMP			#33
					BCS			CX1_BTD2			
					LDA			BT_M
					CMP			#31
					BCC			CX1_BTD2
					CLR			FLAG2,FLAG_JPW			
CX1_BTD2:					
					LDA			BT_M			;30-------29
					CMP			#31
					BCS			CX1_BTD3			
					LDA			BT_M
					CMP			#30
					BCC			CX1_BTD3
					SET			FLAG2,FLAG_JPW			
CX1_BTD3:			
					LDA			BT_M			;29----------20
					CMP			#30
					BCS			CX1_BTD4			
					LDA			BT_M
					CMP			#21
					BCC			CX1_BTD4
					CLR			FLAG2,FLAG_JPW			
CX1_BTD4:			
					LDA			BT_M			;20----------19
					CMP			#21
					BCS			CX1_BTD5			
					LDA			BT_M
					CMP			#20
					BCC			CX1_BTD5
					SET			FLAG2,FLAG_JPW			
CX1_BTD5:			

					LDA			BT_M			;19--------------10
					CMP			#20
					BCS			CX1_BTD7			
					LDA			BT_M
					CMP			#11
					BCC			CX1_BTD7
					CLR			FLAG2,FLAG_JPW			
CX1_BTD7:			

					LDA			BT_M			;10---9
					CMP			#11
					BCS			CX1_BTD6			
					LDA			BT_M
					CMP			#10
					BCC			CX1_BTD6
					SET			FLAG2,FLAG_JPW			
CX1_BTD6:			

					LDA			BT_M			;9-----------0
					CMP			#10
					BCS			CX1_BTD8			
					CLR			FLAG2,FLAG_JPW			
CX1_BTD8:
					
					
					
					
					
					
XDW_CX1:			
					RTS
					.ENDP





;................获取水流........................
.PUBLIC				GET_SL					
GET_SL:				.PROC	
				
					TST			CX_COUNT,0
					BEQ			SL_N00
					JMP			SL_03S
SL_N00:
					TST			CX_COUNT,3
					BEQ			SL_N0
SL_03S:				
					LDA			#18
					STA			XD_Z1
					LDA			#21
					STA			XD_Z2
					LDA			#39
					STA			XD_Z3
					LDA			#42
					STA			XD_Z4
					LDA			#20
					STA			SW_C
					
SL_N0:
					TST			CX_COUNT,1
					BEQ			SL_N1
					LDA			#22
					STA			XD_Z1
					LDA			#26
					STA			XD_Z2
					LDA			#48
					STA			XD_Z3
					LDA			#52
					STA			XD_Z4
					LDA			#25
					STA			SW_C
SL_N1:				
					TST			CX_COUNT,2
					BEQ			SL_N2
					LDA			#9
					STA			XD_Z1
					LDA			#13
					STA			XD_Z2
					LDA			#22
					STA			XD_Z3
					LDA			#26
					STA			XD_Z4
					LDA			#12
					STA			SW_C
SL_N2:

					TST			FLAG1,N_MH			;模糊洗
					BEQ			XD_NMH
							
					LDA			#12
					STA			XD_Z1
					LDA			#24
					STA			XD_Z2
					LDA			#36
					STA			XD_Z3
					LDA			#48
					STA			XD_Z4
					LDA			#23
					STA			SW_C
XD_NMH:					
					TST			FLAG2,FLAG_PHX
					BEQ			XD_NPH
					LDA			#3
					STA			XD_Z1
					LDA			#8
					STA			XD_Z2
					LDA			#11
					STA			XD_Z3
					LDA			#16
					STA			XD_Z4
					LDA			#7
					STA			SW_C
XD_NPH:					

					RTS
					.ENDP

.PUBLIC			FINISH_W
FINISH_W:		.PROC
				LDA			#0
				STA			WASH_TIMES	
				LDA			#0			;关输出
				STA			PD
				LDA			#00000100B
				STA			PC
				LDA			#12
				STA			WARM_T
				SET			FLAG3,WARM_FLAG
LOOP_FW:
				JSR				CHECK_P
				TST				FLAG3,WARM_FLAG
				BNE				FW_NE
				JMP				END_FW			
FW_NE:			
				;..........无水中检测程序键.................
				TST				FLAG3,SW_WORK
				BEQ				FW_NK3
				;.......灯的效果..........................
				CLR				FLAG1,WORK
				CLR				FLAG2,BF_BG
				TST				FLAG1,MH_SHINE
				BEQ				FW_NND
				CLR				FLAG1,MH_SHINE		
				INV				FLAG1,FLAG_JP
				
				TST				FLAG1,FLAG_JP
				BEQ				SH_11
				LDA				#255
				STA				LED_BUF1
				STA				LED_BUF2
				STA				LED_BUF3
				STA				LED_BUF4
				STA				LED_BUF5
				JMP				SH_12				
SH_11:
				LDA				#0
				STA				LED_BUF1
				STA				LED_BUF2
				STA				LED_BUF3
				STA				LED_BUF4
				STA				LED_BUF5			
SH_12:
				
FW_NND:				

				TST				KEY_S,2
				BEQ				FW_NK3
				TST				KEY_L,2
				BNE				FW_NK3
				JSR				Delay
				TST				KEY_S,2
				BEQ				FW_NK3
				SET				KEY_L,2
				CLR				FLAG3,WARM_FLAG
				lda 			P_BUZ_Ctrl
    			AND 			#11111001b
    			sta 			P_BUZ_Ctrl
    			JSR				BUZ
				ASL				WS_MODE
				JSR				WS_LED
				
				ldX		 		#C_STACK_BOTTOM   ;设置堆栈,将指针指想栈顶
             	txs 
				LDA				#0
				STA				KEY_S
			 	STA				FLAG1
             	STA				FLAG2
             	LDA				FLAG3
             	AND				#10000000B
             	STA				FLAG3
				JMP				AAA				
FW_NK3:				


				JMP				LOOP_FW
END_FW:				

				lda 			P_BUZ_Ctrl
    			AND 			#11111001b
    			sta 			P_BUZ_Ctrl	
				RTS
				.ENDP	




.PUBLIC				WARM
WARM:				.PROC
					;关撞桶检测
					
					LDA			#0			;关输出
				 	STA			PD
				 	LDA			#00000100B
				 	STA			PC
				 	
				 	JSR			Delay
				 	JSR			Delay
				 	JSR			Delay
				 	JSR			Delay
				 	JSR			Delay
				 	JSR			Delay
				 	JSR			Delay
				 	JSR			Delay
				 	
				 	
				 	
					LDA			#10
					STA			WARM_T
					SET			FLAG3,WARM_FLAG
					SET			FLAG1,7
					
					
					TST			E_FLAG,YY_AQKG
					BNE			YY_SXS
					LDA			SHINE2_H
					STA			LED_BUF2
					LDA			SHINE3_H
					STA			LED_BUF3
YY_SXS:					
					
					TST			E_FLAG,YY_AQKG
					BEQ			YY_WARM
					LDA			#97H
					STA			W_S1
					LDA			#DDH
					STA			W_S2
YY_WARM:					
			
					TST			E_FLAG,AQKG			;安全开盖
					BEQ			E_NANKG			
					LDA			#97H
					STA			W_S1
					LDA			#9EH
					STA			W_S2
E_NANKG:
					TST			E_FLAG,SWQ			;水位器	
					BEQ			E_NSWQ

					LDA			#87H
					STA			W_S1
					LDA			#48H
					STA			W_S2
					CLR			E_FLAG,SWQ
LOOP_DIR:			
					LDA			#0
					STA			LED_BUF1
					STA			LED_BUF2
					STA			LED_BUF3
					TST			FLAG1,MH_SHINE		
					BEQ			SS_SHINEN
					LDA			W_S1
					STA			LED_BUF5
					LDA			W_S2
					STA			LED_BUF4						
					JMP			SS_SHINE2N															
SS_SHINEN:				
					LDA			#0
					STA			LED_BUF5
					STA			LED_BUF4
SS_SHINE2N:				

					JSR			CHECK_P
					JMP			LOOP_DIR					
E_NSWQ:


					TST			E_FLAG,JS_CS		;进水超时
					BEQ			E_NJSCS
					
					
					LDA			#97H
					STA			W_S1
					LDA			#4BH
					STA			W_S2
												
E_NJSCS:

					TST			E_FLAG,PS_CS		;排水超时
					BEQ			E_NPSCS
										
					LDA			#97H
					STA			W_S1
					LDA			#48H		
					STA			W_S2		
					
E_NPSCS:					
					TST			E_FLAG,ZT3C			;撞桶3次	
					BEQ			E_NZT3C				
					
					LDA			#97H
					STA			W_S1
					LDA			#5EH	
					STA			W_S2
E_NZT3C:						
					CLR			LED_BUF4,5	;;关掉那一点			
									
					;.......开关盖恢复.................
					JSR				OC_DOOR
					LDA				#02H
					STA				LED_BUF5
					STA				LED_BUF4
					lda 			P_BUZ_Ctrl
    				AND 			#11111001b
    				sta 			P_BUZ_Ctrl	
    				CLR				FLAG3,WARM_FLAG
					
					CLR			FLAG1,7
					LDA			#0
					STA			E_FLAG
					
					JSR				Delay
				 	JSR				Delay
				 	JSR				Delay
				 	JSR				Delay
				 	JSR				Delay
										
					RTS
					.ENDP
					
				
					
;................开关盖恢复.............................
.PUBLIC			OC_DOOR
OC_DOOR:		.PROC		
				CLR			FLAG3,FLAG_DOOR
OC_LOOP:			
				TST			PB,MG			;门盖开	
				BEQ			OC_NKG		
				JSR			Delay
				TST			PB,MG			
				BEQ			OC_NKG
				SET			FLAG3,FLAG_DOOR					
OC_NKG:			

				TST			FLAG1,MH_SHINE		
				BEQ			SS_SHINE
				LDA			W_S1
				STA			LED_BUF5
				LDA			W_S2
				STA			LED_BUF4						
				JMP			SS_SHINE2												
SS_SHINE:				
				LDA			#0
				STA			LED_BUF5
				STA			LED_BUF4
SS_SHINE2:				
				
				
				TST			FLAG3,FLAG_DOOR
				BEQ			OC_KG
				TST			PB,MG
				BNE			OC_KG				
				JSR			Delay
				TST			PB,MG
				BNE			OC_KG
				JMP			END_OC						
OC_KG:
				JSR			CHECK_P
				JMP			OC_LOOP		
END_OC:												
				RTS
				.ENDP					
				
				
				
;................撞桶检测...............................
;...........................................................................
.PUBLIC			ZT_CHECK
ZT_CHECK:		.PROC
  		       	;测撞桶
     	  		tst			ZT_FLAG,ZT_ALLOW
       			beq			NCZT
       		
       			tst			ZT_FLAG,ZT_MG
       			beq			ZT1
       			;
    			tst			PA,ZT
    			BNE			ZT1				;BEQ
    			;		
    			ldx			ZT_COUNT		;小于60则是干扰
    			cpx			#30
    			bcs			ZT2
    			
				ldX			#0
				stx			ZT_COUNT		
				CLR			ZT_FLAG,ZT_MG
				jmp			NCZT	
ZT2:			

				LDX			ZT_COUNT
				CPX			#30
				BCC			ZT1
				CLR			ZT_FLAG,ZT_ALLOW
				SET			ZT_FLAG,CF_ZT
													;........撞桶...........
ZT1:       	

       			tst			PA,ZT			;当门盖打开时
       			BEQ			NCZT			
       			set			ZT_FLAG,ZT_MG
       			inc			ZT_COUNT
       			
       			LDA			ZT_COUNT
       			CMP			#100
       			BCC			NCZT
       			
       			CLR			ZT_FLAG,ZT_ALLOW
				SET			ZT_FLAG,CF_ZT      			
				
NCZT:				
				RTS	
				.ENDP	
				
			
			
			
			
			
			
			
			
				
.PUBLIC				PH_WASH
PH_WASH:			.PROC
					LDA		#0
				 	STA		PD
				 	LDA		#00000100B				;关所有口
				 	STA		PC							

				 	
				 	;改灯
				 	LDA			#10000001B
				 	STA			SHINE3_H
				 	LDA			#00000001B
				 	STA			SHINE3_L
				 	
				 	;加时间
					INC			WASH_TIMES
					INC			WASH_TIMES
					INC			WASH_TIMES
					INC			WASH_TIMES
					INC			WASH_TIMES
					CLR			FLAG3,FLAG_TS		;关脱水标记
					JSR			W_INPUT				;进水
					SET			FLAG2,FLAG_PHX
					LDA			#1
					STA			BT_M
					LDA			#60
					STA			BT_S
					JSR			XD_WORK
					CLR			FLAG2,FLAG_PHX
					;读回灯状态
					LDA			ZT_L_H
				 	STA			SHINE3_H
				 	LDA			ZT_L_L
				 	STA			SHINE3_L
					
					
					JSR			W_OUTPUT			;排水
					RTS
					.ENDP






.PUBLIC			T_LC1
T_LC1:			.PROC

				;排水
				TST				CX_COUNT,3
				BNE				JP_PS2
				JSR				W_OUTPUT
				JMP				NPS_30
JP_PS2:			
				JSR				PS_30S
NPS_30:				
				
				
				;....保存时间.............
				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_N0
				LDA				#4		
JT1_N0:				
				TST				CX_COUNT,1
				BEQ				JT1_N1
				LDA				#4		
JT1_N1:			
				TST				CX_COUNT,2
				BEQ				JT1_N2
				LDA				#7		
JT1_N2:			
				TST				CX_COUNT,3
				BEQ				JT1_N3
				LDA				#3		
JT1_N3:			
				STA				JT_T_SET
				JSR				JT_WORK	
				
				TST				CX_COUNT,2 ;(如果是轻柔程序就跳过连脱)
				BNE				CX3_NLT
							
				;连脱
				TST				CX_COUNT,0
				BEQ				LT1_N0				
				LDA				#2
				STA				LT_M
				LDA				#30
				STA				LT_S
				
LT1_N0:
				TST				CX_COUNT,1
				BEQ				LT1_N1				
				LDA				#2
				STA				LT_M
				LDA				#30
				STA				LT_S	
					
LT1_N1:
				TST				CX_COUNT,3
				BEQ				LT1_N3				
				LDA				#1
				STA				LT_M
				LDA				#30
				STA				LT_S
LT1_N3:
				JSR				LT_WORK

									
CX3_NLT:		
			
				;关脱
				LDA				#1
				STA				BT_M
				LDA				#30
				STA				BT_S
				
				TST				CX_COUNT,3
				BEQ				GT_NCX4				
				LDA				#1
				STA				BT_M
				LDA				#15
				STA				BT_S																	
GT_NCX4:	
				JSR				GT_WORK
				;停5S
				JSR				D5_S
				;进水
				JSR				W_INPUT
				
				;.....................洗时间判断....
				TST				CX_COUNT,0
				BEQ				PX1_NCX0
				LDA				#2
				STA				BT_M
				LDA				#60
				STA				BT_S
						
PX1_NCX0:				
				TST				CX_COUNT,1
				BEQ				PX1_NCX1
				LDA				#2
				STA				BT_M
				LDA				#60
				STA				BT_S			
PX1_NCX1:		
				TST				CX_COUNT,2
				BEQ				PX1_NCX2
				LDA				#2
				STA				BT_M
				LDA				#60
				STA				BT_S
						
PX1_NCX2:		
				TST				CX_COUNT,3
				BEQ				PX1_NCX3
				LDA				#2
				STA				BT_M
				LDA				#20
				STA				BT_S
						
PX1_NCX3:		
				;.......判断是不是需要溢注..........
				TST				CX_COUNT,3
				BEQ				PX1_NYZ
				SET				FLAG3,YZ		
PX1_NYZ:		
				;		
				JSR				XD_WORK
			;	INC				WASH_TIMES
				;
				CLR				FLAG3,YZ
				;........16s的平衡洗..........
				SET				FLAG2,FLAG_PHX
				LDA				#1
				STA				BT_M
				LDA				#16
				STA				BT_S
				JSR				XD_WORK
				CLR				FLAG2,FLAG_PHX
				;INC				WASH_TIMES
				;INC				WASH_TIMES
				RTS
				.ENDP
				
				
				

⌨️ 快捷键说明

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