akey_s.asm

来自「周立功单片机DP51+程序」· 汇编 代码 · 共 63 行

ASM
63
字号
;参数定义								
SPBM	DATA   	60H				
KDKEY	BIT    	P1.2	;定义键盘检测位
FRIT	EQU    	P1      ;定义P1口
;程序开始	
	ORG    	4000H			
	LJMP   	MAIN			
								
	ORG    	4100H	;程序从4100H单元开始存放
MAIN:	MOV    	SP,#SPBM;给堆栈指针赋初值
	
KEY1:	
	ACALL	KEY	;调KEY子程序
	
	AJMP	KEY1	;继续

KEY:	
	PUSH	PSW
	PUSH	ACC				
KEYREP:	MOV	R1,#0FFH;赋初值
	MOV	A,#00H
	ACALL	TXDBYTE
	JB	KDKEY,KEYREP
	ACALL	DELAY
	MOV	R1,#00H			
	MOV	A,#0FEH	;是,则判断其键值
KEYZHI:	
	CLR     P1.7
	ACALL	DELAY
	SETB	P1.7
	CLR     P1.7
	ACALL	DELAY
	SETB	P1.7
	ACALL	TXDBYTE
	JNB	KDKEY,KEYRET	;是,则保存退出
	RL	A		;否则检测下一个键
	INC	R1
	CJNE	A,#7FH,KEYZHI	;检测完了吗?
KEYRET:	
	POP	ACC
	POP	PSW
	RET

TXDBYTE:
	PUSH  	 PSW
	PUSH  	 ACC	
	MOV  	 R3,#08H
TXDUP:	RLC  	 A	;
	MOV      P1.0,C
	CLR  	 P1.1
	SETB     P1.1
	DJNZ     R3,TXDUP
	POP  	 ACC
        POP	 PSW
	RET						

DELAY:    MOV  R7,#10H
DELAY0:   MOV  R6,#10H
DELAY1:   DJNZ R6,DELAY1
          DJNZ R7,DELAY0
          RET	
          END						

⌨️ 快捷键说明

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