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

📄 off_key.asm

📁 周立功开发板源代码,里面包含了各种关于周立功dp51开发板的源代码
💻 ASM
字号:
;*******************************Copyright (c)********************************
;**                 广州周立功单片机发展有限公司研究所
;**                        http://www.zlgmcu.com
;********************************文件信息*************************************
;文件名:Off_Key.asm
;功能:使用DP-51S实验仪学习键盘的连接处理方法和程序的设计方法
;说明:
;1.检测键盘K1,禁止连击功能.
;2.键盘K1有效一次,显示的数据加1
;3.正确设置跳线JP3使P3.3与KEY1相连,即把跳线置于上端
;5.注意领会禁止连击程序的编写方法和软件实现的键盘去抖动的方法
;最后修改时间:2003年3月21
;*************************************************************************
LED_ADDR	EQU	2000H			;定义键盘、数码管操作地址	
DATA_BUF	DATA	30H			;定义显示缓冲区首地址
DATA_SL		DATA	37H

		ORG	8000H			;伪指令,指定程序从8000H开始存放
		AJMP	MAIN			;跳转指令,程序跳转到MAIN处

		ORG	8100H			;伪指令,指定以下程序从8100H开始存放
MAIN:
		MOV	SP,#60			;给堆栈指针赋初值
		MOV	DATA_BUF,#01H		;数据“1“
		MOV	DATA_BUF+1,#02H		;数据“2”
		MOV	DATA_BUF+2,#03H		;数据“3”	
		MOV	DATA_BUF+3,#04H		;数据“4”
		MOV	DATA_BUF+4,#05H		;数据“5”
		MOV	DATA_BUF+5,#06H		;数据“6”
ON_PROG:	
		JB	P3.3,NO_KEY		;有K1键按下?
		ACALL	DATA_INC		;是,则执行相应的加1程序
NO_KEY:
		ACALL	DISPLAY			;调用显示子程序
		JNB	P3.3,NO_KEY		;判断该案件是否释放?
		ACALL	DISPLAY			;调用显示子程序
		ACALL	DISPLAY			;调用显示子程序
		ACALL	DISPLAY			;调用显示子程序
		ACALL	DISPLAY			;调用显示子程序
		ACALL	DISPLAY			;调用显示子程序
		AJMP	ON_PROG

;***********************
;显示数据加一子程序
;***********************
DATA_INC:
		MOV	A,DATA_BUF+5		;取显示的最后一位数据
		INC	A
		CJNE	A,#10,DATA_NEXT		;判断数据是否满10?
		MOV	A,#00			;是,则重新赋初值
DATA_NEXT:
		MOV	DATA_BUF+5,A		;把该数据送缓冲区保存
		RET
		
;***********************
;LED数码管显示子程序
;***********************
DISPLAY:
		MOV	R7,#06H			;给R7赋初值,存放数码管的个数
		MOV	R0,#DATA_BUF		;把显示缓冲区首地址送R0
		MOV	DATA_SL,#0FEH
LOOP:
		MOV	A,@R0			;取若显示的数据
		ANL	A,#0FH			;屏蔽高位数据
		ACALL	TABLE			;查段码表,得出该数据对应的段码
		MOV	DPTR,#LED_ADDR		;LED数码管地址送DPTR
		MOVX	@DPTR,A
		MOV	A,DATA_SL		;位码送A
		MOV	P1,A			;输出位码
		ACALL	DELAY			;调延时子程序
		MOV	P1,#0FFH		;输出位码
		Rl	A			;取下一个数码管
		MOV	DATA_SL,A		;保存该位码值
		INC	R0			;取下一个数据显示	
		DJNZ	R7,LOOP			;6位数据显示完否?	
		RET

;**************
;延时子程序
;**************
DELAY:	
		MOV	R6,#10H
DELAY0:		MOV	R5,#40H
DELAY1:		DJNZ	R5,DELAY1
		DJNZ	R6,DELAY0
		RET

;查表子程序
TABLE:  	INC     A	          	;基地址加一
        	MOVC    A,       @A+PC    	;查段码表,取其相应的段码
        	RET

DB     		0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,80H,090H	;0-9的段码
DB		088H,083H,0c6H,0a1H,86H,8eH,0bfH,89H,8cH		;A-F、-、P的段码
		;
		END

⌨️ 快捷键说明

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