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

📄 sz613.lst

📁 一个本人编写的时钟程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
A51 MACRO ASSEMBLER  SZ613                                                                06/16/2008 10:39:23 PAGE     1


MACRO ASSEMBLER A51 V8.00
OBJECT MODULE PLACED IN SZ613.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE SZ613.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  ;显示标识
                      14     
  0020                15       DISPBUF   EQU  20H
                      16     
  0090                17       BEEP   BIT  p1.0
                      18     
  0030                19       MSCNT  EQU  30H   ;中断次数
                      20     
  0031                21       SECONDBUF EQU 31H
  0032                22       MINUTEBUF EQU 32H
  0033                23       HOURBUF   EQU 33H
  0034                24       MONTHBUF  EQU 34H
  0035                25       DAYBUF    EQU 35H
                      26     
0000                  27                             ORG  0000h
0000 2100             28                             JMP  START
000B                  29                         ORG  000Bh
000B 212C             30                     JMP  TIMER0
0100                  31                     ORG  0100H
                      32     
                      33     
0100                  34     START:
0100 758150           35                     MOV  SP,#50H
0103 C295             36                     CLR  LED2DZ
0105                  37     CLRDISPBUF: ; 清显示缓冲区
0105 7A0F             38                     MOV  R2,#0FH
0107 7821             39                     MOV  R0,#DISPBUF+1
0109                  40     CLRDISPBUFLOOP:
0109 7600             41                     MOV  @R0,#0H
010B 08               42                     INC  R0
010C DAFB             43                     DJNZ R2,CLRDISPBUFLOOP
                      44     
010E 754000           45                     MOV  DISPFLAG,#0;初始时显示"时,分"
                      46     
0111 C2B0             47                     CLR  LS164_AB
0113 C2B1             48                         CLR  LS164_CLK
                      49     
0115 758901           50                     MOV  TMOD,#01H ; 方式1
                      51     
0118 758C00           52                             MOV  TH0,#0H  ;初值
011B 758A00           53                         MOV  TL0,#0H
                      54     
011E 753015           55                         MOV  MSCNT,#15H
0121 D2AF             56                             SETB EA
0123 D2A9             57                             SETB ET0
0125 D28C             58                     SETB TR0
A51 MACRO ASSEMBLER  SZ613                                                                06/16/2008 10:39:23 PAGE     2

                      59     
0127                  60     LOOP:            
0127 120210           61                      LCALL    DISP
012A 2127             62                      AJMP     LOOP
012C                  63     TIMER0:
012C C0D0             64                      PUSH  PSW
012E C0E0             65                      PUSH  ACC
0130 D2D3             66                      SETB  PSW.3
0132 758C00           67                      MOV   TH0,#0H
0135 758A00           68                      MOV   TL0,#0H
0138 E530             69                      MOV   A,MSCNT
013A 14               70                      DEC   A
013B F530             71                      MOV   MSCNT,A
013D 7031             72                      JNZ   RET1
                      73              ; 微调
013F C2AF             74               CLR   EA
0141 758C0B           75               MOV   TH0,#0BH
0144 758ADC           76                   MOV   TL0,#0DCH
0147 D2AF             77               SETB  EA
0149 75300E           78               MOV   MSCNT,#14
                      79     
                      80              ; 秒走
014C E531             81              MOV     A,      SECONDBUF
014E B43B15           82              CJNE    A,      #59,SADD1
0151 753100           83              MOV     SECONDBUF, #0
                      84              ; 分走
0154 E532             85              MOV     A,      MINUTEBUF
0156 B43B11           86              CJNE    A,      #59,MADD1
0159 753200           87              MOV     MINUTEBUF, #0
                      88              ; 小时走
015C E533             89              MOV     A,      HOURBUF
015E B4170D           90              CJNE    A,      #23,HADD1
0161 753300           91              MOV     HOURBUF, #0
                      92     
                      93              ;  MOV     A,      DAYBUF
                      94              ;  CJNE    A,      #31,HADD1
                      95              ;  MOV     DAYBUF, #0
                      96     
0164 2170             97                     AJMP   RET1
0166                  98     SADD1:    ; 秒加1
0166 0531             99                     INC   SECONDBUF
0168 2170            100                     AJMP   RET1
016A                 101     MADD1:    ; 分加1
016A 0532            102                     INC   MINUTEBUF
016C 2170            103                     AJMP  RET1
016E                 104     HADD1:    ; 小时加1
016E 0533            105                     INC   HOURBUF
                     106     
0170 120184          107     RET1:            LCALL    KEYINPUT
0173 D0E0            108                      POP    ACC
0175 D0D0            109                      POP    PSW
0177 32              110                          RETI
                     111     
                     112     ; 74LS164芯片工作原理程序
0178                 113     Send74LS164:
0178 7908            114                     MOV     R1,#8
017A                 115     Send2LS164_Loop:
017A 33              116                     RLC  A
017B 92B0            117                     MOV  LS164_AB,C
017D D2B1            118                     SETB LS164_CLK
017F C2B1            119                     CLR  LS164_CLK
0181 D9F7            120                     DJNZ r1,Send2LS164_Loop
0183 22              121                     RET
                     122     
0184                 123     KEYINPUT:
                     124     
A51 MACRO ASSEMBLER  SZ613                                                                06/16/2008 10:39:23 PAGE     3

0184 20D52A          125               JB F0,K1RET
                     126     
0187 20B529          127     K1:   JB KEY1,K2
018A 12039B          128           LCALL DELAY10MS
018D 20B523          129           JB KEY1,K2
0190 12039B          130           LCALL DELAY10MS
0193 E540            131           MOV A,DISPFLAG
                     132     
0195 B40105          133           CJNE  A,#1,CLRSECONDBUF
0198 410F            134               AJMP  KEYRET
                     135     
019A B40203          136               CJNE  A,#2,DISPFLAGADD
019D                 137     CLRSECONDBUF:
019D 753100          138           MOV SECONDBUF,#0
                     139     
01A0                 140     DISPFLAGADD:
01A0 2403            141           ADD A,#3
                     142     
01A2 F540            143           MOV DISPFLAG,A
01A4 D2D5            144           SETB F0
01A6 30B5FD          145     WAIT: JNB KEY1,WAIT
01A9 B40F63          146           CJNE A,#0FH,KEYRET
01AC 754000          147           MOV DISPFLAG,#0
01AF C2D5            148           CLR F0
01B1                 149     K1RET:
01B1 805C            150           JMP KEYRET
                     151     
                     152     
                     153     
                     154     
01B3                 155     K2:
01B3 20B759          156          JB KEY2,KEYRET
01B6 1203A9          157          LCALL DELAY10US
01B9 20B753          158          JB KEY2,KEYRET
01BC 1203A9          159          LCALL DELAY10US
01BF E540            160          MOV A,DISPFLAG
                     161     
01C1                 162     MONADD1: ; 月加1
01C1 B4030E          163               CJNE A,#3,DAYADD1
01C4 AD34            164               MOV R5, MONTHBUF
01C6 BD0C05          165               CJNE R5,#12,MONADD
01C9 753401          166               MOV MONTHBUF,#1
01CC 410F            167                       AJMP KEYRET
01CE                 168     MONADD:
01CE 0534            169              INC  MONTHBUF
01D0 410F            170                      AJMP KEYRET
                     171     
01D2                 172     DAYADD1: ; 日加1
01D2 B4060E          173              CJNE A,#6,HOURADD1
01D5 AD35            174                      MOV  R5,DAYBUF
01D7 BD1F05          175                      CJNE R5,#31,DAYADD
01DA 753501          176                      MOV  DAYBUF,#1
01DD 410F            177                      AJMP KEYRET
01DF                 178     DAYADD:
01DF 0535            179              INC  DAYBUF
01E1 410F            180              AJMP KEYRET
                     181     
01E3                 182     HOURADD1: ; 小时加1
01E3 B4090E          183              CJNE A,#9,MINADD1
01E6 AD33            184                      MOV  R5,HOURBUF
01E8 BD1705          185                      CJNE R5,#23,HOURADD
01EB 753300          186                      MOV  HOURBUF,#0
01EE 410F            187                      AJMP KEYRET
01F0                 188     HOURADD:
01F0 0533            189              INC  HOURBUF
01F2 410F            190              AJMP KEYRET
A51 MACRO ASSEMBLER  SZ613                                                                06/16/2008 10:39:23 PAGE     4

                     191     
01F4                 192     MINADD1:  ; 分钟加1
01F4 B40C0E          193              CJNE A,#0CH,K2X
01F7 AD32            194                      MOV  R5,MINUTEBUF
01F9 BD3B05          195                      CJNE R5,#59,MINADD
01FC 753200          196                      MOV  MINUTEBUF,#0
01FF 410F            197                      AJMP KEYRET
0201                 198     MINADD:
0201 0532            199              INC  MINUTEBUF
0203 410F            200              AJMP KEYRET
                     201     
0205                 202     K2X:  ; 显示日期和秒
0205 2401            203            ADD A,#1
0207 B40305          204                CJNE A,#3,KEYRET
020A 754000          205                MOV DISPFLAG,#0
020D F540            206            MOV DISPFLAG,A
                     207            
020F                 208     KEYRET:
                     209     
020F 22              210     RET
                     211     
                     212     ;显示程序
0210                 213     DISP:
0210 7940            214                     MOV    R1,#DISPFLAG
0212 120333          215                     LCALL  UPDATEDISPBUF
                     216     ;初始显示 "时间"
0215 B7003A          217     KF0:            CJNE   @R1,#0,KF1
                     218     
0218 7821            219                     MOV    R0,#DISPBUF+1
021A 12038F          220                     LCALL GET_LED234
021D 120178          221                     LCALL Send74LS164
0220 120386          222                     LCALL SELECT_LED4
0223 12039B          223                     LCALL DELAY10MS
                     224     
0226 7822            225                     MOV    R0,#DISPBUF+2
0228 12038F          226                     LCALL GET_LED234
022B 120178          227                     LCALL Send74LS164
022E 12037D          228                     LCALL SELECT_LED3
0231 12039B          229                     LCALL DELAY10MS
                     230     
0234 7823            231                     MOV    R0,#DISPBUF+3
0236 12038F          232                     LCALL GET_LED234
0239 120178          233                     LCALL Send74LS164
023C 120374          234                     LCALL SELECT_LED2
023F 12039B          235                     LCALL DELAY10MS
                     236     
0242 7824            237                     MOV    R0,#DISPBUF+4
0244 120395          238                     LCALL GET_LED1
0247 120178          239                     LCALL Send74LS164
024A 12036B          240                     LCALL SELECT_LED1
024D 12039B          241                     LCALL DELAY10MS
0250 6132            242                     AJMP  KFRET
                     243     ;显示 "日期"
0252 B7013A          244     KF1:            CJNE  @R1,#1,KF2
                     245     
0255 7825            246                     MOV    R0,#DISPBUF+5
0257 12038F          247                     LCALL GET_LED234
025A 120178          248                     LCALL Send74LS164
025D 120386          249                     LCALL SELECT_LED4
0260 12039B          250                     LCALL DELAY10MS
                     251     
0263 7826            252                     MOV    R0,#DISPBUF+6
0265 12038F          253                     LCALL GET_LED234
0268 120178          254                     LCALL Send74LS164
026B 12037D          255                     LCALL SELECT_LED3
026E 12039B          256                     LCALL DELAY10MS
A51 MACRO ASSEMBLER  SZ613                                                                06/16/2008 10:39:23 PAGE     5

                     257     
0271 7827            258                     MOV    R0,#DISPBUF+7
0273 12038F          259                     LCALL GET_LED234
0276 120178          260                     LCALL Send74LS164
0279 120374          261                     LCALL SELECT_LED2
027C 12039B          262                     LCALL DELAY10MS
                     263     
027F 7828            264                     MOV    R0,#DISPBUF+8
0281 120395          265                     LCALL GET_LED1
0284 120178          266                     LCALL Send74LS164
0287 12036B          267                     LCALL SELECT_LED1
028A 12039B          268                     LCALL DELAY10MS
028D 6132            269                     AJMP  KFRET
                     270     ;显示 "秒"
028F B7021E          271     KF2:            CJNE  @R1,#2,KF3
                     272     
0292 7829            273                     MOV    R0,#DISPBUF+9

⌨️ 快捷键说明

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