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

📄 5.asm

📁 我的大学单片机课程案例和ppt
💻 ASM
字号:
	ORG	0H
	LJMP	START
	ORG	30H
START:	MOV	P0,#0FFH	;P0口置1
	MOV	P2,#0H		;P2口清0
	MOV	30H,#0		;初始显示00
	MOV	31H,#0		;
	MOV	DPTR,#TABLE	;将数据表TABLE的首地址赋给DPTR
SCANK:	
	MOV	R4,#2		;数码管数目赋给R4
	MOV	R1,#30H		;R1装显示内容的地址
	MOV	R2,#01000000B	;R2装位选信号
DISLOOP:
	MOV	P1,#0FFH
	CLR	P1.2	;P1.2清0,扫描第1行
	MOV	A,P1	;读键盘至A
	ANL	A,#00000011B
	XRL	A,#00000011B;判断A的低二位是否为1
	JZ	SCANL2	;如果低二位为1,则无按键,转第二行扫描	
	LCALL	DELAY10MS;延时10ms(去抖延时)
	MOV	A,P1	;读键盘至A
	ANL	A,#00000011B
	XRL	A,#00000011B;判断A的低二位是否为1
	JZ	SCANL2	;如果低二位为1,则无按键,转第二行扫描
	MOV	A,P1	;读键盘至A
	ANL	A,#00000011B;保留低二位的结果
	CJNE	A,#00000010B,NOK0;不是K0键,转NOK0
	MOV	30H,#2	;是K0键将30H地址赋值为2
	MOV	31H,#3	;将31H地址赋值为3
	LJMP	DISPLAY	;转显示子程序
NOK0:	MOV	30H,#8	;不是K0键则是K1。将30H地址赋值为8
	MOV	31H,#9	;将31H地址赋值为9
	LJMP	DISPLAY	;转显示子程序
SCANL2 :MOV	P1,#0FFH
	CLR	P1.3	;P1.3清0,扫描第2行
	MOV	A,P1	;读键盘至A
	ANL	A,#00000011B
	XRL	A,#00000011B;判断A的低二位是否为1
	JZ	DISPLAY	;如果低二位为1,则无按键,转DISPLAY
	LCALL	DELAY10MS;延时10ms(去抖延时)
	MOV	A,P1	;读键盘至A
	ANL	A,#00000011B
	XRL	A,#00000011B;判断A的低二位是否为1
	JZ	DISPLAY	;如果低二位为1,则无按键,转DISPLAY
	MOV	A,P1	;读键盘至A
	ANL	A,#00000011B;保留低二位的结果
	CJNE	A,#00000010B,NOK2;不是K2键,转NOK2
	MOV	30H,#6	;是K2键将30H地址赋值为6
	MOV	31H,#8	; 将31H地址赋值为8
	LJMP	DISPLAY	;转显示子程序	
NOK2:	MOV	30H,#7	;不是K2,则一定是K3。将30H地址赋值为7
	MOV	31H,#7	;将31H地址赋值为7
		
DISPLAY:MOV	A,@R1	;R1中的数据作为地址,取数据给A
	MOVC	A,@A+DPTR;将(A+DPTR)地址中的值赋给A
	MOV	P2,R2	;选择第一个数码管
	MOV	P0,A	;送到P0口数码管显示
	LCALL	DELAY	;显示延时
	MOV	A,R2	;位选信号左移
	RL	A	;
	MOV	R2,A	;
	INC	R1	;下一个显示的内容的地址
	DJNZ	R4,DT	;显示完转DT
	LJMP	SCANK	;重新开始扫描
DT:	LJMP	DISLOOP	
DELAY10MS:
	MOV	R6,#20
D1:	MOV	R7,#200
D2:	DJNZ	R7,D2
	DJNZ	R6,D1
	RET
DELAY:
	MOV	R6,#100
D3:	MOV	R7,#100
D4:	DJNZ	R7,D4
	DJNZ	R6,D3
	RET
TABLE:	DB	0C0H,0F9H,0A4H,0B0H		;0,1,2,3
	DB	99H,92H,82H,0F8H,80H,90H	;4,5,6,7,8,9
	END


⌨️ 快捷键说明

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