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

📄 4_4.asm

📁 单片机的动态显示程序设计
💻 ASM
字号:
动态显示程序设计
DIR:	Mov R0,#79H;置缓冲器指针初值
		MOV r3,#01H
		MOV A,R3
Ld0:	Mov Dptr ,#tf01h;扫描模式一8155H的Pa口
		MoV @dptr,A
		INC DPtr
		mov A,@R0;取现示数据
		ADD A,#0DH ;加偏移置
		MOVc A,@a+dptr;查表取段数据
dir1:	movx @dptr,A;段数据8155H的PB口
		ACALI dely;延时1瓜
		iNC R0
    	mOV A,R3
    	Jb A.5,LDl
    	Rl A
    	MOv R3,A
    	ajmp ld0
LDl:	Ret
DSEG:DB 3FH、06H,5BH,4FH,66H,6DH
      DB 7dh,07H,7FH,6FH,77H,7cH
      DB 39H,5EH,79H,7lH,73H,3EH
      DB 3lH,6EH.1CH,23H,40H,03H
      DB 18H,00,00,00
DUl: 	MOv R7,#02H;延迟于程序
DL:	MOv R6,#0ffH
DU:	DjNZ R6,Dl6
    	DjNz R7,DL
 		ReT
 键输入子程序
KEY1:	ACALL KS1
 	  	JNZ	LK1
NI:		ACALL DELY
		AJMP KEY1
LK1:	ACALL DELY
ASALL 	DELY
ACALL 	KS1
JNZ 	LK2
ACALL 	DELY
AJMP 	KEY1
LK2:	MOV R2,#0FEH
MOV 	R4,#00H
LK4:	MOV DPTR ,#7F01H
		MOV	A,R2
		MOVX @DPTR,A
		INC DPTR
		INC DPTR
		MOVX A,@DPTR
		JB A.0,LONE
		MOV A,#00H
		AJMP LKP
LONE:	JB A.1,LTW0
		MOV	A,#08H
		AJMP LKP
LTW0:	JB A.2,LTHR
		MOV A,#10H
		AJMP LKP
LTHR:	JB A.3,NEXT
		MOV A,#18H
LKP: 	ADD A,R4
		PUSH A
LK3:	ACALL DELY
		ACALL KS1
		JNZ LK3
		POP A
KND:	RET
NEXT:	INC R4
		MOV A,R2
		JNB A.7,KND
		RL,A
		MOV R2,A
		AJMP LK4
KND:	AJMP KEY1
KS1:	MOV DPTR,#7F01H
		MOV A,#00H
		MOVX @DPTR,A
		INC DPTR
		INC DPTR
		MOVX A,@DPRT
		CPL A
		ANL A,#0FH
		RET





DIS:	MOV A,#00000011B
		MOV DPTR,#7F00H
		MOVX @DPTR,A
		MOV R0,#78H
		MOV R3,#7FH
		MOV A,R3
LD:		MOV DPTR,#7F01H
		MOVX @DPTR,A
		INC DPTR
		MOV A,@R0
		ADD A,#0DH
		MOVC @DPTR,A
		ACALL DLY
		MOV A,R3
		JNB A.0,LD1
		RR A
		MOV R3,A
		INC R0
		AJMP LDO
LD1:	SJMP LD1
DSEG:	DB 3FH,06H,5BH,4FH,66H
		DB 6DH,7DH,07H,7FH,67H
		DB 77H,7CH,39H,5EH,79H
		DB 71H,73H,3EH,31H,6EH
		DB 0FFH,00H
DLY:	MOV R7,#02H
DL:		MOV R6,#0FFH
DL1:	DJNZ R6,DL1
		DJNZ R7,DL
		RET
		
		
		ORG 8000H
ST:		MOV DPTR,#7F00H;8155初始化
		MOV A,#03H
		MOVX,@DPTR,A
DIR:	MOV R0,#7eH
		MOV R3,#01H;位选为第一位
		MOV A,R3
LDO:	MOV DPTR,#7F01H;指向8155a口
		MOV @DPTR,A
		INC DPTR
		MOV A,@R0;取显示数据
		ADD A,#0CH;加偏移量
		MOVC A,@PC+A;查表
		MOVX @DPTR,A;去段数据表
		ACALL DIMS;调延时
		INC R0;指向下一缓冲单元
		MOV A,R3
		JB A.7,LD1
LD1:	RET
		ORG 8020H
		DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;0,1,2,3,4,5,6,7
		DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H ;8,9,A,B,C,D,E,F				;段数据表
		
DIMS:	MOV R7,#02H;延时子程序
DL:		MOV R6,@0FFH
DL1:	DJNZ R6,DL1
		DZNL R7,DL
		RET
		
		ORG 8040H
KEY:	LCALL KS	;调用判断有无键按下
		JNZ K1		;有按键,延时去抖
		LCALL DIR	;调显示延时
		SJMP KEY	;无键按下,返回
K1:		LCALL DIR	;两次调用显示延时
		LCALL DIR
		LCALL KS	;查有无键按下
		JNZ K2		;a!=0,有键
		LCALL DIR
		SJMP KEY	;不是按键返回
K2:		MOV R2,#OFEH;扫描方式-》r2(首列扫描)
		MOV R4,#0CH;列号偏移-》r4
K4:		MOV DPTR,#7FO1H;指向8155a
		MOV A,R2
		MOVX @DPTR,A;送列扫描字
		INC DPTR;指向8155c
		INC DPTR
		MOVX A,@DPTR;8155c读行状态
		JB A.0,L1;0行无键查1行
		MOV A,#00H有键按下,行首号到a
		SJMP KP
L1:		JB A.1,L2
		MOV A,#O8H
		SJMP KP
L2:		JB A.2,L3
		MOV A,#10H
		SJMP KP
L3:		JB A.3,XT
		MOV A,#18H
KP:		ADD A,R4;求键号行首键号+列偏移
		PUSH A;入栈保护
K3:		LCALL DIR
		LCALL KS;等键释放
		JNZ K3;未释放等待
		POP A;释放,键号-》a
		RET

XT:		INC R1	;指向下一列,列号+1
		MOV A,R2;判断8列扫描完?
		JNB A.7,KN;完则返回
		RL A;扫描字左移
		MOV R2,A;扫描字-》r2
		SJMP K4;转下列扫描
KN:		SJMP KEY

KS:		MOV DPTR,#7F01H;指向8155a
		MOV A,#00H
		MOVX @DPTR,A
		INC DPTR
		INC DPTR
		MOVX A,@DPTR
		CPL A
		ANL A,#0FH
		RET

⌨️ 快捷键说明

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