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

📄 main.lst

📁 用51单片机做的时钟
💻 LST
📖 第 1 页 / 共 4 页
字号:
0180 E545            240             MOV     A,      DAY     ;以下产生日期的低位
0182 540F            241             ANL     A,      #0FH
0184 93              242             MOVC    A,      @A+DPTR
0185 F534            243             MOV     34H,    A
0187 E546            244             MOV     A,      HOLIDAY ;以下产生星期的高位
0189 54F0            245             ANL     A,      #0F0H
018B C4              246             SWAP    A
018C 93              247             MOVC    A,      @A+DPTR
018D F536            248             MOV     36H,    A
018F E546            249             MOV     A,      HOLIDAY ;以下产生星期的低位
0191 540F            250             ANL     A,      #0FH
0193 93              251             MOVC    A,      @A+DPTR
0194 F537            252             MOV     37H,    A
                     253             
                     254     
A51 MACRO ASSEMBLER  MAIN                                                                 11/22/2005 10:14:03 PAGE     5

0196                 255     DATE_DIS_NO:
0196 9199            256             CALL    KEYBO
0198 300306          257             JNB     KEY_DIR,DATE_WAIT
019B C203            258             CLR     KEY_DIR
019D 8007            259             SJMP    DATE_RET
019F 8005            260     DATE_RET2:SJMP  DATE_RET;中转
01A1                 261     DATE_WAIT:
01A1 E53B            262             MOV     A,      MS255   ;日期显示时间超过4秒后退出
01A3 B40FA4          263             CJNE    A,      #0FH,   DATE_DISP1      
                     264     
01A6 22              265     DATE_RET:RET
                     266     ;****************************************************************
                     267     ;
01A7                 268     GET_DATE:
01A7 85A083          269             MOV     DPH,    P2
01AA 75820A          270             MOV     DPL,    #0AH
01AD E0              271             MOVX    A,      @DPTR
01AE 20E7E5          272             JB      ACC.7,  DATE_DIS_NO;直到UIP位为0时才能读数据
01B1 758209          273             MOV     DPL,    #09H
01B4 E0              274             MOVX    A,      @DPTR
01B5 F543            275             MOV     YEAR,   A
01B7 758208          276             MOV     DPL,    #08H
01BA E0              277             MOVX    A,      @DPTR
01BB F544            278             MOV     MONTH,  A
01BD 758207          279             MOV     DPL,    #07H
01C0 E0              280             MOVX    A,      @DPTR
01C1 F545            281             MOV     DAY,    A
01C3 758206          282             MOV     DPL,    #06H
01C6 E0              283             MOVX    A,      @DPTR
01C7 F546            284             MOV     HOLIDAY,        A
                     285     
                     286     ;****************************************************************
                     287     ;系统设置子程序
01C9                 288     CHANGE_TIME:
01C9 200303          289             JB      KEY_DIR,        CHANGE1
01CC 02034E          290     CGE_RET1:LJMP   CHANGE_RET
01CF                 291     CHANGE1:
01CF E53C            292             MOV     A,      KEY_VOL
01D1 B481F8          293             CJNE    A,      #81H,   CGE_RET1
01D4 C203            294             CLR     KEY_DIR 
01D6 C28C            295             CLR     TR0             ;以下十行程序用于关闭DS12887的时钟更新
01D8 C293            296             CLR     CS
01DA C080            297             PUSH    P0
01DC 85A083          298             MOV     DPH,    P2
01DF 75820B          299             MOV     DPL,    #0BH
01E2 7482            300             MOV     A,      #82H
01E4 F0              301             MOVX    @DPTR,  A
01E5 31A7            302             CALL    GET_DATE
01E7 D080            303             POP     P0
01E9 D293            304             SETB    CS
01EB D28C            305             SETB    TR0
                     306                     
01ED 90012C          307             MOV     DPTR,   #TIME_TAB       ;拆字并送往显存
01F0 753200          308             MOV     32H,    #00H    ;显示"="
01F3 753500          309             MOV     35H,    #00H
01F6 E543            310             MOV     A,      YEAR    ;以下产生年的高位
01F8 54F0            311             ANL     A,      #0F0H
01FA C4              312             SWAP    A
01FB 93              313             MOVC    A,      @A+DPTR
01FC F530            314             MOV     30H,    A
01FE E543            315             MOV     A,      YEAR    ;以下产生年的低位
0200 540F            316             ANL     A,      #0FH
0202 93              317             MOVC    A,      @A+DPTR
0203 F531            318             MOV     31H,    A
0205 E544            319             MOV     A,      MONTH   ;以下产生月份的高位
0207 54F0            320             ANL     A,      #0F0H
A51 MACRO ASSEMBLER  MAIN                                                                 11/22/2005 10:14:03 PAGE     6

