?? wl005.asm
字號:
;********************************************************************************
;* 標題: ME300系列單片機開發系統演示程序 - 按鍵掃描程序 *
;* 硬件: ME300A+,ME300B *
;* 文件: wl005.asm *
;* 日期: 2004-1-5 *
;* 版本: 1.0 *
;* 作者: 偉納電子 - Freeman *
;* 郵箱: freeman@willar.com *
;* 網站: http://www.willar.com *
;********************************************************************************
;* 描述: *
;* 按鍵掃描程序 *
;* 按下K1,單燈右移 *
;* 按下K2,單燈左移 *
;* *
;********************************************************************************
;* 跳線設置: *
;* ME300A+ JP1 全部短接,JP2短接3-4端 *
;* ME300B JP1 短接, JP2短接3-4端 *
;* *
;********************************************************************************
;* 【版權】 Copyright(C)偉納電子 www.willar.com All Rights Reserved *
;* 【聲明】 此程序僅用于學習與參考,引用請注明版權和作者信息! *
;********************************************************************************
CODE_SEG SEGMENT CODE
DATA_SEG SEGMENT DATA
STACK_SEG SEGMENT IDATA
RSEG DATA_SEG
KEY_S: DS 1
KEY_V: DS 1
RSEG STACK_SEG
STACK: DS 20
K1 BIT P1.4 ;
K2 BIT P1.5 ;
CSEG AT 0000H
JMP MAIN
;===============================================================================
RSEG CODE_SEG
MAIN:
MOV SP,#(STACK-1) ; 設置棧指針
MOV P0,#0FEH ; 初始點亮LED P00
MOV KEY_V,#03H ; 初始鍵值
KEY_CHKSW: ; 循環檢測按鍵是否按下
ACALL SCAN_KEY ; 輸入按鍵狀態
MOV KEY_S,A
XRL A,KEY_V ; 檢查按鍵值是否改變
JZ KEY_CHKSW ; 若無鍵被按,則跳回KEY_CHKSW
MOV R7,#10 ; 延時10ms
ACALL DELAYMS ; 延時去抖
ACALL SCAN_KEY ; 再次檢查按鍵值
MOV KEY_S,A
XRL A,KEY_V
JZ KEY_CHKSW
MOV KEY_V,KEY_S ; 保存按鍵狀態
ACALL PROC_KEY ;
SJMP KEY_CHKSW
;===============================================================================
SCAN_KEY:
; 掃描按鍵
; 傳入參數:無
; 返回值:A --- 按鍵狀態
CLR A
MOV C,K1
MOV ACC.0,C
MOV C,K2
MOV ACC.1,C
RET
;===============================================================================
PROC_KEY:
; 按鍵處理子程序
; 傳入參數: KEY_V --- 按鍵值
; 返回值: 無
MOV A,KEY_V
JNB ACC.0,PROC_K1
JNB ACC.1,PROC_K2
RET
PROC_K1: ; 按鍵K1處理程序
MOV A,P0 ; 右移
RR A
MOV P0,A
RET
PROC_K2: ; 按鍵K2處理程序
MOV A,P0 ; 左移
RL A
MOV P0,A
RET
;===============================================================================
DELAYMS:
; 延時子程序
; 傳入參數:R7 --- 延時值(MS)
; 返回值:無
MOV A,R7
JZ END_DLYMS
DLY_LP1:
MOV R6,#185
DLY_LP2:
NOP
NOP
NOP
DJNZ R6,DLY_LP2
DJNZ R7,DLY_LP1
END_DLYMS:
RET
; END OF DELAYMS
END
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -