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

📄 3.asm

📁 3位led显示程序
💻 ASM
字号:
	 	ORG		0000H
		lJMP	START
		ORG		0030H
START:		MOV		30H,#00H	;第一位LED数存放30H
		MOV		31H,#00H	;第二位LED数存放31H
		MOV		32H,#00H	;第三位LED数存放32H
		
START1:		LCALL	DISP
		JNB		P3.0,FUN0	;按键1按下,转键1处理子程序
		JNB		P3.1,FUN1	;按键2按下,转键2处理子程序
	    	JNB		P3.2,FUN2	;按键3按下,转键3处理子程序
		JNB		P3.3,FUN3	;按键4按下,转键4处理子程序
		JNB		F0,START1	;无按键按下,标志位为0,重判
	   	
FUN0:		LCALL	DL10MS		;键1按下,开始处理。调用延时20MS子程序
		JB		P3.0,START1	;返回再判,防抖
		LCALL	DISP		;显示
		JNB		P3.0,$-3	;等待释放,键未释放,跳至上一条,继续显示并等待键释放 
		SETB	F0			;曾经有按键按下,标志位置1 
		LCALL	FUN00		;调用按键1功能子程序 
		AJMP	START1		;跳转判定按键状态
FUN1:	LCALL	DL10MS		;延时10MS,防抖
		JB		P3.1,START1	;再判
		LCALL	DISP		;显示。三字节指令
 		JNB		P3.1,$-3	;等待释放,键未释放,跳至上一条,继续显示并等待键释放。这样可使按下键时,LED不熄灭。
		SETB	F0			;曾经有键按下,标志位置1
		LCALL	FUN11		;调用按键2功能子程序
		AJMP	START1		;跳转判定按键状态
FUN2:		LCALL	DL10MS		;延时10MS
		JB		P3.2,START1	;再判
		LCALL	DISP		;显示。三字节指令
		JNB		P3.2,$-3	;等待释放,键未释放,跳至上一条,继续显示并等待键释放。这样可使按下键时,LED不熄灭。
		SETB	F0			;曾经有键按下,标志位置1
		LCALL	FUN22		;调用按键3功能子程序
		AJMP	START1		;跳转判定按键状态
FUN3:		LCALL	DL10MS		;延时10MS
		JB		P3.3,START1	;再判
		LCALL	DISP		;显示 。三字节指令
		JNB		P3.3,$-3	;等待释放,键未释放,跳至上一条,继续显示并等待键释放。这样可使按下键时,LED不熄灭。
		SETB	F0			;曾经有键按下,标志位置1
		LJMP	START		;转回重新开始

FUN00:		INC		30H			;30H内数加1
		MOV		A,30H		;30H内数送A
		CJNE	A,#0AH,OUT	;30H内数未到0AH,返回判定按键状态。
		MOV		30H,#00H	;30H数加到0AH,清30H
		CLR		F0			;标志位置0
		RET					;返回调用
FUN11:		INC		31H			
		MOV		A,31H
		CJNE	A,#0AH,OUT
		MOV		31H,#00H
		CLR		F0
		RET
FUN22:		INC		32H
		MOV		A,32H
		CJNE	A,#0AH,OUT
		MOV		32H,#00H
		CLR		F0

OUT:		RET


DISP:	
		MOV 	A,30H		;第一位数送A
		MOV 	DPTR,#TAB	;码表首地址
		MOVC 	A,@A+DPTR	;取字形码送A
		MOV 	P1,A		;字形码送P1口
		SETB 	P2.4		;开第一位LED
		ACALL 	DL1MS		;延时
		CLR 	P2.4		;关第一位,防止鬼影
		
		MOV 	A,31H		;第二位数送A
		MOV 	DPTR,#TAB	;码表首地址
		MOVC 	A,@A+DPTR	;取字形码送A
		MOV 	P1,A		;字形码送P1口
		SETB 	P2.5		;开第二位LED
		ACALL 	DL1MS		;延时
		CLR 	P2.5		;关第二位,防止鬼影

		MOV 	A,32H		;第三位数送A
		MOV 	DPTR,#TAB	;码表首地址
		MOVC 	A,@A+DPTR	;取字形码送A
		MOV 	P1,A		;字形码送P1口
		SETB	 P2.6		;开第三位LED
		ACALL	 DL1MS		;延时
		CLR 	P2.6		;关第三位,防止鬼影
		
		RET					;返回调用

DL1MS:		MOV		R2,#2
		MOV		R1,#256		 ;二字节指令
		DJNZ	R1,$		 ;二字节指令
		DJNZ	R2,$-4		 ;R2不为0,转上2条指令
		RET

DL10MS:		MOV		R3,#10
		LCALL	DL1MS		 ;三字节指令
		DJNZ	R3,$-3		 ;R3不为0,转上一条指令
		RET

;共阳8段LED
TAB:		DB		0C0H,0F9H,0A4H,0B0H,099H	;"0"~"4"
        	DB		092H,082H,0F8H,080H,090H	;"5"~"9"
       
		END

⌨️ 快捷键说明

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