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

📄 hr52_10_p3.asm

📁 采用的是凌阳的65系列单片机,型号是2408控制板中有10段水位以及衣物重量测试等功能
💻 ASM
📖 第 1 页 / 共 2 页
字号:
;;.......................P3..................................

;..........................................
;
;               模糊测试函数
;..........................................

.PUBLIC			   	MOHU_CS
MOHU_CS:			.PROC
BB:
					LDA			#3
					STA			MH_T
					LDA			#0		
					STA			MH_JS_H
					STA			MH_JS_L
					STA			R_ALL
					LDA			#01H
					STA			SHINE_BUF
					CLR			PD,ZZ
					CLR			PD,FZ
					SET			FLAG_MH,0
					
MH_LOOP:
					JSR			CHECK_P
					;...暂停键的检测.........
					TST			KEY_S,4
					BEQ			MHKn4		
					TST			KEY_L,4
					BNE			MHKn4
					JSR			Delay
					TST			KEY_S,4
					BEQ			MHKn4					
					JSR			BUZ
					SET			KEY_L,4
					CLR			PD,ZZ
					CLR			PD,FZ
					CLR			FLAG_MH,0
LOOP_MH:					
					TST			KEY_S,4
					BEQ			MHKn42		
					TST			KEY_L,4
					BNE			MHKn42
					JSR			Delay
					TST			KEY_S,4
					BEQ			MHKn42					
					JSR			BUZ
					SET			KEY_L,4
					JMP			BB
MHKn42:
					JSR			CHECK_P					
					JMP			LOOP_MH					
MHKn4:
					;.......... 模糊的灯显示....................
						
					TST			FLAG1,MH_SHINE
					BEQ			F_NSHINE
					
					CLR			FLAG1,MH_SHINE
					
					ASL			SHINE_BUF
					
					LDA			#02H
					STA			LED_BUF4
					STA			LED_BUF5
					
					LDA			#0
					STA			LED_BUF1
					LDA			LED_BUF2
					AND			#01111110B
					STA			LED_BUF2

					
					TST			SHINE_BUF,5
					BEQ			SH_N6
					LDA			#01H
					STA			SHINE_BUF
SH_N6:					
					TST			SHINE_BUF,0			;L10
					BEQ			SH_N0
					LDA			#40H
			    	STA			LED_BUF1
					
														
SH_N0:
					TST			SHINE_BUF,1			;L9
					BEQ			SH_N1
					
					
                	
                	LDA			LED_BUF2
					ORA			#01H
					STA			LED_BUF2
					
SH_N1:
					TST			SHINE_BUF,2			;L8
					BEQ			SH_N2
					
					
					LDA			LED_BUF2
                	ORA			#80H
                	STA			LED_BUF2
					
SH_N2:
					TST			SHINE_BUF,3			;L7
					BEQ			SH_N3
					
					
					
					LDA			#08H
 					STA			LED_BUF1
SH_N3:
					TST			SHINE_BUF,4			;L6
					BEQ			SH_N4
					LDA			#02H
					STA			LED_BUF1
					
					
					
SH_N4:


F_NSHINE:
									
					LDA			R_ALL			;小于0.5S
					CMP			#5
					BCS			MH_R5
													
					SET			PD,ZZ
					CLR			PD,FZ
MH_R5:					

					LDA			R_ALL			;0.5--1
					CMP			#5
					BCC			RH_R10
					LDA			R_ALL
					CMP			#10
					BCS			RH_R10
					CLR			PD,ZZ
					CLR			PD,FZ
RH_R10:					
					LDA			R_ALL			;1----1.5
					CMP			#10
					BCC			RH_R15
					LDA			R_ALL
					CMP			#15
					BCS			RH_R15
					CLR			PD,ZZ
					SET			PD,FZ
RH_R15:
					LDA			R_ALL			;1.5----20
					CMP			#15
					BCC			RH_R20
					LDA			R_ALL
					CMP			#20
					BCS			RH_R20
					CLR			PD,ZZ
					CLR			PD,FZ
RH_R20:
				
					LDA			R_ALL
					BCC			R_D20
					
					JSR			Delay
					JSR			Delay
																							
					DEC			MH_T
					BNE			MH_TN3
					CLR			FLAG_MH,0	
					JMP			END_MH		;转了3个周期了(跳转出去)	
