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

📄 sz617.lst

📁 一个本人编写的时钟程序
💻 LST
📖 第 1 页 / 共 3 页
字号:
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     
                     133     
                     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 + -