?? sz617.lst
字號:
A51 MACRO ASSEMBLER SZ617 06/18/2008 13:18:12 PAGE 1
MACRO ASSEMBLER A51 V8.00
OBJECT MODULE PLACED IN SZ617.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE SZ617.ASM SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
1
0093 2 LED1 BIT p1.3 ;4位數碼管選通引腳
0094 3 LED2 BIT p1.4
0096 4 LED3 BIT p1.6
0097 5 LED4 BIT p1.7
0095 6 LED2DZ BIT P1.5 ;小數點
7
00B0 8 LS164_AB BIT p3.0 ;74LS164數據線
00B1 9 LS164_CLK BIT p3.1 ;74LS164時鐘線
10
00B5 11 KEY1 BIT p3.5 ;按鍵1
00B7 12 KEY2 BIT p3.7 ;按鍵2
0040 13 DISPFLAG EQU 40H ;顯示標識
00B2 14 KEY1FLAG BIT P3.2
00B3 15 KEY2FLAG BIT P3.3
16
0020 17 DISPBUF EQU 20H
0050 18 DISPBUF1 EQU 50H ;定時緩沖
19
0090 20 BEEP BIT p1.0
21
0030 22 MSCNT EQU 30H ;中斷次數
23
0031 24 SECONDBUF EQU 31H
0032 25 MINUTEBUF EQU 32H
0033 26 HOURBUF EQU 33H
0034 27 MONTHBUF EQU 34H
0035 28 DAYBUF EQU 35H
0036 29 MINUTEBUF1 EQU 36H
0037 30 HOURBUF1 EQU 37H
31
0000 32 ORG 0000h
0000 2100 33 JMP START
000B 34 ORG 000Bh
000B 212F 35 JMP TIMER0
0100 36 ORG 0100H
37
38
0100 39 START:
0100 75815F 40 MOV SP,#5FH
0103 C295 41 CLR LED2DZ
0105 42 CLRDISPBUF: ; 清顯示緩沖區
0105 7A0F 43 MOV R2,#0FH
0107 7821 44 MOV R0,#DISPBUF+1
0109 45 CLRDISPBUFLOOP:
0109 7600 46 MOV @R0,#0H
010B 08 47 INC R0
010C DAFB 48 DJNZ R2,CLRDISPBUFLOOP
49
010E 754000 50 MOV DISPFLAG,#0H;初始時顯示"時,分"
51
0111 C2B0 52 CLR LS164_AB
0113 C2B1 53 CLR LS164_CLK
54
0115 758901 55 MOV TMOD,#01H ; 方式1
56
0118 758C00 57 MOV TH0,#0H ;初值
011B 758A00 58 MOV TL0,#0H
A51 MACRO ASSEMBLER SZ617 06/18/2008 13:18:12 PAGE 2
011E 75300F 59 MOV MSCNT,#15
0121 D2AF 60 SETB EA
0123 D2A9 61 SETB ET0
0125 D28C 62 SETB TR0
0127 753601 63 MOV MINUTEBUF1,#1
64
65
012A 66 LOOP:
012A 120306 67 LCALL DISP
012D 212A 68 AJMP LOOP
012F 69 TIMER0:
012F C0D0 70 PUSH PSW
0131 C0E0 71 PUSH ACC
0133 D2D3 72 SETB PSW.3 ; 去掉后閃爍明顯 ?
0135 758C00 73 MOV TH0,#0H
0138 758A00 74 MOV TL0,#0H
013B E530 75 MOV A,MSCNT
013D 14 76 DEC A
013E F530 77 MOV MSCNT,A
0140 7031 78 JNZ RET1
79 ; 微調
0142 C2AF 80 CLR EA
0144 758C00 81 MOV TH0,#0H
0147 758A00 82 MOV TL0,#0H
014A D2AF 83 SETB EA
014C 75300E 84 MOV MSCNT,#14
85
86 ; 秒走
014F E531 87 MOV A, SECONDBUF
0151 B43B15 88 CJNE A, #59,SADD1
0154 753100 89 MOV SECONDBUF, #0
90 ; 分走
0157 E532 91 MOV A, MINUTEBUF
0159 B43B11 92 CJNE A, #59,MADD1
015C 753200 93 MOV MINUTEBUF, #0
94 ; 小時走
015F E533 95 MOV A, HOURBUF
0161 B4170D 96 CJNE A, #23,HADD1
0164 753300 97 MOV HOURBUF, #0
98
99 ; 定時
0167 2173 100 AJMP RET1
101
0169 102 SADD1: ; 秒加1
0169 0531 103 INC SECONDBUF
016B 2173 104 AJMP RET1
016D 105 MADD1: ; 分加1
016D 0532 106 INC MINUTEBUF
016F 2173 107 AJMP RET1
0171 108 HADD1: ; 小時加1
0171 0533 109 INC HOURBUF
110
0173 12018D 111 RET1: LCALL KEYINPUT
112
0176 C0E0 113 PUSH ACC
114
0178 E533 115 MOV A,HOURBUF
017A 6537 116 XRL A,HOURBUF1
017C 7008 117 JNZ RET2
017E E532 118 MOV A,MINUTEBUF
0180 6536 119 XRL A,MINUTEBUF1
0182 7002 120 JNZ RET2
0184 C290 121 CLR BEEP
122
123
0186 124 RET2:
A51 MACRO ASSEMBLER SZ617 06/18/2008 13:18:12 PAGE 3
0186 D0E0 125 POP ACC
0188 126 RET3:
0188 D0E0 127 POP ACC
018A D0D0 128 POP PSW
129
018C 32 130 RETI
131
132
134 ; **********************************************************************
135 ; 鍵盤掃描子程序
136 ; KEY1FLAG -- KEY1 按下標識
137 ; KEY2FLAG -- KEY2 按下標識
138 ; K1 -- KEY1 相關子程序
139 ; K2 -- KEY2 相關子程序
140 ; **********************************************************************
018D 141 KEYINPUT:
142
018D 20B231 143 JB KEY1FLAG,IFKEY1UP
0190 20B34F 144 JB KEY2FLAG,JMPIFKEY2UP
145
0193 20B539 146 K1: JB KEY1,K2
0196 120475 147 LCALL DELAY10US
0199 20B533 148 JB KEY1,K2
019C 120475 149 LCALL DELAY10US
150 ; 蜂鳴器停止
019F 209004 151 JB BEEP,K1S
01A2 D290 152 SETB BEEP
01A4 8039 153 JMP KRET1
154
01A6 155 K1S:
01A6 E540 156 MOV A,DISPFLAG
157
01A8 B40102 158 CJNE A,#1,CLRSECONDBUF
01AB 417B 159 AJMP KEYRET
01AD 160 CLRSECONDBUF:
01AD B40205 161 CJNE A,#2,DISPFLAGADD
01B0 753100 162 MOV SECONDBUF,#0
01B3 21DF 163 AJMP KRET1
164
01B5 165 DISPFLAGADD:
01B5 2403 166 ADD A,#3
01B7 F540 167 MOV DISPFLAG,A
01B9 D2B2 168 SETB KEY1FLAG
01BB B41521 169 CJNE A,#15H,KRET1
01BE 754000 170 MOV DISPFLAG,#0
171
01C1 172 IFKEY1UP: ; KEY1 是否松開
01C1 30B51B 173 JNB KEY1,KRET1
01C4 120475 174 LCALL DELAY10US
01C7 30B515 175 JNB KEY1,KRET1
01CA 120475 176 LCALL DELAY10US
01CD C2B2 177 CLR KEY1FLAG
178
01CF 179 K2:
01CF 20B70D 180 JB KEY2,KRET1
01D2 120475 181 LCALL DELAY10US
01D5 20B707 182 JB KEY2,KRET1
01D8 120475 183 LCALL DELAY10US
01DB E540 184 MOV A,DISPFLAG
01DD 21E5 185 AJMP K2S
186
01DF 187 KRET1:
01DF 02027B 188 LJMP KEYRET
01E2 189 JMPIFKEY2UP:
01E2 02026D 190 LJMP IFKEY2UP
A51 MACRO ASSEMBLER SZ617 06/18/2008 13:18:12 PAGE 4
191
192
01E5 B40008 193 K2S: CJNE A,#0,DISP1
01E8 2401 194 ADD A,#1
01EA F540 195 MOV DISPFLAG,A
01EC D2B3 196 SETB KEY2FLAG
01EE 417B 197 AJMP KEYRET
198 ;顯示日期
01F0 B40108 199 DISP1: CJNE A,#1,DISP2
01F3 2401 200 ADD A,#1
01F5 F540 201 MOV DISPFLAG,A
01F7 D2B3 202 SETB KEY2FLAG
01F9 417B 203 AJMP KEYRET
204 ;顯示秒
01FB B40208 205 DISP2: CJNE A,#2,MONADD1
01FE 7400 206 MOV A,#0
0200 F540 207 MOV DISPFLAG,A
0202 D2B3 208 SETB KEY2FLAG
0204 417B 209 AJMP KEYRET
210
211
0206 212 MONADD1: ; 月加1
0206 B4030E 213 CJNE A,#3,DAYADD1
0209 AD34 214 MOV R5, MONTHBUF
020B BD0C05 215 CJNE R5,#12,MONADD
020E 753401 216 MOV MONTHBUF,#1
0211 417B 217 AJMP KEYRET
0213 218 MONADD:
0213 0534 219 INC MONTHBUF
0215 417B 220 AJMP KEYRET
221
0217 222 DAYADD1: ; 日加1
0217 B4060E 223 CJNE A,#6,HOURADD1
021A AD35 224 MOV R5,DAYBUF
021C BD1F05 225 CJNE R5,#31,DAYADD
021F 753501 226 MOV DAYBUF,#1
0222 417B 227 AJMP KEYRET
0224 228 DAYADD:
0224 0535 229 INC DAYBUF
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -