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

📄 hr52_10_p1.asm

📁 采用的是凌阳的65系列单片机,型号是2408控制板中有10段水位以及衣物重量测试等功能
💻 ASM
字号:
;;..............................P1..............................
.public			BUZ
BUZ:			.PROC
				lda 		P_BUZ_Ctrl
    			ORA 		#00000110b
    			sta 		P_BUZ_Ctrl
		   		jsr		    Delay
		   		jsr			Delay
       	    	lda 		P_BUZ_Ctrl
    			AND 		#11111001b
    			sta 		P_BUZ_Ctrl  
		   		RTS
		   		.ENDP
		   		
		   		
.public 		Delay
Delay:  		.proc
				LDA		#75
				STA		delay_count2
				lda 	#255
 				sta 	delay_count1
?wait:         	
				dec 	delay_count1
				beq 	?wait1
 				jmp 	?wait
?wait1: 		
 				dec 	delay_count2
 				beq 	?wait2
 				jmp 	?wait
?wait2   		
        		rts
        		.endp           	
        		
        			  
.PUBLIC			DISPLAY
DISPLAY:		.PROC
        		;关所有公共口
        		LDA			P_IOA_Buf
        		AND			#00000111B
        		STA			PA
        	    
        		ASL			COM_BUF
        		TST			COM_BUF,5
        		BEQ			COM_N5
       			LDA			#01H
       			STA			COM_BUF 
				
COM_N5: 
       			   		
        		TST			COM_BUF,0
        		BEQ			COM_BN0	  		 		
        		LDA			LED_BUF1
        		STA			LED_TEMP	   		
        		JSR			Send_164
        			   		
        		SET			PA,COM1
        		
        		JSR			NNOP
       			
       			TST			PB,CK1        ;..KEY1
       			BEQ			S_K1
      			SET			KEY_S,0
      			JMP			S_K1_D			
S_K1:       			
       			CLR			KEY_S,0
       			CLR			KEY_L,0
S_K1_D:       			
        		

        		
        		TST			PB,CK2        ;...KEY2
        		BEQ			S_K2	
				SET			KEY_S,1  
				JMP			S_K2_D        		
S_K2:
        		CLR			KEY_S,1
        		CLR			KEY_L,1
S_K2_D:        		
        		
        		
        		
        					   		

COM_BN0:        			   	
        		TST			COM_BUF,1
        		BEQ			COM_BN1  		
        		LDA			LED_BUF2
        		STA			LED_TEMP	   		
        		JSR			Send_164
        					   		
        		SET			PA,COM2	   	
        		
        		JSR			NNOP
        		
        		TST			PB,CK1                ;.......KEY3
        		BEQ			S_K3
        		SET			KEY_S,2
        		JMP			S_K3_D
S_K3:        		
       			CLR			KEY_S,2	 		
        		CLR			KEY_L,2
S_K3_D:        			
			

        					   		
   			   	TST			PB,CK2                ;.....KEY4..
   			   	BEQ			S_K4
   			   	SET			KEY_S,3
   			   	JMP			S_K4_D
S_K4:
   				CLR			KEY_S,3
   				CLR			KEY_L,3
S_K4_D:   						   		
        			   		
        			   		
        			   		
        			   		
COM_BN1:        	   			
        		TST			COM_BUF,2
        		BEQ			COM_BN2	   		
        		LDA			LED_BUF3
        		STA			LED_TEMP	   		
        		JSR			Send_164
        					   		
        		SET			PA,COM3	   
        		
        		JSR			NNOP
        		
        		TST			PB,CK1              ;.....KEY5
        		BEQ			S_K5
       			SET			KEY_S,4	
       			JMP			S_K5_D 		
S_K5:
				CLR			KEY_S,4
				CLR			KEY_L,4
S_K5_D:        		
        		

        		
        		TST			PB,CK2				;.......KEY6
        		BEQ			S_K6
      			SET			KEY_S,5
      			JMP			S_K6_D
S_K6:        		
        		CLR			KEY_S,5
        		CLR			KEY_L,5
S_K6_D:        			   		
 			   		
        			   		
COM_BN2:        			   				   		
        		TST			COM_BUF,3
        		BEQ			COM_BN3	   		
        		LDA			LED_BUF4
        		STA			LED_TEMP	   		
        		JSR			Send_164
        					   		
        		SET			PA,COM4	   		
        			   		
		   		
        			   		
COM_BN3:        	   			   		
       			TST			COM_BUF,4
        		BEQ			COM_BN4	   		
        		LDA			LED_BUF5
        		STA			LED_TEMP	   		
        		JSR			Send_164	
        				   		
        		SET			PA,COM5	   		
	   		
COM_BN4:         			   		
        			 
        		RTS	 
        		.ENDP
        		
        		
        		
        		
        		

.PUBLIC			Send_164		
Send_164:		.PROC
 				LDA			#8
 				STA			TEMP_164
Loop_164:					
				;	
				CLR			PA,C_164			;拉低数据线
				;
				TST			LED_TEMP,0			
				BEQ			N1_164			
				CLR			PA,D_164		
				JMP			N2_164		
N1_164:
				SET			PA,D_164			
N2_164:			
				;
				SET			PA,C_164			;拉高,锁存状态
				
				LSR			LED_TEMP			;右移一位
				;			
				DEC			TEMP_164			;判断够8次没有
				BNE			T164_N0
				JMP			END_164
				
T164_N0:				
				JMP			Loop_164		
END_164:					
				RTS
				.ENDP			   	
				


.PUBLIC			NNOP
NNOP:			.PROC
				LDA			#135			;90
				STA			TEMP_164
D_wait:         	
				dec 	TEMP_164
				beq 	D_wait1
 				jmp 	D_wait
