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

📄 sz612.lst

📁 一个本人编写的时钟程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
A51 MACRO ASSEMBLER  SZ612                                                                06/13/2008 10:49:14 PAGE     1


MACRO ASSEMBLER A51 V8.00
OBJECT MODULE PLACED IN SZ612.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE SZ612.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
                      25       ;DAYDUB    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 758C0B           52                             MOV  TH0,#0BH  ;初值
011B 758ADC           53                         MOV  TL0,#0DCH
                      54     
011E 753016           55                         MOV  MSCNT,#16H
0121 D2AF             56                             SETB EA
0123 D2A9             57                             SETB ET0
0125 D28C             58                     SETB TR0
A51 MACRO ASSEMBLER  SZ612                                                                06/13/2008 10:49:14 PAGE     2

                      59     
0127                  60     LOOP:                   
0127 1201C8           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 758C0B           67                      MOV   TH0,#0BH
0135 758ADC           68                      MOV   TL0,#0DCH
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 753010           78               MOV   MSCNT,#16
                      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                 107     RET1:
0170 120184          108                      LCALL    KEYINPUT
                     109     
0173 D0E0            110                      POP    ACC
0175 D0D0            111                      POP    PSW
0177 32              112                          RETI
                     113     
                     114     ; 74LS164芯片工作原理程序
0178                 115     Send74LS164:
0178 7908            116                     MOV     R1,#8
017A                 117     Send2LS164_Loop:
017A 33              118                     RLC  A
017B 92B0            119                     MOV  LS164_AB,C
017D D2B1            120                     SETB LS164_CLK
017F C2B1            121                     CLR  LS164_CLK
0181 D9F7            122                     DJNZ r1,Send2LS164_Loop
0183 22              123                     RET
                     124     
A51 MACRO ASSEMBLER  SZ612                                                                06/13/2008 10:49:14 PAGE     3

0184                 125     KEYINPUT:
0184 20D540          126              JB F0,KEYRET
0187 20B51E          127     K1:  JB KEY1,K2
018A 120356          128          LCALL DELAY10MS
018D 20B518          129          JB KEY1,K2
0190 120356          130          LCALL DELAY10MS
0193 E540            131              MOV A,DISPFLAG
0195 2403            132              ADD A,#3
0197 F540            133              MOV DISPFLAG,A
0199 D2D5            134              SETB F0
019B                 135     WAIT:  
019B 30B5FD          136          JNB KEY1,WAIT
019E C2D5            137              CLR F0
01A0 B40F24          138          CJNE A,#0FH,KEYRET
01A3 754000          139          MOV DISPFLAG,#0
01A6 801F            140              JMP KEYRET
                     141     
                     142     
                     143      
                     144             
                     145       ;   CJNE A,#0,IF12
                     146      ;ADDFLAG:  ; DISPFLAG 加
                     147          
                     148         ;  CJNE A,#0FH,KEYRET
                     149         ;  MOV DISPFLAG,#0
                     150          
                     151      ;IF12:  ;判断 DISPFLAG 是否= 1,2
                     152       ;    MOV R4,A
                     153       ;    ANL A,#0FEH  ;  1
                     154       ;    JZ KEYRET
                     155       ;    MOV A,R4
                     156       ;    ANL A,#0FDH  ;  2
                     157       ;    JZ KEYRET
                     158        ;   MOV A,R4
                     159        ;   JMP ADDFLAG
                     160     
                     161     
01A8 20B71C          162     K2:  JB KEY2,KEYRET
01AB 120356          163          LCALL DELAY10MS
01AE 20B716          164          JB KEY2,KEYRET
01B1 120356          165          LCALL DELAY10MS
                     166                                                              
01B4 E540            167          MOV A,DISPFLAG
                     168          
01B6                 169     MONADD1: ; 月加1
01B6 B4030E          170              CJNE A,#3,DAYADD1
01B9 AE34            171              MOV R6, MONTHBUF                
01BB BE0C05          172              CJNE R6,#12,MONADD
01BE 753400          173              MOV MONTHBUF,#0
01C1 21C7            174                      AJMP KEYRET
01C3                 175     MONADD:
01C3 0534            176              INC  MONTHBUF
01C5 21C7            177                      AJMP KEYRET
                     178      
                     179     
                     180        ;     INC  MONTHBUF
                     181         ;    AJMP  KEYRET
                     182     
                     183        ;  MOV R5,DISPBUF+7
                     184        ;  INC R5
                     185        ;  MOV DISPBUF+7,R5
                     186        ;  CJNE R5,#9,KEYRET
                     187        ;  MOV R5,#0
                     188        ;  MOV DISPBUF+7,R5
                     189        ;  MOV R6,DISPBUF+8
                     190        ;  INC R6
A51 MACRO ASSEMBLER  SZ612                                                                06/13/2008 10:49:14 PAGE     4

                     191        ;  MOV DISPBUF+8,R6
                     192        ;  CJNE R6,#3,KEYRET
                     193        ;  MOV  R6,#0
                     194        ;  MOV DISPBUF+8,R6
                     195        
01C7                 196     DAYADD1: ; 日加1
                     197         ; CJNE A,#6,HOURADD1
                     198        ;
                     199         ; JMP KEYRET
                     200     ;HOURADD1: ; 小时加1
                     201        ;  CJNE A,#9,MINADD1
                     202         ; JMP KEYRET
                     203     ;MINADD1:  ; 分钟加1
                     204         ; CJNE A,#0CH,K2X
                     205         ; JMP KEYRET
                     206     
                     207     
                     208     ;K2X:  ; 显示日期和秒
                     209        ;  ADD A,#1
                     210       ;   MOV DISPFLAG,A
                     211        ;  CJNE A,#3,KEYRET
                     212        ;  MOV DISPFLAG,#0
01C7                 213     KEYRET:
                     214     
01C7 22              215     RET
                     216     
                     217     ;显示程序
01C8                 218     DISP:
01C8 7940            219                     MOV    R1,#DISPFLAG   
01CA 1202EB          220                     LCALL  UPDATEDISPBUF
                     221     ;初始显示 "时间"
01CD B7003A          222     KF0:            CJNE   @R1,#0,KF1
                     223     
01D0 7821            224                     MOV    R0,#DISPBUF+1
01D2 12033C          225                     LCALL GET_LED234
01D5 120178          226                     LCALL Send74LS164
01D8 120333          227                     LCALL SELECT_LED4
01DB 120348          228                     LCALL DELAY20MS
                     229     
01DE 7822            230                     MOV    R0,#DISPBUF+2
01E0 12033C          231                     LCALL GET_LED234
01E3 120178          232                     LCALL Send74LS164
01E6 12032A          233                     LCALL SELECT_LED3
01E9 120348          234                     LCALL DELAY20MS
                     235     
01EC 7823            236                     MOV    R0,#DISPBUF+3
01EE 12033C          237                     LCALL GET_LED234
01F1 120178          238                     LCALL Send74LS164
01F4 120321          239                     LCALL SELECT_LED2
01F7 120348          240                     LCALL DELAY20MS
                     241     
01FA 7824            242                     MOV    R0,#DISPBUF+4
01FC 120342          243                     LCALL GET_LED1
01FF 120178          244                     LCALL Send74LS164
0202 120318          245                     LCALL SELECT_LED1
0205 120348          246                     LCALL DELAY20MS
0208 41EA            247                     AJMP  KFRET
                     248     ;显示 "日期"
020A B7013A          249     KF1:            CJNE  @R1,#1,KF2
                     250     
020D 7825            251                     MOV    R0,#DISPBUF+5
020F 12033C          252                     LCALL GET_LED234
0212 120178          253                     LCALL Send74LS164
0215 120333          254                     LCALL SELECT_LED4
0218 120348          255                     LCALL DELAY20MS
                     256     
A51 MACRO ASSEMBLER  SZ612                                                                06/13/2008 10:49:14 PAGE     5

021B 7826            257                     MOV    R0,#DISPBUF+6
021D 12033C          258                     LCALL GET_LED234
0220 120178          259                     LCALL Send74LS164
0223 12032A          260                     LCALL SELECT_LED3
0226 120348          261                     LCALL DELAY20MS
                     262     
0229 7827            263                     MOV    R0,#DISPBUF+7
022B 12033C          264                     LCALL GET_LED234
022E 120178          265                     LCALL Send74LS164
0231 120321          266                     LCALL SELECT_LED2
0234 120348          267                     LCALL DELAY20MS
                     268     
0237 7828            269                     MOV    R0,#DISPBUF+8
0239 120342          270                     LCALL GET_LED1
023C 120178          271                     LCALL Send74LS164
023F 120318          272                     LCALL SELECT_LED1
0242 120348          273                     LCALL DELAY20MS

⌨️ 快捷键说明

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