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

📄 a3_key_led.asm

📁 基于6502的WINBOND语音单片机的程序 W588D系列
💻 ASM
字号:
;********************************************************************
;********************************************************************
;==================按键扫描,以及处理和LED闪烁========================
;>>包含函数:1. MLED_FLASH_SLOW			;LED闪动
;			2. MKEY_SCAN				;按键扫描
;			3. MKEY1_PRO				;K1处理
;			4. MKEY2_PRO				;K2处理
;			5. MKEY3_PRO				;K3处理
;			6. MKEY4_PRO				;K4处理
;			7. MKEY5_PRO				;K5处理
;			8. MKEY6_PRO				;K6处理
;			9. MKEY7_PRO				;K7处理
;			10.MKEY8_PRO				;K8处理
;			11.MKEY9_PRO				;K9处理
;====================================================================
;修改日期:2008/1/8
;程序员:Wangbo
;====================================================================
Mac_KEY_Port1 		EQU BP1
Mac_KEY_Port2 		EQU BP0

Mac_KEY_NUM1	 	EQU FFH
Mac_KEY_NUM2 		EQU 01H

Mac_SYSLED_Port 	EQU BP2
Mac_SYSLED_NUM		EQU	E0H

Mac_KEY_BIT0		EQU	01H
Mac_KEY_BIT1		EQU	02H
Mac_KEY_BIT2		EQU	04H
Mac_KEY_BIT3		EQU	08H
Mac_KEY_BIT4		EQU	10H
Mac_KEY_BIT5		EQU	20H
Mac_KEY_BIT6		EQU	40H
Mac_KEY_BIT7		EQU	80H
;====================================================================
;系统运行标志,控制一LED不断地灯闪烁
;接口:BP27
;接口定义:	Mac_SYSLED_Port EQU BP2
;			Mac_SYSLED_NUM	EQU	80H
;====================================================================
;1.LED闪动
;-----------------------------------------------
MLED_FLASH:
	LDA !Mac_SYSLED_Port	;取接口数值
	BIT #Mac_SYSLED_NUM
	BEQ SLED_ON
	LDA #Mac_SYSLED_NUM
	TRB !Mac_SYSLED_Port	;清接口
	BRA SLED_FLASH_RTS
SLED_ON:
	LDA #Mac_SYSLED_NUM
	TSB !Mac_SYSLED_Port	;置位接口
SLED_FLASH_RTS:
	RTS
;====================================================================
;2.	按键扫描
;	键盘属性:	一般的键盘,一个端口对应一个按键
;	按键接口:	BP00,BP10,BP11,BP12,BP13,BP14,BP15,BP16,BP17,
;	接口定义:	Mac_KEY_Port EQU BP1
;		   		Mac_KEY_NUM	EQU	1CH
;-------------按键处理过程中所定义变量------------------
;	gKEY_NUM1		DS	1		;按键扫描值。
;	gKEY_NUM2		DS	1		;按键扫描值。
;	gKEY_Process1	DS 	1		;按键按下标志
;	gKEY_Process2	DS 	1		;按键按下标志
;	gKEY_Filter		DS	1		;滤波计数
;====================================================================
MKEY_SCAN:
	;--------------------------------------------
	LDA Mac_KEY_Port1	;按键端口
	AND #Mac_KEY_NUM1	;总按键对应的数值
	CMP #Mac_KEY_NUM1
	BCC SKEY_SCAN_RUN
SKEY_SCAN_Port2:
	LDA Mac_KEY_Port2	;按键端口
	AND #Mac_KEY_NUM2	;总按键对应的数值
	CMP #Mac_KEY_NUM2
	BCS SKEY_SCAN_END
