📄 k1-k4-keyconut.lst
字号:
A51 MACRO ASSEMBLER K1_K4_KEYCONUT 12/20/2006 16:56:08 PAGE 1
MACRO ASSEMBLER A51 V7.08a
OBJECT MODULE PLACED IN k1-k4-keyconut.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE k1-k4-keyconut.asm SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
1 ;*******************************************************************
2 ;* *
3 ;* ME500单片机开发系统演示程序 - 独立键控制LED灯 *
4 ;* *
5 ;* LED显示 *
6 ;* *
7 ;* 版本: V1.0 (2006/11/20) *
8 ;* 作者: gguoqing (Email: gguoqing@willar.com) *
9 ;* 网站: www.willar.com(伟纳电子) www.mcusj.com(伟纳单片机世界) *
10 ;* 时间: 2006/07/18 *
11 ;* *
12 ;*【版权】Copyright(C)伟纳电子 www.willar.com All Rights Reserved *
13 ;*【声明】此程序仅用于学习与参考,引用请注明版权和作者信息! *
14 ;* *
15 ;*******************************************************************
16
17 ;对K1进行按键次数计数,逐个点亮LED0-LED7。
18 ;K2按下后,点亮LED0-LED3。
19 ;K3按下后,点亮LED4-LED7。
20 ;K4按下后,关闭所有LED。
21
22 ;---------------------------------------------------------
0094 23 K1 BIT P1.4
0095 24 K2 BIT P1.5
0096 25 K3 BIT P1.6
0097 26 K4 BIT P1.7
27
0030 28 K_OLD EQU 30H
0031 29 K_NEW EQU 31H
0032 30 K1_COUNT EQU 32H
31
32 ;---------------------------------------------------------
0000 33 ORG 0000H
0000 802E 34 JMP MAIN
0030 35 ORG 0030H
36 ;---------------------------------------------------------
0030 37 MAIN:
0030 758160 38 MOV SP,#60H
0033 7590FF 39 MOV P1,#0FFH
0036 7580FF 40 MOV P0,#0FFH
0039 753000 41 MOV K_OLD,#00H
003C 753200 42 MOV K1_COUNT,#00H
003F 7520FF 43 MOV 20H,#0FFH
0042 44 MAIN1:
0042 11BD 45 CALL K_SCAN ;键扫描
0044 E531 46 MOV A,K_NEW
0046 B53002 47 CJNE A,K_OLD,MAIN2
0049 80F7 48 JMP MAIN1
004B 49 MAIN2:
004B 11CC 50 CALL DELAY ;延时示去抖动
004D 11BD 51 CALL K_SCAN ;再判断键是否按下
004F E531 52 MOV A,K_NEW
0051 B53002 53 CJNE A,K_OLD,MAIN3
0054 80EC 54 JMP MAIN1
0056 55 MAIN3:
0056 20E00B 56 JB ACC.0,LOOP1 ;K1按下
0059 20E10C 57 JB ACC.1,LOOP2 ;K2按下
005C 20E20E 58 JB ACC.2,LOOP3 ;K3按下
A51 MACRO ASSEMBLER K1_K4_KEYCONUT 12/20/2006 16:56:08 PAGE 2
005F 20E310 59 JB ACC.3,LOOP4 ;K4按下
0062 80DE 60 JMP MAIN1
0064 61 LOOP1:
0064 117A 62 CALL K1_PROG
0066 80DA 63 JMP MAIN1
0068 64 LOOP2:
0068 7580F0 65 MOV P0,#0F0H
006B 80D5 66 JMP MAIN1
006D 67 LOOP3:
006D 75800F 68 MOV P0,#0FH
0070 80D0 69 JMP MAIN1
0072 70 LOOP4:
0072 7580FF 71 MOV P0,#0FFH
0075 753200 72 MOV K1_COUNT,#00H
0078 80C8 73 JMP MAIN1
74
75 ;---------------------------------------------------------
76 ; k1键功能子程序
77 ;---------------------------------------------------------
007A 78 K1_PROG:
007A 0532 79 INC K1_COUNT
007C E532 80 MOV A,K1_COUNT
81
007E B40104 82 CJNE A,#1,K1_P1
0081 C280 83 CLR P0.0
0083 8037 84 JMP K1_P9
0085 85 K1_P1:
0085 B40204 86 CJNE A,#2,K1_P2
0088 C281 87 CLR P0.1
008A 8030 88 JMP K1_P9
008C 89 K1_P2:
008C B40304 90 CJNE A,#3,K1_P3
008F C282 91 CLR P0.2
0091 8029 92 JMP K1_P9
0093 93 K1_P3:
0093 B40404 94 CJNE A,#4,K1_P4
0096 C283 95 CLR P0.3
0098 8022 96 JMP K1_P9
009A 97 K1_P4:
009A B40504 98 CJNE A,#5,K1_P5
009D C284 99 CLR P0.4
009F 801B 100 JMP K1_P9
00A1 101 K1_P5:
00A1 B40604 102 CJNE A,#6,K1_P6
00A4 C285 103 CLR P0.5
00A6 8014 104 JMP K1_P9
00A8 105 K1_P6:
00A8 B40704 106 CJNE A,#7,K1_P7
00AB C286 107 CLR P0.6
00AD 800D 108 JMP K1_P9
00AF 109 K1_P7:
00AF B40804 110 CJNE A,#8,K1_P8
00B2 C287 111 CLR P0.7
00B4 8006 112 JMP K1_P9
00B6 113 K1_P8:
00B6 753200 114 MOV K1_COUNT,#00H
00B9 7580FF 115 MOV P0,#0FFH
00BC 116 K1_P9:
00BC 22 117 RET
118
119 ;---------------------------------------------------------
120 ; 键扫描子程序
121 ;---------------------------------------------------------
00BD 122 K_SCAN:
00BD 7590FF 123 MOV P1,#0FFH
00C0 753100 124 MOV K_NEW,#00H
A51 MACRO ASSEMBLER K1_K4_KEYCONUT 12/20/2006 16:56:08 PAGE 3
00C3 E590 125 MOV A,P1
00C5 F4 126 CPL A
00C6 54F0 127 ANL A,#0F0H
00C8 C4 128 SWAP A
00C9 F531 129 MOV K_NEW,A
00CB 22 130 RET
131 ;---------------------------------------------------------
132 ;延时子程序
133 ;---------------------------------------------------------
00CC 134 DELAY:
00CC 7EC8 135 MOV R6,#200
00CE 136 DEL:
00CE 7FFF 137 MOV R7,#0FFH
00D0 DFFE 138 DJNZ R7,$
00D2 DEFA 139 DJNZ R6,DEL
00D4 22 140 RET
141
142 ;---------------------------------------------------------
143 END
A51 MACRO ASSEMBLER K1_K4_KEYCONUT 12/20/2006 16:56:08 PAGE 4
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
ACC. . . . . . . . D ADDR 00E0H A
DEL. . . . . . . . C ADDR 00CEH A
DELAY. . . . . . . C ADDR 00CCH A
K1 . . . . . . . . B ADDR 0090H.4 A
K1_COUNT . . . . . N NUMB 0032H A
K1_P1. . . . . . . C ADDR 0085H A
K1_P2. . . . . . . C ADDR 008CH A
K1_P3. . . . . . . C ADDR 0093H A
K1_P4. . . . . . . C ADDR 009AH A
K1_P5. . . . . . . C ADDR 00A1H A
K1_P6. . . . . . . C ADDR 00A8H A
K1_P7. . . . . . . C ADDR 00AFH A
K1_P8. . . . . . . C ADDR 00B6H A
K1_P9. . . . . . . C ADDR 00BCH A
K1_PROG. . . . . . C ADDR 007AH A
K2 . . . . . . . . B ADDR 0090H.5 A
K3 . . . . . . . . B ADDR 0090H.6 A
K4 . . . . . . . . B ADDR 0090H.7 A
K_NEW. . . . . . . N NUMB 0031H A
K_OLD. . . . . . . N NUMB 0030H A
K_SCAN . . . . . . C ADDR 00BDH A
LOOP1. . . . . . . C ADDR 0064H A
LOOP2. . . . . . . C ADDR 0068H A
LOOP3. . . . . . . C ADDR 006DH A
LOOP4. . . . . . . C ADDR 0072H A
MAIN . . . . . . . C ADDR 0030H A
MAIN1. . . . . . . C ADDR 0042H A
MAIN2. . . . . . . C ADDR 004BH A
MAIN3. . . . . . . C ADDR 0056H A
P0 . . . . . . . . D ADDR 0080H A
P1 . . . . . . . . D ADDR 0090H A
SP . . . . . . . . D ADDR 0081H A
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -