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

📄 长陆.asm

📁 51单片机控制MAX530输出电压
💻 ASM
字号:
	    ORG 0000H
 		LJMP START
 		ORG 0030H
START:  MOV 00H,#00H
		MOV 01H,#00H	
        ORL  P1,#0FFH
MAIN1:	JNB  P1.2,MAI1
MAIN2:	JNB  P1.3,MAI2
		AJMP START
MAI1:	LCALL DELAY0;调用10毫秒延迟
		JNB  P1.2,HOU2 ;防抖处理,键按下转	
		LJMP START
MAI2:	LCALL DELAY0;调用10毫秒延迟
		JNB  P1.3,HOU1 ;防抖处理,键按下转	
		AJMP START	
		
HOU2:	CLR  P1.0
        LCALL DELAY8
        SETB P1.0
		CLR  P3.6
        ORL  P1,#0FFH		
MAIN3:  JNB  P1.4,MAI3
MAIN4:	JNB  P1.5,MAI4
		AJMP HOU2
MAI3:	LCALL DELAY0;调用10毫秒延迟
		JNB  P1.4,HA2 ;防抖处理,键按下转	
		LJMP HOU2
MAI4:	LCALL DELAY0;调用10毫秒延迟
		JNB  P1.5,HM2 ;防抖处理,键按下转	
		LJMP HOU2	
		
HOU1:	CLR  P1.1
        LCALL DELAY8
        SETB P1.1
        CLR  P3.6
        ORL  P1,#0FFH
MAIN5:	JNB  P1.4,MAI5
MAIN6:	JNB  P1.5,MAI6
		AJMP HOU1
MAI5:	LCALL DELAY0;调用10毫秒延迟
		JNB  P1.4,HA1 ;防抖处理,键按下转	
		LJMP HOU1
MAI6:	LCALL DELAY0;调用10毫秒延迟
		JNB  P1.5,HM1 ;防抖处理,键按下转	
		LJMP HOU1
 		
				
HA2:    LJMP CUA2
CUA2:   SETB P1.6
        LCALL LOOP1
        CLR  P1.6
        LCALL DELAY1;粗增量
        SETB P1.6
        CJNE R1,#02H,CUA2;粗增量高位最终值
        CJNE R0,#0CAH,CUA2
        CLR P1.0
        LCALL DELAY8
XIA2:   SETB P1.0
        SETB P1.6
        LCALL LOOP1
        CLR  P1.6
        LCALL DELAY2;细增量
        SETB P1.6
        CJNE R1,#03H,XIA2;细增量高位最终值
        CJNE R0,#48H,XIA2        
        LCALL DELAY3;保持
DEA2:   SETB P1.6
		LCALL LOOP2;快减
		CLR  P1.6
        LCALL DELAY6
        SETB P1.6
        CJNE R1,#00H,DEA2;减少最终值
        CJNE R0,#00H,DEA2
        LJMP START
HA1:    LJMP CUA1
HM1:    LJMP CM4
HM2:    LJMP CM1
CM1:	ORL  P1,#0FFH
		CLR P1.1
MAIN7:  JNB  P1.5,MAI7;粗增量是否开始
		AJMP MAIN7
MAI7:	LCALL DELAY0;调用10毫秒延迟
		JNB  P1.5,CUM2 ;防抖处理,键按下转	
        AJMP CM1
CUM2:   SETB P1.1
		SETB P1.6
        LCALL LOOP1
        CLR  P1.6
        LCALL DELAY1;粗增量
        SETB P1.6
        CJNE R1,#02H,CUM2;粗增量高位最终值
        CJNE R0,#0CAH,CUM2
CM2:    ORL  P1,#0FFH
		CLR  P1.1
MAIN8:  JNB  P1.5,MAI8;细增量是否开始
		AJMP MAIN8
MEN:	LJMP XIA2
		NOP
		NOP
MAI8:	LCALL DELAY0;调用10毫秒延迟
		JNB  P1.5,XIM2 ;防抖处理,键按下转
		AJMP CM2	        
XIM2:	SETB P1.1
		SETB P1.6
        LCALL LOOP1
        CLR  P1.6
        LCALL DELAY2;细增量
        SETB P1.6
        CJNE R1,#03H,XIM2;细增量高位最终值
        CJNE R0,#48H,XIM2
        
CM3:	ORL  P1,#0FFH
        CLR P1.1
MAIN9:	JNB  P1.5,MAI9;减量是否开始
		AJMP MAIN9
MEN1:	LJMP DEA2
		NOP
		NOP
MAI9:	LCALL DELAY0
		JNB  P1.5,DEM2    
		AJMP CM3
DEM2:	SETB P1.1
		SETB P1.6
		LCALL LOOP2;快减
		CLR  P1.6
        LCALL DELAY6
        SETB P1.6
        CJNE R1,#00H,MEN1;减少最终值
        CJNE R0,#00H,MEN1
        LJMP START

CUA1:   SETB P1.6
        LCALL LOOP1
        CLR  P1.6
        LCALL DELAY4;粗增量
        SETB P1.6
        CJNE R1,#0DH,CUA1;粗增量高位最终值
        CJNE R0,#9AH,CUA1
XIA1:   SETB P1.6
        LCALL LOOP1
        CLR  P1.6
        LCALL DELAY5;细增量
        SETB P1.6
        CJNE R1,#0FH,XIA1;细增量高位最终值
        CJNE R0,#0FFH,XIA1       
        LCALL DELAY3;保持
DEA1:   SETB P1.6
		LCALL LOOP2;快减
		CLR  P1.6
        LCALL DELAY7
        SETB P1.6
        CJNE R1,#00H,DEA1;减少最终值
        CJNE R0,#00H,DEA1
        LJMP START

CM4:	ORL  P1,#0FFH
		CLR P1.0
MAIN10: JNB  P1.5,MAI10;粗增量是否开始
		AJMP MAIN10
MAI10:	LCALL DELAY0;调用10毫秒延迟
		JNB  P1.5,CUM1 ;防抖处理,键按下转
        AJMP CM4
CUM1:   SETB P1.0
		SETB P1.6
        LCALL LOOP1
        CLR  P1.6
        LCALL DELAY4;粗增量
        SETB P1.6
        CJNE R1,#0DH,CUM1;粗增量高位最终值
        CJNE R0,#9AH,CUM1
CM5:    ORL  P1,#0FFH
		CLR P1.0
MAIN11: JNB  P1.5,MAI11;细增量是否开始
		AJMP MAIN11
MAI11:  LCALL DELAY0
		JNB  P1.5,XIM1
        AJMP CM5
MEN2:	LJMP DEA1
		NOP
		NOP
XIM1:	SETB P1.0		
		SETB P1.6
        LCALL LOOP1
        CLR  P1.6
        LCALL DELAY5;细增量
        SETB P1.6
        CJNE R1,#0FH,XIA1;细增量高位最终值
        CJNE R0,#0FFH,XIA1        
CM6:	ORL  P1,#0FFH
		CLR P1.0
MAIN12:	JNB  P1.5,MAI12
		AJMP MAIN12
MAI12:	LCALL DELAY0
		JNB  P1.5,DEM1
		AJMP CM6
DEM1:	SETB P1.0
		SETB P1.6
		LCALL LOOP2;快减
		CLR  P1.6
        LCALL DELAY7
        SETB P1.6
        CJNE R1,#00H,MEN2;减少最终值
        CJNE R0,#00H,MEN2
        LJMP START


;延迟
LOOP1:  MOV DPTR , #0FFFFH
        MOVX @DPTR , A
    	MOV DPTR , # 7FFFH 
    	MOV A , 00H ;输出低8 位
    	MOVX @DPTR , A
    	MOV DPTR , # 4FFFH	 	
      	MOV A , 01H ;输出高4 位
   	    MOVX @DPTR , A    
        MOV DPH,01H
		MOV DPL,00H
		INC DPTR
		MOV 01H,DPH
		MOV 00H,DPL
		RET
		
LOOP2:	MOV DPTR , #0FFFFH
        MOVX @DPTR , A
    	MOV DPTR , # 7FFFH 
    	MOV A , 00H ;输出低8 位
    	MOVX @DPTR , A
    	MOV DPTR , # 4FFFH	 	
      	MOV A , 01H ;输出高4 位
   	    MOVX @DPTR , A    
        MOV DPH,01H
		MOV DPL,00H
		DJNZ 00H,DIL;低8位减为0
		DJNZ 01H,DIL
DIL:	RET
		
DELAY0:	MOV R3,#27  ;10毫秒延迟
DL1:	MOV R4,#200
DL2:	DJNZ R4,DL2
		DJNZ R3,DL1
		RET

DELAY1:	MOV R3,#13 ;5毫秒延迟
DL3:	MOV R4,#205
DL4:	DJNZ R4,DL4
		DJNZ R3,DL3
		RET
		
DELAY2:	MOV R3,#38  ;14毫秒延迟
DL5:	MOV R4,#199
DL6:	DJNZ R4,DL6
		DJNZ R3,DL5
		RET

DELAY3:	MOV R3,#20  ;2秒延迟
DL7:	MOV R4,#250
DL8:	MOV R5,#200
DL9:	DJNZ R5,DL9
		DJNZ R4,DL8
		DJNZ R3,DL7
		RET

DELAY4:	MOV R3,#47  ;1毫秒延迟
DL10:	MOV	R4,#10	
DL11:	DJNZ R4,DL11
		DJNZ R3,DL10
		RET

DELAY5:	MOV R3,#141  ;3毫秒延迟
DL12:	MOV	R4,#10	
DL13:	DJNZ R4,DL13
		DJNZ R3,DL12
		RET

DELAY6:	MOV R3,#60  ;2.38毫秒延迟
DL14:	MOV	R4,#20	
DL15:	DJNZ R4,DL15
		DJNZ R3,DL14
		RET

DELAY7:	MOV R3,#13 ;5毫秒延迟
DL16:	MOV R4,#20
DL17:	DJNZ R4,DL17
		DJNZ R3,DL16
		RET
		
DELAY8:	MOV R3,#250  ;100毫秒延迟
DL18:	MOV	R4,#205	
DL19:	DJNZ R4,DL19
		DJNZ R3,DL18
		RET
END

⌨️ 快捷键说明

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