MH_TN3:
					LDA			#0
					STA			R_ALL						
R_D20:	

					JMP			MH_LOOP	
END_MH:					
					CLR			PD,ZZ
					CLR			PD,FZ
					RTS
					.ENDP		
					
					
	
;..........................................
;               预约函数
;..........................................	
.PUBLIC				YY_WORK	
YY_WORK:			.PROC	
					LDA		#60
					STA		BT_M
					STA		BT_S
					SET		FLAG1,SYS_G
YY_LOOP:			
					;显示时间
					SM_SHOW		YY_TIME
					TST			FLAG1,MH_SHINE
					BEQ			YY_NSHINE
					SET			LED_BUF4,5
					JMP			YY_NSHINE2			
YY_NSHINE:					
					CLR			LED_BUF4,5
YY_NSHINE2:							
					;检测门盖
					TST			PB,MG
					BEQ			YY_NKG		
					JSR			Delay
					TST			PB,MG
					BEQ			YY_NKG
								;.................预约开盖报警
					SET			E_FLAG,YY_AQKG
					JSR			WARM
					
YY_NKG:					
					;检测时间到
					TST		FLAG1,SYS_G
					BNE		SYS_NEND
					
					DEC		YY_TIME
					BNE		SYS_NNE
					JMP		YY_END	
								
SYS_NNE:							
					LDA		#60
					STA		BT_M
					STA		BT_S
					SET 	FLAG1,SYS_G		
SYS_NEND:			
					
					JSR		CHECK_P
					
					JMP		YY_LOOP
YY_END:					
					RTS
					.ENDP
	

;..........................................
;               进水
;..........................................
.PUBLIC				W_INPUT
W_INPUT:			.PROC
					
					LDA			#20
					STA			BT_M
					LDA			#60
					STA			BT_S
					STA			SYS_S	
					SET			FLAG1,SYS_G
					
					
					TST			FLAG2,BF_BG
					BEQ			W_NJJ
					TST			FLAG2,XD_BS
					BNE			W_NJJ							   
					LDA			WASH_TIMES
					STA			WASH_TEMP
					DEC			WASH_TEMP
					DEC			WASH_TEMP
					SET			FLAG1,SM_G						
W_NJJ:
									
LOOP_IN:			
					;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<					
					;测水位     (比较设定值和测量值得来判断水位到了没有)
					;BJ16是一个自己定义个宏 
					;SW_SET_H   SW_SET_L  是设定值
					
					BJ16		SW_H,SW_L,SW_SET_H,SW_SET_L    
															
					TST			MATH_FLAG,M_XY     
					BEQ			JS_SNXY				 	   
					                                        ;测量的值小于设定值,则跳出排水 							
					CLR			FLAG1,SYS_G		     	;水位到了 ;清超时累计标记
					CLR			FLAG1,SM_G
					jmp			END_WIN																
					
JS_SNXY:			
					;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
					
					;如果超过定义时间就不走
					TST			FLAG2,BF_BG
					BEQ			W_NJJ3
							
					LDA			WASH_TIMES
					CMP			WASH_TEMP
					BNE			W_TG
					CLR			FLAG1,SM_G
W_TG:								

W_NJJ3:				
	
					JSR			CHECK_S			;检测暂停					
					JSR			CHECK_P		  	;检测电源
					
					TST			FLAG1,SYS_G  	;检测超时
					BNE			W_NCS			
					SET			E_FLAG,JS_CS						 ;.....................超时报警
					JSR			WARM
					LDA			#20
					STA			BT_M
					LDA			#60
					STA			BT_S
					SET			FLAG1,SYS_G							
W_NCS:											

					SET			PC,JS	
					CLR			PC,AK		
					JMP			LOOP_IN
					
END_WIN:			
  					;................A口6秒延时........
  					LDA			#1
					STA			BT_M
					LDA			#6
					STA			BT_S	
					SET			FLAG1,SYS_G
					SET			FLAG2,AK_W