SKEY_SCAN_RUN:
;------------------------------------------------有键按下
	INC gKEY_Filter
	LDA gKEY_Filter		;滤波处理
	CMP #5				;数值可调
	BCC SKEY_SCAN_RTS
	STZ gKEY_Filter
	;--------------------------------------------
	LDA Mac_KEY_Port1
	AND #Mac_KEY_NUM1	;总按键对应的数值
	STA gKEY_NUM1		;传送键值
	TRB gKEY_Process1
	;------------------
	LDA Mac_KEY_Port2
	AND #Mac_KEY_NUM2	;总按键对应的数值
	STA gKEY_NUM2		;传送键值
	TRB gKEY_Process2
	;--------------------------------------------
	STZ gSTOP_Counter	;清SLEEP计数器
	;--------------------------------------------
	BRA SKEY_SCAN_RTS
SKEY_SCAN_END:
;------------------------------------------------没键按下
	STZ gKEY_Filter
	LDA #Mac_KEY_NUM1
	TRB gKEY_Process1
	TSB gKEY_NUM1
	;-----------------
	LDA #Mac_KEY_NUM2
	TRB gKEY_Process2
	TSB gKEY_NUM2
SKEY_SCAN_RTS:
	RTS
;====================================================================
MKEY_Manager:
	LDA gKEY_NUM1
	ORA gKEY_Process1
	CMP #FFH
	BCC SKEY_Manager_RUN
	LDA gKEY_NUM2
	ORA gKEY_Process2
	BIT #01H
	BNE SKEY_Manager_RTS
	;-----------------------	
SKEY_Manager_RUN:
	JSR MKEY1_PRO
	JSR MKEY2_PRO
	JSR MKEY3_PRO
	JSR MKEY4_PRO
	JSR MKEY5_PRO
	JSR MKEY6_PRO
	JSR MKEY7_PRO
	JSR MKEY8_PRO
	JSR MKEY9_PRO
SKEY_Manager_RTS:
	RTS
;====================================================================
;3.	K1处理
;	K1对应的端口:BP10
;----------------------------------------------
MKEY1_PRO:
	LDA gKEY_NUM1
	BIT #Mac_KEY_BIT0
	BNE SKEY1_PRO_RTS

	LDA gKEY_Process1
	BIT #Mac_KEY_BIT0
	BNE SKEY1_PRO_RTS
	;-------------------------------------------确定有键按下
	LDA #Mac_KEY_BIT0
	TSB gKEY_Process1
	;--------------------------------------------
	STZ gSTOP_Counter	;清SLEEP计数器
	;--------------------------------------------


SKEY1_PRO_RTS:
	RTS
;====================================================================
;2.	K2处理
;	K2对应的端口:BP11
;----------------------------------------------
MKEY2_PRO:
	LDA gKEY_NUM1
	BIT #Mac_KEY_BIT1
	BNE SKEY2_PRO_RTS

	LDA gKEY_Process1
	BIT #Mac_KEY_BIT1
	BNE SKEY2_PRO_RTS
	;-------------------------------------------确定有键按下
	LDA #Mac_KEY_BIT1
	TSB gKEY_Process1
	;--------------------------------------------
	STZ gSTOP_Counter	;清SLEEP计数器
	;--------------------------------------------



SKEY2_PRO_RTS:
	RTS
;====================================================================
;2.	K3处理
;	K3对应的端口:BP12
;----------------------------------------------
MKEY3_PRO:
	LDA gKEY_NUM1
	BIT #Mac_KEY_BIT2
	BNE SKEY3_PRO_RTS
	LDA gKEY_Process1
	BIT #Mac_KEY_BIT2
	BNE SKEY3_PRO_RTS
	;-------------------------------------------确定有键按下
	LDA #Mac_KEY_BIT2
	TSB gKEY_Process1
	;--------------------------------------------
	STZ gSTOP_Counter	;清SLEEP计数器
	;--------------------------------------------


SKEY3_PRO_RTS:
	RTS
