📄 wl005.lst
字号:
A51 MACRO ASSEMBLER WL005 02/17/2004 12:02:07 PAGE 1
MACRO ASSEMBLER A51 V7.08a
OBJECT MODULE PLACED IN wl005.OBJ
ASSEMBLER INVOKED BY: d:\Keil\C51\BIN\A51.EXE wl005.asm SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
1 ;********************************************************************************
2 ;* *
3 ;* File : wl005.asm *
4 ;* Date : 2004-1-5 *
5 ;* Version : 1.0 *
6 ;* *
7 ;* Author : Freeman freeman@willar.com *
8 ;* Company : Willar www.willar.com *
9 ;* *
10 ;********************************************************************************
11 ;* Descriptoon: *
12 ;* 按键演示程序 *
13 ;* 按下AN1,单灯右移 *
14 ;* 按下AN2,单灯左移 *
15 ;* *
16 ;********************************************************************************
17
18 CODE_SEG SEGMENT CODE
19 DATA_SEG SEGMENT DATA
20 STACK_SEG SEGMENT IDATA
21
---- 22 RSEG DATA_SEG
0000 23 KEY_S: DS 1
0001 24 KEY_V: DS 1
25
---- 26 RSEG STACK_SEG
0000 27 STACK: DS 20
28
29
00B2 30 AN1 BIT P3.2 ;
00B3 31 AN2 BIT P3.3 ;
32
33
---- 34 CSEG AT 0000H
0000 020000 F 35 JMP MAIN
36
37 ;===============================================================================
---- 38 RSEG CODE_SEG
0000 39 MAIN:
0000 758100 F 40 MOV SP,#(STACK-1) ; 设置栈指针
0003 7580FE 41 MOV P0,#0FEH ; 初始点亮LED P00
0006 750003 F 42 MOV KEY_V,#03H ; 初始键值
43
0009 44 KEY_CHKSW: ; 循环检测按键是否按下
0009 1100 F 45 ACALL SCAN_KEY ; 输入按键状态
000B F500 F 46 MOV KEY_S,A
000D 6500 F 47 XRL A,KEY_V ; 检查按键值是否改变
000F 60F8 48 JZ KEY_CHKSW ; 若无键被按,则跳回KEY_CHKSW
49
0011 7F0A 50 MOV R7,#10 ; 延时10ms
0013 1100 F 51 ACALL DELAYMS ; 延时去抖
0015 1100 F 52 ACALL SCAN_KEY ; 再次检查按键值
0017 F500 F 53 MOV KEY_S,A
0019 6500 F 54 XRL A,KEY_V
001B 60EC 55 JZ KEY_CHKSW
56
001D 850000 F 57 MOV KEY_V,KEY_S ; 保存按键状态
A51 MACRO ASSEMBLER WL005 02/17/2004 12:02:07 PAGE 2
0020 1100 F 58 ACALL PROC_KEY ;
0022 80E5 59 SJMP KEY_CHKSW
60 ;===============================================================================
0024 61 SCAN_KEY:
62 ; 扫描按键
63 ; 传入参数:无
64 ; 返回值:A --- 按键状态
65
0024 E4 66 CLR A
0025 A2B2 67 MOV C,AN1
0027 92E0 68 MOV ACC.0,C
0029 A2B3 69 MOV C,AN2
002B 92E1 70 MOV ACC.1,C
002D 22 71 RET
72
73 ;===============================================================================
002E 74 PROC_KEY:
75 ; 按键处理子程序
76 ; 传入参数: KEY_V --- 按键值
77 ; 返回值: 无
78
002E E500 F 79 MOV A,KEY_V
0030 30E004 80 JNB ACC.0,PROC_AN1
0033 30E107 81 JNB ACC.1,PROC_AN2
0036 22 82 RET
83
0037 84 PROC_AN1: ; 按键AN1处理程序
0037 E580 85 MOV A,P0 ; 右移
0039 03 86 RR A
003A F580 87 MOV P0,A
003C 22 88 RET
89
003D 90 PROC_AN2: ; 按键AN2处理程序
003D E580 91 MOV A,P0 ; 左移
003F 23 92 RL A
0040 F580 93 MOV P0,A
0042 22 94 RET
95
96 ;===============================================================================
97
0043 98 DELAYMS:
99 ; 延时子程序
100 ; 传入参数:R7 --- 延时值(MS)
101 ; 返回值:无
102
0043 EF 103 MOV A,R7
0044 6009 104 JZ END_DLYMS
0046 105 DLY_LP1:
0046 7EB9 106 MOV R6,#185
0048 107 DLY_LP2:
0048 00 108 NOP
0049 00 109 NOP
004A 00 110 NOP
004B DEFB 111 DJNZ R6,DLY_LP2
004D DFF7 112 DJNZ R7,DLY_LP1
113
004F 114 END_DLYMS:
004F 22 115 RET
116
117 ; END OF DELAYMS
118
119 END
A51 MACRO ASSEMBLER WL005 02/17/2004 12:02:07 PAGE 3
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
ACC. . . . . . . . D ADDR 00E0H A
AN1. . . . . . . . B ADDR 00B0H.2 A
AN2. . . . . . . . B ADDR 00B0H.3 A
CODE_SEG . . . . . C SEG 0050H REL=UNIT
DATA_SEG . . . . . D SEG 0002H REL=UNIT
DELAYMS. . . . . . C ADDR 0043H R SEG=CODE_SEG
DLY_LP1. . . . . . C ADDR 0046H R SEG=CODE_SEG
DLY_LP2. . . . . . C ADDR 0048H R SEG=CODE_SEG
END_DLYMS. . . . . C ADDR 004FH R SEG=CODE_SEG
KEY_CHKSW. . . . . C ADDR 0009H R SEG=CODE_SEG
KEY_S. . . . . . . D ADDR 0000H R SEG=DATA_SEG
KEY_V. . . . . . . D ADDR 0001H R SEG=DATA_SEG
MAIN . . . . . . . C ADDR 0000H R SEG=CODE_SEG
P0 . . . . . . . . D ADDR 0080H A
P3 . . . . . . . . D ADDR 00B0H A
PROC_AN1 . . . . . C ADDR 0037H R SEG=CODE_SEG
PROC_AN2 . . . . . C ADDR 003DH R SEG=CODE_SEG
PROC_KEY . . . . . C ADDR 002EH R SEG=CODE_SEG
SCAN_KEY . . . . . C ADDR 0024H R SEG=CODE_SEG
SP . . . . . . . . D ADDR 0081H A
STACK. . . . . . . I ADDR 0000H R SEG=STACK_SEG
STACK_SEG. . . . . I SEG 0014H REL=UNIT
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -