📄 up51s005.asm
字号:
;/*******************************************************************************
;* *
;* File : uP51s005.asm *
;* Date : 2004-9-5 *
;* Version : 1.0 *
;* *
;* Author : kevin kevin@dz51.com *
;* Company : Http://www.dz51.com *
;* *
;********************************************************************************
;* Descriptoon: *
;* 按键演示程序 *
;* 按下AN1,单灯下移 *
;* 按下AN2,单灯上移 *
;* *
;********************************************************************************
CODE_SEG SEGMENT CODE
DATA_SEG SEGMENT DATA
STACK_SEG SEGMENT IDATA
leddata data 30H
RSEG DATA_SEG
KEY_S: DS 1
KEY_V: DS 1
RSEG STACK_SEG
STACK: DS 20
AN1 BIT P3.2 ;
AN2 BIT P3.3 ;
CSEG AT 0000H
JMP MAIN
;===============================================================================
RSEG CODE_SEG
MAIN:
MOV SP,#(STACK-1) ; 设置栈指针
MOV leddata,#0FEH ; 初始点亮LED P00
MOV P0,leddata ; 初始点亮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,AN1
MOV ACC.0,C
MOV C,AN2
MOV ACC.1,C
RET
;===============================================================================
PROC_KEY:
; 按键处理子程序
; 传入参数: KEY_V --- 按键值
; 返回值: 无
MOV A,KEY_V
JNB ACC.0,PROC_AN1
JNB ACC.1,PROC_AN2
RET
PROC_AN1: ; 按键AN1处理程序
MOV A,leddata ; 右移
RR A
MOV leddata,A
MOV P0,leddata
RET
PROC_AN2: ; 按键AN2处理程序
MOV A,leddata ; 左移
RL A
MOV leddata,A
MOV P0,leddata
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 + -