D_wait1:						
				RTS	
				.ENDP				
				
				
    			    		
.PUBLIC			CHECK_P
CHECK_P:		.PROC
				TST			KEY_S,5
				BEQ			P_NK5
				TST			KEY_L,5
				BNE			P_NK5
				JSR			Delay
				TST			KEY_S,5
				BEQ			P_NK5		   		
        		SET			KEY_L,5
        		JSR			BUZ
        		JSR			$		   		        				   				   		
P_NK5:        	
				TST			E_FLAG,SWQ
				BEQ			SWQ_B
				JSR			WARM
SWQ_B:   		
        		RTS		   		
        		.ENDP		   		



.PUBLIC		     CHECK_S
CHECK_S:	     .PROC
				 TST		KEY_S,4
				 BEQ		LONG_JP3
				 TST		KEY_L,4
				 BNE		LONG_JP3
				 JSR		Delay			 
				 TST		KEY_S,4
				 BEQ		LONG_JP3		
				 SET		KEY_L,4
				 JSR		BUZ	
				 SET		FLAG3,SSS
				 JMP		LOOP_S	
			 	
LONG_JP3:		 JMP		KEY_NS					 				 
LOOP_S:			
				 SET		FLAG1,STOP	 			 
				 LDA		#0
				 STA		ZT_FLAG			;关掉撞桶检测功能
				 LDA		#0
				 STA		PD
				 LDA		#00000100B
				 STA		PC				 
				 TST		KEY_S,4			;检测暂停键再启动
				 BEQ		KEY_NS2
				 TST		KEY_L,4
				 BNE		KEY_NS2
				 JSR		Delay			 
				 TST		KEY_S,4
				 BEQ		KEY_NS2		
				 SET		KEY_L,4
				 JSR		BUZ
				 
				 CLR		FLAG3,SSS
				 ;如果是在A口延时状态,给回6S
				 TST		FLAG2,AK_W
				 BEQ		S_AKNW
				 LDA		#6
				 STA		BT_S		 
S_AKNW:				
				
 				 LDA		#7
				 STA		BH_S	  
				 SET		FLAG1,PS_BH	
				 ;如果是在脱水就重开撞桶检测功能
				 TST		FLAG3,FLAG_TS
				 BEQ		S_NTSZ
				 LDA		#0
				 STA		ZT_FLAG
				 SET		ZT_FLAG,ZT_ALLOW		 
S_NTSZ:				 
				 JMP		KEY_NS		 			 
KEY_NS2:
		
				 JSR		CHECK_P		 
				 
				 ;检测水位键
				 TST		FLAG3,SW_WORK
				 BNE		WS_NJC
				 
				 TST		KEY_S,0
				 BEQ		S_KN1
				 TST		KEY_L,0
				 BNE		S_KN1
				 JSR		Delay
				 TST		KEY_S,0
				 BEQ		S_KN1 
				 TST		LED_BUF2,6			;如果L14亮则锁死水位
				 BNE		S_KN1			
			 	 TST		GC_COUNT,4
				 BNE		S_KN1
				 SET		KEY_L,0
				 JSR		BUZ
				 CLR		FLAG1,WORK
				 INC		SW_COUNT
				 CLR		SHINE2_H,0
				 CLR		SHINE2_L,0
				 CLR		SHINE2_H,7
				 CLR		SHINE2_L,7
				 JSR		GET_NUM_SW
				 SET		FLAG4,SW_BJ
S_KN1:				 
WS_NJC:		
		 
				 ;((((((((((((无水模式中检测程序键盘))))))))))))))))))))))))))))))
				 TST		FLAG3,SW_WORK
				 BEQ		S_NK3		
				 
				 TST		KEY_S,2
				 BEQ		S_NK3
				 TST		KEY_L,2
				 BNE		S_NK3
				 JSR		Delay
				 TST		KEY_S,2
				 BEQ		S_NK3
				 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			 
S_NK3:
				 					 
				JMP			LOOP_S		 
KEY_NS:

				SET		FLAG1,WORK
				CLR		FLAG1,STOP	
				
				RTS
				.ENDP



;............判断大小......................
.PUBLIC		MATH      		
MATH:		.PROC

			LDA			#00H
			STA			MATH_FLAG
						      		
       		LDA			X1
       		CMP			Y1
       		BEQ			BJ1				;高位相等?
       		BCC			BJ2				;高位不相等,判断是大于还是小于		
       		SET			MATH_FLAG,M_DY			;大于
       		JMP			END_MATH  		
BJ2:       		
       		SET			MATH_FLAG,M_XY			;小于
     		JMP			END_MATH
       		
BJ1:       	;(高位x相等,比较低位)	
			LDA			X2
      		CMP			Y2
			BEQ			BJ3			;等于
			BCC         BJ4
			SET			MATH_FLAG,M_DY			;大于

       		JMP			END_MATH  						
BJ4:			
			SET			MATH_FLAG,M_XY			;小于
     		JMP			END_MATH
			
BJ3:			
			SET			MATH_FLAG,M_DDY			;等于

END_MATH:	

			RTS		
			.ENDP






;段码表	
			 ;	 1     2    3    4     5     6     7     8     9     C     E     F    --        
			 ;  48H   9EH  5EH  4BH   57H   D7H   4CH   DFH   5FH   95H   97H   87H   02H  
			 
T_table:	
			DB			DDH		;0
			DB			48H		;1	
			DB			9EH		;2
			DB			5EH		;3	
			DB			4BH		;4
			DB			57H		;5
			DB			D7H		;6
			DB			4CH		;7
			DB			DFH		;8
			DB			5FH		;9
			DB			95H		;C
			DB			97H		;E		
			DB			87H		;F
			DB			02H		;--
       		DB			00H		;全灭

⌨️ 快捷键说明

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