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

📄 sdisp.asm

📁 多个仿真例子
💻 ASM
字号:
;该程序实现在三个数码管上显示123,显示停留5秒钟
;然后以0.5秒为间隔闪动5次,不断循环。
;采用静态显示方式
LED	EQU	8000H	;左边第1个数码管的地址
BUFFER	EQU	30H	;显示缓冲区首地址
FLASH	BIT	00H	;闪烁标志
	ORG	0
	LJMP	START
	ORG	30H
START:	MOV	SP,#60H
	SETB	FLASH		;使显示常亮
	MOV	R0,#BUFFER
	MOV	R2,#3		;给显示缓冲区的单元数
	MOV	A,#1
LOOP1:	MOV	@R0,A		;给显示缓冲区赋值
	INC	A
	INC	R0
	DJNZ	R2,LOOP1
LOOP:	LCALL	DISP		;显示数据
	LCALL	DELAY5S		;延时5秒钟
	MOV	R3,#10		;闪烁10次
LL1:	LCALL	DISP
	LCALL	DELAY		;延时0.5秒
	CPL	FLASH		;闪烁标志取反实现显示的闪烁
	DJNZ	R3,LL1
	SETB	FLASH		;闪烁标志置1,实现显示常亮
	SJMP	LOOP
;显示子程序
;当FLASH标志为1时,将显示缓冲区的16进制数显示出来
;当FLASH标志为0时,熄灭所有显示器
;使用寄存器为A、R0、R2和DPTR
DISP:	MOV	R0,#BUFFER
	MOV	R2,#3		;一共有3个数码管
	MOV	DPTR,#LED	;送数码管地址
	JNB	FLASH,DISP2	;若闪烁标志为0,则转移
DISP1:	PUSH  	DPH		;保护数码管地址
	PUSH	DPL
	MOV	A,@R0
	MOV	DPTR,#TAB	;指向显示段码的码表
	MOVC	A,@A+DPTR	;查表将需要显示的数据变换为显示段码
	POP	DPL
	POP	DPH
	MOVX	@DPTR,A		;段码送数码管显示
	INC	R0		;指向下一个要显示的数据
	MOV	A,DPH
	ADD	A,#10H
	MOV	DPH,A		;指向下一个数码管
	DJNZ	R2,DISP1	;没有显示完则继续
	RET
DISP2:	CLR	A
	MOVX	@DPTR,A		;熄灭数码管
	MOV	A,DPH
	ADD	A,#10H
	MOV	DPH,A		;指向下一个数码管
	DJNZ	R2,DISP2
	RET
TAB:	DB	3FH,06H,5BH,4FH,66H,6DH,7DH,07H
	DB	7FH,6FH,77H,7CH,39H,5EH,79H,71H
;延时0.5秒子程序
;使用寄存器:R5、R6和R7
DELAY:	MOV	R5,#2		;延时0.5秒子程序
D1:	MOV	R6,#250
D2:	MOV	R7,#250
D3:	NOP
	NOP
	DJNZ	R7,D3
	DJNZ	R6,D2
	DJNZ	R5,D1
	RET
;延时5秒子程序
;使用寄存器:R4
DELAY5S:MOV	R4,#10		;延时5秒子程序
DD1:	LCALL	DELAY
	DJNZ	R4,DD1
	RET
	END


	

⌨️ 快捷键说明

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