AK_LOOP:				
					CLR			PC,JS
					SET			PC,AK
					JSR			CHECK_P
					JSR			CHECK_S						
					TST			FLAG1,SYS_G
					BNE			AK_NE
					CLR			FLAG2,AK_W
					JMP			END_AK
AK_NE:					
					JMP			AK_LOOP				
END_AK:

					TST			FLAG2,BF_BG
					BEQ			W_NJJ2
					TST			FLAG2,XD_BS
					BNE			W_NJJ2
					LDA			WASH_TEMP			;减掉定义的时间
					STA			WASH_TIMES
					LDA			#60
					STA			SYS_S											
W_NJJ2:

					RTS
					.ENDP
					
					




;..........................................
;               排水
;..........................................
.PUBLIC				W_OUTPUT
W_OUTPUT:			.PROC
					
					LDA			WASH_TIMES
					STA			WASH_TEMP
					DEC			WASH_TEMP
					DEC			WASH_TEMP
										
					LDA			#3
					STA			BT_M
					LDA			#60
					STA			BT_S
					STA			SYS_S	
					SET			FLAG1,SYS_G	
					SET			FLAG1,SM_G
O_LOOP1:
					JSR			CHECK_S
					JSR			CHECK_P
											
					TST			FLAG1,SYS_G		;检测排水超时
					BNE			PS_NJCS
					SET			E_FLAG,PS_CS							;......超时报警
					JSR			WARM
					LDA			#3
					STA			BT_M
					LDA			#60
					STA			BT_S
					SET			FLAG1,SYS_G
PS_NJCS:			
					;排水超过2分钟后时间不走
					LDA			WASH_TIMES
					CMP			WASH_TEMP
					BNE			W_TG2
					CLR			FLAG1,SM_G
W_TG2:				
					SET			PC,AK
					SET			PD,PS
					
					;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<			
					BJ16		SW_H,SW_L,#12H,#D0H
					TST			MATH_FLAG,M_DY
					BEQ			P_SWNE			
					
					LDA			#60
					STA			BT_S
					LDA			#1
					STA			BT_M
					SET			FLAG1,SYS_G						
					JMP			O_LOOP2	
P_SWNE:				
					;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
					JMP			O_LOOP1
O_LOOP2:
					SET			PC,AK
					SET			PD,PS
					JSR			CHECK_S
					JSR			CHECK_P
					
					TST			FLAG1,SYS_G   ;排水延时时间到
					BNE			PS_DNE
					JMP			E_PS		
PS_DNE:
					JMP			O_LOOP2
E_PS:					
					LDA			WASH_TEMP			;减掉定义的时间
					STA			WASH_TIMES
					LDA			#60
					STA			SYS_S		
					
					RTS
					.ENDP


;.................................................................
;               洗涤(BT_M ,BT_S)
;.................................................................
.PUBLIC				XD_WORK
XD_WORK:			.PROC
					;LDA			WASH_TIMES
					;STA			WASH_TEMP
					;LDA			WASH_TEMP
					;SBC			BT_M
					;STA			WASH_TEMP
					
					LDA			#60
					STA			SYS_S
					
					LDA			#0
					STA			R_ALL
					
					JSR			GET_SL   ;获取水流		
					SET			FLAG1,SM_G
					SET			FLAG1,SYS_G
					
					;.....判断溢注.........
					TST			FLAG3,YZ
					BEQ			XD_NYZ
					LDA			#20
					STA			YZ_T
					SET			FLAG3,YZW
XD_NYZ:				
								
XD_LOOP:					 
					
					TST			FLAG3,YZW
					BEQ			XD_YZ
					SET			PC,JS
					JMP			XD_YZ2							
XD_YZ:					
					CLR			PC,JS			
XD_YZ2:					
						           

					JSR			CHECK_P		;暂停					
					JSR			CHECK_S		;电源
;....................开盖报警........................................................
					TST			PB,MG
					BEQ			XD_NKG		
					JSR			Delay
					TST			PB,MG
					BEQ			XD_NKG
					SET			E_FLAG,AQKG	
					JSR			WARM
												;.................洗涤开盖报警......
													
XD_NKG:								
;...................浸泡时候的转转停停在这里处理.....................................									
					TST			FLAG2,FLAG_JP		;如果是浸泡,就判断浸泡中的洗停
					BEQ			XD_NJP			
					JSR			JP_GET_NUM
					JMP			XD_NJP2		
XD_NJP:					
												 ;不是浸泡就一直洗		
					SET			FLAG2,FLAG_JPW   ;浸泡洗涤工作标记(为1的时候就洗,为0就停)
XD_NJP2:			
		
					TST			FLAG2,FLAG_JPW
					BNE			XD_NNN
					CLR			PD,ZZ
					CLR			PD,FZ
					JMP			XD_NNN2													
XD_NNN:				
;;.................................................................................	
					;处理水流
					LDA			R_ALL
					CMP			XD_Z1
					BCS			YY1
					SET			PD,ZZ				;ZZ				
					CLR			PD,FZ
YY1:					
					LDA			R_ALL
					CMP			XD_Z1
					BCC			YY2
						
					LDA			R_ALL
					CMP			XD_Z2
					BCS			YY2				
					
					CLR			PD,ZZ			
					CLR			PD,FZ
					
YY2:					
					;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
					TST			FLAG3,SW_WORK
					BNE 		WS_XDBCS
					
					
					LDA			R_ALL
					CMP			SW_C
					BNE			XD_SWNC
					NOP					
					
						
					BJ16		SW_H,SW_L,SW_D_H,SW_D_L
					TST			FLAG4,SW_BJ
					BEQ			NYNY
					BJ16		SW_H,SW_L,SW_SET_H,SW_SET_L
					CLR			FLAG4,SW_BJ
NYNY:				
					TST			MATH_FLAG,M_DY
					BEQ			W_XNC
					
					CLR			FLAG1,SM_G
					CLR			FLAG1,SYS_G		
					
					LDA			BT_M		;...保存时间..............
					STA			XD_TM
					LDA			BT_S
					STA			XD_TS		
					LDA			SYS_S
					STA			XD_TS2
					
					SET			FLAG2,XD_BS
					JSR			W_INPUT		;........洗涤补水.............
					CLR			FLAG2,XD_BS
					
					LDA			XD_TM
					STA			BT_M
					LDA			XD_TS
					STA			BT_S						
					LDA			XD_TS2
					STA			SYS_S	
					
					SET			FLAG1,SM_G
					SET			FLAG1,SYS_G
								
W_XNC:					
XD_SWNC:
WS_XDBCS:
					;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<					
					LDA			R_ALL
					CMP			XD_Z2
					BCC			YY3
					
					LDA			R_ALL
					CMP			XD_Z3
					BCS			YY3
					
					SET			PD,FZ
					CLR			PD,ZZ
					
YY3:					
					
					LDA			R_ALL
					CMP			XD_Z3
					BCC			YY4
					
					LDA			R_ALL
					CMP			XD_Z4	
					BCS			YY4
					
					CLR			PD,ZZ			
					CLR			PD,FZ
YY4:						

					LDA			R_ALL
					CMP			XD_Z4
					BCC			YY5
					
					LDA			#0
					STA			R_ALL				
YY5:					
									
XD_NNN2:			

;.....................................................................				
					SET			PC,AK
					
					;........判断时间到了没有?........................
					TST			FLAG1,SYS_G
					BNE			XD_NE
					CLR			PD,ZZ
					CLR			PD,FZ
					JMP			END_XD									
XD_NE:									

					;*********如果在是无水模式就检测程序键*****************
					TST				FLAG3,SW_WORK
					BEQ				XD_YYY
					TST				KEY_S,2
					BEQ				XD_YYY
					TST				KEY_L,2
					BNE				XD_YYY
					JSR				Delay
					TST				KEY_S,2
					BEQ				XD_YYY
					SET				KEY_L,2
					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							
XD_YYY:
					;*****************************************************
					JMP			XD_LOOP
END_XD:					
					
					;LDA			WASH_TEMP
					;STA			WASH_TIMES
					
					RTS
					.ENDP
					
					
					
					
.PUBLIC				PSBH_WORK
PSBH_WORK:			.PROC

					LDA			#7
					STA			BH_S
					SET			FLAG3,BH_JS
					SET			FLAG2,BH_7
BH_LOOP:			

⌨️ 快捷键说明

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