0209 C4              321             SWAP    A
020A 93              322             MOVC    A,      @A+DPTR
020B F533            323             MOV     33H,    A
020D E544            324             MOV     A,      MONTH   ;以下产生月份的低位
020F 540F            325             ANL     A,      #0FH
0211 93              326             MOVC    A,      @A+DPTR
0212 F534            327             MOV     34H,    A
0214 E545            328             MOV     A,      DAY     ;以下产生日期的高位
0216 54F0            329             ANL     A,      #0F0H
0218 C4              330             SWAP    A
0219 93              331             MOVC    A,      @A+DPTR
021A F536            332             MOV     36H,    A
021C E545            333             MOV     A,      DAY     ;以下产生日期的低位
021E 540F            334             ANL     A,      #0FH
0220 93              335             MOVC    A,      @A+DPTR
0221 F537            336             MOV     37H,    A
                     337     ;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^关于年份的设置
                     338     
0223                 339     CHANGE_YEAR:
0223 7F03            340             MOV     R7,     #00000011B      ;位闪
0225 91D3            341             CALL    FLASH
0227                 342      CHANGE_YEAR2:
                     343     
0227 9199            344             CALL    KEYBO
0229 30020D          345             JNB     OVER3S, YEAR_NEXT
022C E53C            346             MOV     A,      KEY_VOL
022E B48208          347             CJNE    A,      #82H,   YEAR_NEXT
                     348     
0231 71B7            349             CALL    INC_YEAR
0233 91F3            350             CALL    DLY100MS
                     351     
0235 7183            352             CALL    SAVE_12887      ;更新DS12887的数据
0237 80EE            353             SJMP    CHANGE_YEAR2
                     354     
0239                 355     YEAR_NEXT:              
0239 3003E7          356             JNB     KEY_DIR,CHANGE_YEAR
023C C203            357             CLR     KEY_DIR
023E E53C            358             MOV     A,      KEY_VOL
0240 B40102          359             CJNE    A,      #01H,   YEAR_KEY2       ;按功能键的处理
0243 800F            360             SJMP    CHANGE_MONTH
0245 B40206          361     YEAR_KEY2:CJNE  A,      #02H,   YEAR_KEY3       ;按调整键的处理
0248 71B7            362             CALL    INC_YEAR
024A 7183            363             CALL    SAVE_12887
024C 80D5            364             SJMP    CHANGE_YEAR
024E B404D2          365     YEAR_KEY3:CJNE  A,      #04H,   CHANGE_YEAR     ;按返回键的处理
0251 9181            366             CALL    UPDATA_ON
0253 22              367             RET
                     368             
                     369     ;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^关于月份的调置
0254                 370     CHANGE_MONTH:
0254 7F18            371             MOV     R7,     #00011000B
0256 91D3            372             CALL    FLASH
                     373     
0258                 374     CHANGE_MONTH2:
                     375     
0258 9199            376             CALL    KEYBO
025A 30020D          377             JNB     OVER3S, MONTH_NEXT
025D E53C            378             MOV     A,      KEY_VOL
025F B48208          379             CJNE    A,      #82H,   MONTH_NEXT
                     380     
0262 71D2            381             CALL    INC_MONTH
0264 91F3            382             CALL    DLY100MS
                     383     
0266 7183            384             CALL    SAVE_12887      ;更新DS12887的数据
0268 80EE            385             SJMP    CHANGE_MONTH2
                     386     
A51 MACRO ASSEMBLER  MAIN                                                                 11/22/2005 10:14:03 PAGE     7

026A                 387     MONTH_NEXT:             
026A 3003E7          388             JNB     KEY_DIR,CHANGE_MONTH
026D C203            389             CLR     KEY_DIR
026F E53C            390             MOV     A,      KEY_VOL
0271 B40102          391             CJNE    A,      #01H,   MONTH_KEY2      ;按功能键的处理
0274 800F            392             SJMP    CHANGE_DAY
0276 B40206          393     MONTH_KEY2:CJNE A,      #02H,   MONTH_KEY3      ;按调整键的处理
0279 71D2            394             CALL    INC_MONTH
027B 7183            395             CALL    SAVE_12887
027D 80D5            396             SJMP    CHANGE_MONTH
027F B404D2          397     MONTH_KEY3:CJNE A,      #04H,   CHANGE_MONTH    ;按返回键的处理
0282 9181            398             CALL    UPDATA_ON
0284 22              399             RET
                     400     
                     401     ;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^关于天的设置
0285                 402     CHANGE_DAY:
0285 7FC0            403             MOV     R7,     #11000000B
0287 91D3            404             CALL    FLASH
                     405     
0289                 406     CHANGE_DAY2:
                     407     
0289 9199            408             CALL    KEYBO
028B 30020D          409             JNB     OVER3S, DAY_NEXT
028E E53C            410             MOV     A,      KEY_VOL
0290 B48208          411             CJNE    A,      #82H,   DAY_NEXT
                     412     
0293 71F5            413             CALL    INC_DAY
0295 91F3            414             CALL    DLY100MS
                     415     
0297 7183            416             CALL    SAVE_12887      ;更新DS12887的数据
0299 80EE            417             SJMP    CHANGE_DAY2
                     418     
029B                 419     DAY_NEXT:               
029B 3003E7          420             JNB     KEY_DIR,CHANGE_DAY
029E C203            421             CLR     KEY_DIR
02A0 E53C            422             MOV     A,      KEY_VOL
02A2 B40102          423             CJNE    A,      #01H,   DAY_KEY2        ;按功能键的处理
02A5 800F            424             SJMP    CHANGE_HOUR_L
02A7 B40206          425     DAY_KEY2:CJNE   A,      #02H,   DAY_KEY3        ;按调整键的处理
02AA 71F5            426             CALL    INC_DAY
02AC 7183            427             CALL    SAVE_12887
02AE 80D5            428             SJMP    CHANGE_DAY
02B0 B404D2          429     DAY_KEY3:CJNE   A,      #04H,   CHANGE_DAY      ;按返回键的处理
02B3 9181            430             CALL    UPDATA_ON
02B5 22              431             RET
                     432     
                     433     ;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^关于小时的设置
02B6                 434     CHANGE_HOUR_L:
02B6 11C5            435             CALL    TIME_DISP
02B8                 436     CHANGE_HOUR:
02B8 7F03            437             MOV     R7,     #00000011B
02BA 91D3            438             CALL    FLASH
                     439     
02BC                 440     CHANGE_HOUR2:
                     441     
02BC 9199            442             CALL    KEYBO
02BE 30020D          443             JNB     OVER3S, HOUR_NEXT
02C1 E53C            444             MOV     A,      KEY_VOL
02C3 B48208          445             CJNE    A,      #82H,   HOUR_NEXT
                     446     
02C6 9118            447             CALL    INC_HOUR
02C8 91F3            448             CALL    DLY100MS
                     449     
02CA 7183            450             CALL    SAVE_12887      ;更新DS12887的数据
02CC 80EE            451             SJMP    CHANGE_HOUR2
                     452     
A51 MACRO ASSEMBLER  MAIN                                                                 11/22/2005 10:14:03 PAGE     8

02CE                 453     HOUR_NEXT:              
02CE 3003E7          454             JNB     KEY_DIR,CHANGE_HOUR
02D1 C203            455             CLR     KEY_DIR
02D3 E53C            456             MOV     A,      KEY_VOL
02D5 B40102          457             CJNE    A,      #01H,   HOUR_KEY2       ;按功能键的处理
02D8 800F            458             SJMP    CHANGE_MUNITE
02DA B40206          459     HOUR_KEY2:CJNE  A,      #02H,   HOUR_KEY3       ;按调整键的处理
02DD 9118            460             CALL    INC_HOUR
02DF 7183            461             CALL    SAVE_12887
02E1 80D5            462             SJMP    CHANGE_HOUR
02E3 B404D2          463     HOUR_KEY3:CJNE  A,      #04H,   CHANGE_HOUR     ;按返回键的处理
02E6 9181            464             CALL    UPDATA_ON
02E8 22              465             RET
                     466     
                     467     ;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^关于分钟的设置
02E9                 468     CHANGE_MUNITE:
02E9 7F18            469             MOV     R7,     #00011000B
02EB 91D3            470             CALL    FLASH
                     471     
02ED                 472     CHANGE_MUNITE2:
                     473     
02ED 9199            474             CALL    KEYBO
02EF 30020D          475             JNB     OVER3S, MUNITE_NEXT
02F2 E53C            476             MOV     A,      KEY_VOL
02F4 B48208          477             CJNE    A,      #82H,   MUNITE_NEXT
                     478     
02F7 913B            479             CALL    INC_MUNITE
02F9 91F3            480             CALL    DLY100MS
                     481     
02FB 7183            482             CALL    SAVE_12887      ;更新DS12887的数据
02FD 80EE            483             SJMP    CHANGE_MUNITE2
                     484     
02FF                 485     MUNITE_NEXT:            
02FF 3003E7          486             JNB     KEY_DIR,CHANGE_MUNITE
0302 C203            487             CLR     KEY_DIR

⌨️ 快捷键说明

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