7.asm

来自「我的大学单片机课程案例和ppt」· 汇编 代码 · 共 95 行

ASM
95
字号
	ORG	0h
	AJMP	START
	ORG	30h
START:	MOV	P0,#0FFH
	MOV	P2,#01H;选中第1个数码管进行显示
	CLR	20H.0	;标志位初始为0,K1键标志位
	CLR	20H.1	;K2标志位
	CLR	20H.2	;K3标志位
	MOV	DPTR,#TABLE;将数据表TABLE的首地址赋给DPTR
	MOV	TMOD,#01H	;定时器0方式1	
	MOV	R6,#200	;计溢出次数
SCANK:	MOV	P1,#0FFH
	CLR	P1.4	;P1.4清0,扫描第1行
	MOV	A,P1	;读键盘至A
	ANL	A,#00001111B
	XRL	A,#00001111B;判断A的低四位是否为1
	JZ	DISPLAY	;如果低四位为1,则无按键,转DISPLAY	
	LCALL	DELAY10MS;延时10ms(去抖延时)
	MOV	A,P1	;读键盘至A
	ANL	A,#00001111B
	XRL	A,#00001111B;判断A的低四位是否为1
	JZ	DISPLAY	;如果低四位为1,则无按键,转DISPLAY
	MOV	A,P1	;读键盘至A
	ANL	A,#00001111B;保留低四位的结果
	CJNE	A,#00001101B,NOK1;不是K1键,转NOK1
	SETB	20H.0	;是K1键将标志位置1,0-9
	CLR	20H.1	;其他标志位清0
	CLR	20H.2	;
	MOV	R2,#0
	MOV	A,R2
	MOVC	A,@A+DPTR	;将(A+DPTR)地址中的值赋给A
	MOV	P0,A	;送到P0口数码管显示
	LJMP	DISPLAY	;转显示子程序
NOK1:	CJNE	A,#00001011B,NOK2;不是K2键,转NOK2
	SETB	20H.1	;是K2键将标志位置1
	CLR	20H.0	;其他标志位清0
	CLR	20H.2	;
	LJMP	DISPLAY	;转显示子程序
NOK2:	CJNE	A,#00000111B,DISPLAY;不是K3键,转DISPLAY
	SETB	20H.2	;是K3键将标志位置1,9-0
	CLR	20H.0	;其他标志位清0
	CLR	20H.1	;
	MOV	R2,#9
	MOV	A,R2
	MOVC	A,@A+DPTR	;将(A+DPTR)地址中的值赋给A
	MOV	P0,A	;送到P0口数码管显示
	LJMP	DISPLAY	;转显示子程序
DELAY10MS:
	MOV	R6,#10
D1:	MOV	R7,#250
D2:	DJNZ	R7,D2
	DJNZ	R6,D1
	RET

DISPLAY:JB	20H.1,KEY2					
	JB	20H.0,KEY1
	JB	20H.2,KEY3	
KEY2:	LJMP	SCANK	;跳到SCANK,重新开始扫描
KEY1:	
	MOV	TH0,#0ECH	;高八位,5ms
	MOV	TL0,#78H	;低八位
	SETB	TR0		;启动定时器
WAIT1:	JBC	TF0,WAIT2
	JMP	WAIT1
WAIT2:	DJNZ	R6,SCANK	;溢出次数减1
	MOV	R6,#200		;重新赋溢出次数
	CLR	TR0
	INC	R2	
	CJNE	R2,#10,GOKEY1	;判断是否显示数字加到10
	MOV	R2,0		;如加到10,重新赋0
GOKEY1:	MOV	A,R2
	MOVC	A,@A+DPTR	;将(A+DPTR)地址中的值赋给A
	MOV	P0,A	;送到P0口数码管显示	
	LJMP	SCANK	;跳到SCANK,重新开始扫描
KEY3:	
	MOV	TH0,#0ECH	;高八位,5ms
	MOV	TL0,#78H	;低八位
	SETB	TR0		;启动定时器
WAIT3:	JBC	TF0,WAIT4
	JMP	WAIT3
WAIT4:	DJNZ	R6,KEY2
	MOV	R6,#200
	CLR	TR0
	DEC	R2
	CJNE	R2,#0FFH,GOKEY3	;判断是否显示数字减到FF
	MOV	R2,#9		;重新赋9
GOKEY3:
	MOV	A,R2		
	MOVC	A,@A+DPTR	;将(A+DPTR)地址中的值赋给A
	MOV	P0,A	;送到P0口数码管显示
	
	LJMP	SCANK	;跳到SCANK,重新开始扫描
TABLE:	DB	0C0H,0F9H,0A4H,0B0H
	DB	99H,92H,82H,0F8H,80H,90H
	END

⌨️ 快捷键说明

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