;====================================================================
;.	K4处理
;	K4对应的端口:BP13
;----------------------------------------------
MKEY4_PRO:
	LDA gKEY_NUM1
	BIT #Mac_KEY_BIT3
	BNE SKEY4_PRO_RTS

	LDA gKEY_Process1
	BIT #Mac_KEY_BIT3
	BNE SKEY4_PRO_RTS
	;-------------------------------------------确定有键按下
	LDA #Mac_KEY_BIT3
	TSB gKEY_Process1
	;--------------------------------------------
	STZ gSTOP_Counter	;清SLEEP计数器
	;--------------------------------------------


SKEY4_PRO_RTS:
	RTS
;====================================================================
;.	K5处理
;	K5对应的端口:BP14
;----------------------------------------------
MKEY5_PRO:
	LDA gKEY_NUM1
	BIT #Mac_KEY_BIT4
	BNE SKEY5_PRO_RTS

	LDA gKEY_Process1
	BIT #Mac_KEY_BIT4
	BNE SKEY5_PRO_RTS
	;-------------------------------------------确定有键按下
	LDA #Mac_KEY_BIT4
	TSB gKEY_Process1
	;--------------------------------------------
	STZ gSTOP_Counter	;清SLEEP计数器
	;--------------------------------------------

SKEY5_PRO_RTS:
	RTS
;====================================================================
;.	K6处理
;	K6对应的端口:BP15
;----------------------------------------------
MKEY6_PRO:
	LDA gKEY_NUM1
	BIT #Mac_KEY_BIT5
	BNE SKEY6_PRO_RTS

	LDA gKEY_Process1
	BIT #Mac_KEY_BIT5
	BNE SKEY6_PRO_RTS
	;-------------------------------------------确定有键按下
	LDA #Mac_KEY_BIT5
	TSB gKEY_Process1
	;--------------------------------------------
	STZ gSTOP_Counter	;清SLEEP计数器
	;--------------------------------------------

SKEY6_PRO_RTS:
	RTS
;====================================================================
;.	K7处理
;	K7对应的端口:BP16
;----------------------------------------------
MKEY7_PRO:
	LDA gKEY_NUM1
	BIT #Mac_KEY_BIT6
	BNE SKEY7_PRO_RTS

	LDA gKEY_Process1
	BIT #Mac_KEY_BIT6
	BNE SKEY7_PRO_RTS
	;-------------------------------------------确定有键按下
	LDA #Mac_KEY_BIT6
	TSB gKEY_Process1
	;--------------------------------------------
	STZ gSTOP_Counter	;清SLEEP计数器
	;--------------------------------------------

SKEY7_PRO_RTS:
	RTS
;====================================================================
;.	K8处理
;	K8对应的端口:BP17
;----------------------------------------------
MKEY8_PRO:
	LDA gKEY_NUM1
	BIT #Mac_KEY_BIT7
	BNE SKEY8_PRO_RTS

	LDA gKEY_Process1
	BIT #Mac_KEY_BIT7
	BNE SKEY8_PRO_RTS
	;-------------------------------------------确定有键按下
	LDA #Mac_KEY_BIT7
	TSB gKEY_Process1
	;--------------------------------------------
	STZ gSTOP_Counter	;清SLEEP计数器
	;--------------------------------------------

SKEY8_PRO_RTS:
	RTS
;====================================================================
;.	K9处理
;	K9对应的端口:BP00
;----------------------------------------------
MKEY9_PRO:
	LDA gKEY_NUM2
	BIT #Mac_KEY_BIT0
	BNE SKEY9_PRO_RTS

	LDA gKEY_Process2
	BIT #Mac_KEY_BIT0
	BNE SKEY9_PRO_RTS
	;-------------------------------------------确定有键按下
	LDA #Mac_KEY_BIT0
	TSB gKEY_Process2
	;--------------------------------------------
	STZ gSTOP_Counter	;清SLEEP计数器
	;--------------------------------------------

SKEY9_PRO_RTS:
	RTS


⌨️ 快捷键说明

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