?? keyin.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 + -