⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 text1.lst

📁 电子钟试验 电子钟试验以protel实现电子钟
💻 LST
字号:
A51 MACRO ASSEMBLER  TEXT1                                                                09/12/2007 13:38:05 PAGE     1


MACRO ASSEMBLER A51 V7.07
OBJECT MODULE PLACED IN Text1.OBJ
ASSEMBLER INVOKED BY: F:\keil 软件\C51\BIN\A51.EXE Text1.a51 SET(SMALL) DEBUG EP

LOC  OBJ            LINE     SOURCE

                       1     
0000                   2             ORG 0000H
0000 020200            3             LJMP MAIN                               ;转入主程序
000B                   4             ORG 000BH
000B 02022A            5             LJMP GT0                                ;转入中断T0
0200                   6             ORG 0200H
                       7     ;-------------------------主程序--------------------------;
0200                   8     MAIN:
0200 758160            9             MOV SP,#60H                             ;给堆栈赋初值
0203 758000           10             MOV P0,#00H                             ;熄灭所有LED灯
0206 900300           11             MOV DPTR,#TAB                           ;表地址入口
0209 E4               12             CLR A
020A F530             13             MOV 30H,A                               ;小时清零
020C F531             14             MOV 31H,A                               ;分钟清零
020E F532             15             MOV 32H,A                               ;秒清零
0210 7814             16             MOV R0,#20                              ;1秒中断次数
0212 758901           17             MOV TMOD,#01H                           ;T0方式1定时
0215 758C3C           18             MOV TH0,#3CH                            ;50毫秒初值
0218 758A0B           19             MOV TL0,#0BH
021B D2AF             20             SETB EA                                 ;开中断
021D D2A9             21             SETB ET0                                ;允许T0中断
021F D28C             22             SETB TR0                                ;启动T0
0221                  23     M0:
0221 1202A6           24             LCALL JIAN                              ;调用按键子程序
0224 120257           25             LCALL XIANSHI                           ;调用显示子程序
0227 020221           26             LJMP M0
                      27     ;-----------------------T0中断程序------------------------;
022A                  28     GT0:
022A C0E0             29             PUSH ACC
022C 758C3C           30             MOV TH0,#3CH                            ;重新赋值
022F 758A0B           31             MOV TL0,#0BH   
0232 D820             32             DJNZ R0,RET0                            ;不够20次返回
0234 7814             33             MOV R0,#20                              ;否则重新赋20给R0
0236 0532             34             INC 32H                                 ;秒加一
0238 E532             35             MOV A,32H
023A B43C17           36             CJNE A,#60,RET0                         ;比较秒是否到60;不到RET0
023D 753200           37             MOV 32H,#00H                            ;到60改为0
0240 0531             38             INC 31H                                 ;分钟加一
0242 E531             39             MOV A,31H
0244 B43C0D           40             CJNE A,#60,RET0                         ;比较分钟是否到60;不到RET0
0247 753100           41             MOV 31H,#00H                            ;到60改为0
024A 0530             42             INC 30H                                 ;小时加一
024C E530             43             MOV A,30H
024E B41803           44             CJNE A,#24,RET0                         ;比较小时是否到24;不到RET0
0251 753000           45             MOV 30H,#00H                            ;到24改为0   
0254                  46     RET0:
0254 D0E0             47             POP ACC
0256 32               48             RETI                                    ;中断返回
                      49     ;-----------------------显示子程序------------------------;
0257                  50     XIANSHI:
0257 E530             51             MOV A,30H                               ;小时显示程序段
0259 75F00A           52             MOV B,#10                               ;把10送入寄存器B中
025C 84               53             DIV AB                                  ;分离小时高低位
025D 93               54             MOVC A,@A+DPTR                          ;查十位数据表
025E D280             55             SETB P0.0                               ;点亮时十位数码管
0260 F5A0             56             MOV P2,A                                ;送P2口显示
0262 D9FE             57             DJNZ R1,$                               ;延时等待
0264 C280             58             CLR P0.0                                ;熄灭时十位数码管
A51 MACRO ASSEMBLER  TEXT1                                                                09/12/2007 13:38:05 PAGE     2

0266 E5F0             59             MOV A,B                                 ;时个位送入A
0268 93               60             MOVC A,@A+DPTR                          ;查个位数据表
0269 D281             61             SETB P0.1                               ;点亮时个位数码管
026B F5A0             62             MOV P2,A                                ;送P2口显示
026D D9FE             63             DJNZ R1,$                               ;延时等待
026F C281             64             CLR P0.1                                ;熄灭时个位数码管
0271 E531             65             MOV A,31H                               ;分钟显示程序段
0273 75F00A           66             MOV B,#10                               ;把10送入寄存器B中
0276 84               67             DIV AB                                  ;分离分钟高低位
0277 93               68             MOVC A,@A+DPTR                          ;查十位数据表
0278 D282             69             SETB P0.2                               ;点亮分十位数码管
027A F5A0             70             MOV P2,A                                ;送P2口显示
027C D9FE             71             DJNZ R1,$                               ;延时等待
027E C282             72             CLR P0.2                                ;熄灭分十位数码管                          
                                  
0280 E5F0             73             MOV A,B                                 ;分个位送入A
0282 93               74             MOVC A,@A+DPTR                          ;查个位数据表
0283 D283             75             SETB P0.3                               ;点亮分个位数码管
0285 F5A0             76             MOV P2,A                                ;送P2口显示
0287 D9FE             77             DJNZ R1,$                               ;延时等待       
0289 C283             78             CLR P0.3                                ;熄灭分个位数码管
028B E532             79             MOV A,32H                               ;秒显示程序段
028D 75F00A           80             MOV B,#10                               ;把10送入寄存器B中
0290 84               81             DIV AB                                  ;分离秒高低位
0291 93               82             MOVC A,@A+DPTR                          ;查十位数据表
0292 D284             83             SETB P0.4                               ;点亮秒十位数码管
0294 F5A0             84             MOV P2,A                                ;送P2口显示
0296 D9FE             85             DJNZ R1,$                               ;延时等待
0298 C284             86             CLR P0.4                                ;熄灭秒十位数码管
029A E5F0             87             MOV A,B                                 ;秒个位送入A
029C 93               88             MOVC A,@A+DPTR                          ;查个位数据表
029D D285             89             SETB P0.5                               ;点亮秒个位数码管
029F F5A0             90             MOV P2,A                                ;送P2口显示
02A1 D9FE             91             DJNZ R1,$                               ;延时等待
02A3 C285             92             CLR P0.5                                ;熄灭秒个位数码管
02A5 22               93             RET
                      94     ;-----------------------按键子程序------------------------;
02A6                  95     JIAN:
02A6 C0D0             96             PUSH PSW                                ;保护现场
02A8 C0E0             97             PUSH ACC
02AA 209316           98             JB P1.3,S1                              ;查键,改秒钟数,否则转S1
02AD                  99     J0:     
02AD 1202F7          100             LCALL DEL_10MS                          ;按键消抖
02B0 120257          101             LCALL XIANSHI                           ;调显示子程序
02B3 3093F7          102             JNB P1.3,J0                             ;按键松开后才加一
02B6 0532            103             INC 32H                                 ;秒加一
02B8 E532            104             MOV A,32H
02BA B43C35          105             CJNE A,#60,RET1                         ;秒钟不到60就转RET1
02BD 753200          106             MOV 32H,#00H                            ;否则清零
02C0 0202F2          107             LJMP RET1
02C3                 108     S1:
02C3 209116          109             JB P1.1,M1                              ;查键,改分钟数,否则转M1
02C6                 110     J1:
02C6 1202F7          111             LCALL DEL_10MS                          ;按键消抖
02C9 120257          112             LCALL XIANSHI                           ;调显示子程序
02CC 3091F7          113             JNB P1.1,J1                             ;按键松开后才加一       
02CF 0531            114             INC 31H                                 ;分加一
02D1 E531            115             MOV A,31H                               
02D3 B43C1C          116             CJNE A,#60,RET1                         ;分钟不到24就转RET1
02D6 753100          117             MOV 31H,#00H                            ;否则清零
02D9 0202F2          118             LJMP RET1
02DC                 119     M1:     
02DC 209213          120             JB P1.2,RET1                            ;查键,改小时数,否则转RET1
02DF                 121     J2:
02DF 1202F7          122             LCALL DEL_10MS                          ;按键消抖
02E2 120257          123             LCALL XIANSHI                           ;调显示子程序
A51 MACRO ASSEMBLER  TEXT1                                                                09/12/2007 13:38:05 PAGE     3

02E5 3092F7          124             JNB P1.2,J2                             ;按键松开后才加一
02E8 0530            125             INC 30H                                 ;时加一
02EA E530            126             MOV A,30H                               
02EC B41803          127             CJNE A,#24,RET1                         ;小时不到24就转RET1
02EF 753000          128             MOV 30H,#00H                            ;否则清零
02F2                 129     RET1:
02F2 D0D0            130             POP PSW                                 ;退出保护
02F4 D0E0            131             POP ACC
02F6 22              132             RET                                     ;返回
                     133     ;-----------------------延时子程序------------------------;
02F7                 134     DEL_10MS:
02F7 7E0A            135             MOV R6,#10                            
02F9 7FF8            136     L1:     MOV R7,#248                             
02FB DFFE            137     L2:     DJNZ R7,L2                              
02FD DEFA            138             DJNZ R6,L1                              
02FF 22              139             RET                                     
0300                 140     TAB:
0300 3F065B4F        141             DB 3FH,06H,5BH,4FH,66H                  ;共阴极数码管0-9数字
0304 66                      
0305 6D7D077F        142             DB 6DH,7DH,07H,7FH,6FH
0309 6F                      
                     143     END
A51 MACRO ASSEMBLER  TEXT1                                                                09/12/2007 13:38:05 PAGE     4

SYMBOL TABLE LISTING
------ ----- -------


N A M E             T Y P E  V A L U E   ATTRIBUTES

ACC. . . . . . . .  D ADDR   00E0H   A   
B. . . . . . . . .  D ADDR   00F0H   A   
DEL_10MS . . . . .  C ADDR   02F7H   A   
EA . . . . . . . .  B ADDR   00A8H.7 A   
ET0. . . . . . . .  B ADDR   00A8H.1 A   
GT0. . . . . . . .  C ADDR   022AH   A   
J0 . . . . . . . .  C ADDR   02ADH   A   
J1 . . . . . . . .  C ADDR   02C6H   A   
J2 . . . . . . . .  C ADDR   02DFH   A   
JIAN . . . . . . .  C ADDR   02A6H   A   
L1 . . . . . . . .  C ADDR   02F9H   A   
L2 . . . . . . . .  C ADDR   02FBH   A   
M0 . . . . . . . .  C ADDR   0221H   A   
M1 . . . . . . . .  C ADDR   02DCH   A   
MAIN . . . . . . .  C ADDR   0200H   A   
P0 . . . . . . . .  D ADDR   0080H   A   
P1 . . . . . . . .  D ADDR   0090H   A   
P2 . . . . . . . .  D ADDR   00A0H   A   
PSW. . . . . . . .  D ADDR   00D0H   A   
RET0 . . . . . . .  C ADDR   0254H   A   
RET1 . . . . . . .  C ADDR   02F2H   A   
S1 . . . . . . . .  C ADDR   02C3H   A   
SP . . . . . . . .  D ADDR   0081H   A   
TAB. . . . . . . .  C ADDR   0300H   A   
TH0. . . . . . . .  D ADDR   008CH   A   
TL0. . . . . . . .  D ADDR   008AH   A   
TMOD . . . . . . .  D ADDR   0089H   A   
TR0. . . . . . . .  B ADDR   0088H.4 A   
XIANSHI. . . . . .  C ADDR   0257H   A   


REGISTER BANK(S) USED: 0 

ASSEMBLY COMPLETE.  0 WARNING(S), 0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -