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

📄 keyandled.asm

📁 数码管及键盘管理
💻 ASM
字号:

ZLG7289_CS      BIT     P1.7
ZLG7289_CLK     BIT     P1.6
ZLG7289_DIO     BIT     P1.5
ZLG7289_KEY	BIT	P3.2

		ORG      0000H
		AJMP	 MAIN
		ORG	 0030H
MAIN:
		MOV	SP,#60H
		MOV	R7,#20H
		DJNZ	R7,$
		MOV	A,#0A4H
		ACALL	ZLG7289_SENDCOM
		ACALL	DELAY_LONG
		MOV	R0,#8
		MOV	R1,#87H
		MOV	R2,#00H
REDIS:		MOV	A,R2
		ACALL	ZLG7289_SENDDAT
		DEC	R1
		INC	R2
		ACALL	DELAY_LONG
		DJNZ	R0,REDIS

LOOP:		JB	ZLG7289_KEY,LOOP
                CLR     ZLG7289_CS
		MOV	A,#15H
                ACALL   ZLG7289_SENDBYTE
		ACALL	READ_KEY
		SETB    ZLG7289_CS
		ACALL	DELAY_LONG
KEY0:		CJNE	A,#01H,KEY1
		MOV	R1,#87H
		MOV	A,#08H
		ACALL	ZLG7289_SENDDAT
		JNB	ZLG7289_KEY,$
		LJMP	LOOP
KEY1:		CJNE	A,#09H,KEY2
		MOV	R1,#86H
		MOV	A,#09H
		ACALL	ZLG7289_SENDDAT
		JNB	ZLG7289_KEY,$
		LJMP	LOOP
KEY2:		CJNE	A,#11H,KEY3
		MOV	R1,#0CDH
		MOV	A,#0AH
		ACALL	ZLG7289_SENDDAT
		JNB	ZLG7289_KEY,$
		LJMP	LOOP
KEY3:		CJNE	A,#19H,KEY4
		MOV	R1,#0CCH
		MOV	A,#0BH
		ACALL	ZLG7289_SENDDAT
		JNB	ZLG7289_KEY,$
		LJMP	LOOP
KEY4:		CJNE	A,#21H,KEY5
		MOV	R1,#0CBH
		MOV	A,#0CH
		ACALL	ZLG7289_SENDDAT
		JNB	ZLG7289_KEY,$
		LJMP	LOOP
KEY5:		CJNE	A,#29H,KEY6
		MOV	R1,#0CAH
		MOV	A,#0DH
		ACALL	ZLG7289_SENDDAT
		JNB	ZLG7289_KEY,$
		LJMP	LOOP
KEY6:		CJNE	A,#31H,KEY7
		MOV	R1,#0C9H
		MOV	A,#0EH
		ACALL	ZLG7289_SENDDAT
		JNB	ZLG7289_KEY,$
		LJMP	LOOP
KEY7:		CJNE	A,#39H,LOOP
		MOV	R1,#0C8H
		MOV	A,#0FH
		ACALL	ZLG7289_SENDDAT
		JNB	ZLG7289_KEY,$
		LJMP	LOOP
;*********************************************************************
;向ZLG7289发送8位数据,高位在前
;入口参数:ACC待发送的数据
;占用资源:R7、CY、R6
;注:使用此函数前要选择ZLG7289,即执行"CLR  ZLG7289_CS"命令
;*********************************************************************
ZLG7289_SENDBYTE:
                MOV     R7,#8                 ;设发送位数为8位
                CALL    DELAY_LONG            ;延时50us
ZLG7289_SCL1:
                RLC     A
                MOV     ZLG7289_DIO,C
                NOP
                NOP
                NOP
                NOP
                SETB    ZLG7289_CLK
                CALL    DELAY_SHORT           ;延时10us
                CLR     ZLG7289_CLK
                CALL    DELAY_SHORT           ;延时10us
                DJNZ    R7,ZLG7289_SCL1
                RET
;*********************************************************************
;向ZLG7289发送命令子程序
;入口参数:ACC命令字
;占用资源:(ZLG7289_SENDBYTE)R6、R7、CY
;*********************************************************************
ZLG7289_SENDCOM:
                CLR     ZLG7289_CLK
                CLR     ZLG7289_CS
                ACALL   ZLG7289_SENDBYTE
                SETB    ZLG7289_CS
                RET
;*********************************************************************
;带数据的指令发送子程序,将显示数据发送给ZLG7289
;入口参数:R1要发送的命令,A要发送的数据
;占用资源:(ZLG7289_SENDBYTE)R6、R7、CY
;*********************************************************************
ZLG7289_SENDDAT:
                CLR     ZLG7289_CLK
                CLR     ZLG7289_CS
                PUSH    ACC
                MOV     A,R1
                ACALL   ZLG7289_SENDBYTE       ;发送命令字
                POP     ACC
                ACALL   ZLG7289_SENDBYTE       ;发送数据
                SETB    ZLG7289_CS
                RET
;********************************************************************
;读取按键值子程序
;入口参数:无
;出口参数:ACC,按键值
;占用资源:R7
;********************************************************************
READ_KEY:
		CLR	A
		CLR	C
		MOV	R7,#8
ZLG7289_SCL2:
		SETB    ZLG7289_CLK
                ACALL   DELAY_SHORT           ;延时10us
		SETB	ZLG7289_DIO
		MOV     C,ZLG7289_DIO
		RLC	A
                CLR     ZLG7289_CLK
                ACALL   DELAY_SHORT           ;延时10us
                DJNZ    R7,ZLG7289_SCL2
		RET
;********************************************************************
;软件延时子程序1
;占用资源:R6
;********************************************************************
DELAY_LONG:     MOV     R6,#100
                DJNZ    R6,$
                RET
;********************************************************************
;软件延时子程序2
;占用资源:R6
;********************************************************************
DELAY_SHORT:    MOV     R6,#20
                DJNZ    R6,$
                RET
		END

⌨️ 快捷键说明

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