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

📄 keyin.s

📁 基于ARM7的LPC21XX系列的部分汇编源码
💻 S
字号:
;******************************************************************************
; 文件名:KEYIN.S
; 功能:键盘输入。当检测到有按键输入时,对发光二极管LED4进行取后控制。
;      使用I/O口输入方式对按键KEY1进行扫描。
; 说明:将跳线器JP4_LED4短接。
;******************************************************************************       
		    INCLUDE		LPC2294.INC		; 引入头文件
		    
		    EXPORT  	MAIN
		
LEDCON		EQU		0x02000000			; P0.25引脚控制LED4,低电平点亮		
KEY1		EQU		0x00010000			; P0.16引脚连接KEY1
	
		
		    AREA   	KEYINC,CODE,READONLY 
		
		    CODE32						; 使用ARM指令
MAIN 		LDR		R0,=PINSEL0			; 装载寄存器地址,PINSEL0
		    MOV		R1,#0x00000000		; 设置数据,即设置管脚连接GPIO
		    STR		R1,[R0],#4			; [R0] <= R1,R0 = R0+4			
		    STR		R1,[R0]

		    LDR		R0,=IO0DIR				
		    LDR		R1,=LEDCON
		    STR		R1,[R0]				; 设置LED控制口为输出,其它I/O为输入
		
MAIN_LOOP	LDR		R1,=LEDCON			; 设置GPIO控制参数
LEDSET		LDR		R0,=IO0SET			
		    STR		R1,[R0]				; LED控制I/O置位,即LED4熄灭
		    BL		WAITKEY
		
		
LEDCLR		LDR		R1,=LEDCON
            LDR		R0,=IO0CLR
		    STR		R1,[R0]				; LED控制I/O复位,即LED4点亮
		    BL		WAITKEY
		
		    B		MAIN_LOOP

;******************************************************************************		
; 名称:WAITKEY
; 功能:等待一个有效按键。本程序有去抖功能。
; 入口参数:无
; 出口参数:无
; 占用资源:R0、R1、R7
;******************************************************************************
WAITKEY
		    ; 等待KEY1键按下
WAITKEY_DOWN  
            LDR		R0,=IO0PIN			; 装载寄存器地址,IO0PIN
		    LDR		R1,[R0]				; 读取I/O口的值
		    ANDS	R1,R1,#KEY1			; 屏蔽有效位,判断KEY1键是否按下
		    BNE		WAITKEY_DOWN		; 若没有按下,则等待
		
		    ; 去抖动
		    MOV		R7,#0x00003F00
WAITKEY_L1	SUBS	R7,R7,#1
		    BNE		WAITKEY_L1
		    LDR		R1,[R0]				; 读取I/O口的值,判断KEY1键是否仍按下
		    ANDS	R1,R1,#KEY1		
		    BNE		WAITKEY_DOWN
		
		    ; 等待按键放开
WAITKEY_UP	LDR		R1,[R0]
		    ANDS	R1,R1,#KEY1		
		    BEQ		WAITKEY_UP

		    MOV		PC,LR				; 返回		
		
		    ALIGN						; 数据字对齐
		    LTORG						; 声明文字池
		
		
		    END

⌨️ 快捷键说明

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