📄 zmd.lst
字号:
A51 MACRO ASSEMBLER ZMD 03/28/2006 13:42:45 PAGE 1
MACRO ASSEMBLER A51 V6.12
OBJECT MODULE PLACED IN .\zmd.OBJ
ASSEMBLER INVOKED BY: D:\Program Files\keil\C51\BIN\A51.EXE .\zmd.asm SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
0033 1 SI_1 EQU 33H
0034 2 SI_2 EQU 34H
0035 3 SI_3 EQU 35H
0036 4 SI_4 EQU 36H
5
6 ;定义键状态寄存位
007F 7 keystate bit 7fh;有键时为1,无键时为0
8
0000 9 ORG 0000H
0000 0130 10 ajmp main
0030 11 org 0030h
12
0030 758160 13 MAIN: mov sp,#60H
0033 C27F 14 clr keystate
15
0035 16 main1:
0035 02003A 17 LJMP KEY
18 ; jnb keystate,mainend
19
0038 0130 20 mainend:ajmp main
21
22 ;------------------------------------------------------KEY---------------------------------
---------
23
24 ;键盘子程序:
003A 1200CE 25 KEY: lcall keytest
003D 307F02 26 jnb keystate,kkk
0040 0144 27 ajmp eee
0042 01CA 28 kkk: ajmp keyend
0044 29 eee:
0044 7401 30 mov a,#01h
0046 908FFF 31 mov dptr,#8fffh
0049 F0 32 movx @dptr,a
004A E0 33 movx a,@dptr
004B 540F 34 anl a,#0fh
004D B40103 35 key0: cjne a,#01h,key1
0050 02014A 36 LJMP DISPLAY1
0053 B40203 37 key1: cjne a,#02h,key2
0056 020205 38 LJMP DISPLAY2
0059 B40403 39 key2: cjne a,#04h,key3
005C 02022E 40 LJMP DISPLAY3
005F B40803 41 key3: cjne a,#08h,keynext1
0062 02035C 42 LJMP DISPLAY4
0065 7402 43 keynext1:mov a,#02h
0067 908FFF 44 mov dptr,#8fffh
006A F0 45 movx @dptr,a
006B E0 46 movx a,@dptr
006C 540F 47 anl a,#0fh
006E B40103 48 key4: cjne a,#01h,key5
0071 0203C2 49 LJMP DISPLAY5
0074 B40203 50 key5: cjne a,#02h,key6
0077 020411 51 LJMP DISPLAY6
007A B40403 52 key6: cjne a,#04h,key7
007D 02044B 53 LJMP DISPLAY7
0080 B40803 54 key7: cjne a,#08h,keynext2
0083 0204A8 55 LJMP DISPLAY8
0086 7404 56 keynext2:mov a,#04h
0088 908FFF 57 mov dptr,#8fffh
A51 MACRO ASSEMBLER ZMD 03/28/2006 13:42:45 PAGE 2
008B F0 58 movx @dptr,a
008C E0 59 movx a,@dptr
008D 540F 60 anl a,#0fh
008F B40103 61 key8: cjne a,#01h,key9
0092 0204FC 62 LJMP DISPLAY9
0095 B40203 63 key9: cjne a,#02h,keyA
0098 02056F 64 LJMP DISPLAYA
009B B40403 65 keyA: cjne a,#04h,keyB
009E 0205E0 66 LJMP DISPLAYB
00A1 B40803 67 keyB: cjne a,#08h,keynext3
00A4 0206E9 68 LJMP DISPLAYC
00A7 7408 69 keynext3:mov a,#08h
00A9 908FFF 70 mov dptr,#8fffh
00AC F0 71 movx @dptr,a
00AD E0 72 movx a,@dptr
00AE 540F 73 anl a,#0fh
00B0 B40103 74 keyC: cjne a,#01h,keyD
00B3 0207F5 75 LJMP DISPLAYD
00B6 B40203 76 keyD: cjne a,#02h,keyE
00B9 020880 77 LJMP DISPLAYE
00BC B40403 78 keyE: cjne a,#04h,keyF
00BF 0208E7 79 LJMP DISPLAYF
00C2 B40803 80 keyF: cjne a,#08h,keynext4
00C5 02097F 81 LJMP DISPLAYG
00C8 82 keynext4:
00C8 C27F 83 clr keystate
84
00CA 02010B 85 keyend: LJMP DISPLAY0
00CD 22 86 ret
87
88
89 ;键盘测试程序,返回结果在keystate中
00CE 74FF 90 keytest: mov a,#0ffh
00D0 908FFF 91 mov dptr,#8fffh
00D3 F0 92 movx @dptr,a
00D4 E0 93 movx a,@dptr
00D5 540F 94 anl a,#0fh
00D7 6004 95 jz keytest0
00D9 D27F 96 setb keystate
00DB 8002 97 jmp keytest1
00DD C27F 98 keytest0: clr keystate
00DF 22 99 keytest1: ret
100 ;--------------------------------------------------------------KEY结束---------------------
------------------------
101
102 ;-------------------------------------------------------NOKEY时的花样----------------------
--------------------
103
104 ;--------------------DISPLAY0----------------------
00E0 105 SHOW:
00E0 7A96 106 MOV R2,#150
00E2 7C00 107 SH01: MOV R4,#0
00E4 ED 108 SH00: MOV A,R5
00E5 2C 109 ADD A,R4
00E6 90012C 110 MOV DPTR,#TAB0
00E9 93 111 MOVC A,@A+DPTR
112
00EA 908FFF 113 MOV DPTR,#8FFFH
00ED F0 114 MOVX @DPTR,A
115
00EE EC 116 MOV A,R4
00EF 900142 117 MOV DPTR,#DATA0
00F2 93 118 MOVC A,@A+DPTR
00F3 909FFF 119 MOV DPTR,#9FFFH
00F6 F0 120 MOVX @DPTR,A
121
A51 MACRO ASSEMBLER ZMD 03/28/2006 13:42:45 PAGE 3
00F7 1209AA 122 CALL DELAY
00FA 0C 123 INC R4
00FB BC08E6 124 CJNE R4,#8,SH00
00FE DAE2 125 DJNZ R2,SH01
0100 C27F 126 CLR keystate
0102 11CE 127 CALL keytest
0104 207F01 128 JB keystate,SHOWEND
0107 22 129 RET
0108 020030 130 SHOWEND:LJMP MAIN
131
010B 132 DISPLAY0:
010B 7D00 133 MOV R5,#0
010D 11E0 134 D00:CALL SHOW
010F 0D 135 INC R5
0110 BD07FA 136 CJNE R5,#7,D00
0113 C27F 137 CLR keystate
0115 11CE 138 CALL keytest
0117 207F0F 139 JB keystate,DISPLAY0END
140 ; CALL DELAY0
011A 11E0 141 D01:CALL SHOW
011C 0D 142 INC R5
011D BD0FFA 143 CJNE R5,#15,D01
0120 C27F 144 CLR keystate
0122 11CE 145 CALL keytest
0124 207F02 146 JB keystate,DISPLAY0END
147
0127 80E2 148 JMP DISPLAY0
0129 020030 149 DISPLAY0END: LJMP MAIN
150
151
152 ;--------------------------------------------------
012C 153 TAB0:
012C 00000000 154 DB 0,0,0,0,0,0,0
0130 000000
0133 01020408 155 DB 01H,02H,04H,08H,10H,20H,40H,80H
0137 10204080
013B 00000000 156 DB 0,0,0,0,0,0,0
013F 000000
0142 157 DATA0:
0142 0F803F38 158 DB 0FH,80H,3FH,38H,38H,79H,76H,39H
0146 38797639
159 ;------------------------------------------------------------------------------------------
---------------
160
161
162 ;-------------------------------------------------------按01键时的花样---------------------
---------------------
163
164 ;--------------------DISPLAY1----------------------
014A 165 DISPLAY1:
014A 753429 166 MOV SI_2,#29H ;#29H,控制TAB表中的移位
014D 753332 167 D12: MOV SI_1,#50 ;#50,控制刷新次剩
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -