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

📄 ds1302-dsy.lst

📁 单片机8051下 对1302实时时钟的读写程序 对课程设计很有帮助
💻 LST
📖 第 1 页 / 共 5 页
字号:
01EC 00              220               NOP
01ED 00              221               NOP
01EE D290            222               SETB  SCLK
01F0 00              223               NOP
01F1 00              224               NOP
01F2 DAF0            225               DJNZ  R2,WRI_02
01F4 C290            226               CLR  SCLK
01F6 00              227               NOP
01F7 00              228               NOP
01F8 C292            229               CLR  RST
01FA 00              230               NOP
01FB 00              231               NOP
01FC 22              232               RET
                     233     ;=================================================
                     234     ;读 DS1302 子程序
                     235     ;=================================================
01FD                 236     READ:
01FD C290            237               CLR   SCLK
01FF 00              238               NOP
0200 00              239               NOP
0201 D292            240               SETB  RST
0203 00              241               NOP
0204 00              242               NOP
0205 E9              243               MOV  A,R1
0206 7A08            244               MOV  R2,#08H
0208                 245     READ_01:
0208 13              246               RRC  A
0209 00              247               NOP               ;先传输地址到DS1302
020A 9291            248               MOV  IO_DATA,C
020C 00              249               NOP
020D 00              250               NOP
020E D290            251               SETB  SCLK
0210 00              252               NOP
0211 00              253               NOP
0212 C290            254               CLR  SCLK
0214 00              255               NOP
0215 00              256               NOP
A51 MACRO ASSEMBLER  DS1302_DSY                                                           03/29/2005 16:20:14 PAGE     5

0216 DAF0            257               DJNZ  R2,READ_01
0218 00              258               NOP
0219 00              259               NOP
021A D291            260               SETB  IO_DATA
021C E4              261               CLR  A
021D C3              262               CLR  C
021E 7A08            263               MOV  R2,#08H
0220                 264     READ_02:
0220 C290            265               CLR  SCLK
0222 00              266               NOP
0223 00              267               NOP         
0224 A291            268               MOV  C,IO_DATA
0226 00              269               NOP
0227 00              270               NOP         
0228 13              271               RRC  A                ;再从DS1302接收数据
0229 00              272               NOP
022A 00              273               NOP          
022B D290            274               SETB  SCLK
022D 00              275               NOP
022E 00              276               NOP          
022F DAEF            277               DJNZ  R2,READ_02
0231 F8              278               MOV  R0,A
0232 C292            279               CLR  RST
0234 22              280               RET
                     281     ;==============================================
                     282     ;实时时间、日期数据处理子程序
                     283     ;==============================================
0235                 284      CHULI:
0235 E540            285               MOV A,40H               ;处理秒数据
0237 540F            286               ANL A,#0FH
0239 F550            287               MOV 50H,A
023B F570            288               MOV 70H,A
023D E540            289               MOV A,40H
023F 54F0            290               ANL A,#11110000B
0241 C4              291               SWAP A
0242 F551            292               MOV 51H,A
0244 F571            293               MOV 71H,A
                     294     ;---------------------------------------------
0246 E541            295               MOV A,41H               ;处理分数据
0248 540F            296               ANL A,#0FH
024A F552            297               MOV 52H,A
024C F572            298               MOV 72H,A
024E E541            299               MOV A,41H
0250 54F0            300               ANL A,#11110000B
0252 C4              301               SWAP A
0253 F553            302               MOV 53H,A
0255 F573            303               MOV 73H,A
                     304     ;---------------------------------------------
0257 E542            305               MOV A,42H               ;处理时数据
0259 540F            306               ANL A,#0FH
025B F554            307               MOV 54H,A
025D F574            308               MOV 74H,A
025F E542            309               MOV A,42H
0261 54F0            310               ANL A,#11110000B
0263 C4              311               SWAP A
0264 F555            312               MOV 55H,A
0266 F575            313               MOV 75H,A
                     314     ;----------------------------------------------
0268 E543            315               MOV A,43H               ;处理日数据
026A 540F            316               ANL A,#0FH
026C F560            317               MOV 60H,A
026E F576            318               MOV 76H,A
0270 E543            319               MOV A,43H
0272 54F0            320               ANL A,#11110000B
0274 C4              321               SWAP A
0275 F561            322               MOV 61H,A
A51 MACRO ASSEMBLER  DS1302_DSY                                                           03/29/2005 16:20:14 PAGE     6

0277 F577            323               MOV 77H,A
                     324     ;---------------------------------------------
0279 E544            325               MOV A,44H               ;处理月数据
027B 540F            326               ANL A,#0FH
027D F562            327               MOV 62H,A
027F F578            328               MOV 78H,A
0281 E544            329               MOV A,44H
0283 54F0            330               ANL A,#11110000B
0285 C4              331               SWAP A
0286 F563            332               MOV 63H,A
0288 F579            333               MOV 79H,A
                     334     ;---------------------------------------------
028A E545            335               MOV A,45H               ;处理年数据
028C 540F            336               ANL A,#0FH
028E F564            337               MOV 64H,A
0290 F57A            338               MOV  7AH,A
0292 E545            339               MOV A,45H
0294 54F0            340               ANL A,#11110000B
0296 C4              341               SWAP A
0297 F565            342               MOV 65H,A
0299 F57B            343               MOV 7BH,A
                     344     ;----------------------------------------------
029B E546            345               MOV A,46H               ;处理周数据
029D F566            346               MOV 66H,A
029F F57C            347               MOV 7CH,A
02A1 22              348               RET
                     349     ;=============================================
                     350     ;实时时间、日期查表取数子程序
                     351     ;=============================================
02A2                 352     DISP:     ;MOV  R0,#TIME_DATA
02A2 7B06            353               MOV R3,#06H
02A4 E6              354     DISP1:    MOV A,@R0
02A5 9006FA          355               MOV DPTR,#TAB_NU
02A8 93              356               MOVC A,@A+DPTR
02A9 F6              357               MOV @R0,A
02AA 08              358               INC R0
02AB DBF7            359               DJNZ R3,DISP1
02AD 22              360               RET
                     361     ;====================================================
                     362     ;时间、日期显示子程序
                     363     ;====================================================
02AE                 364     TIME_DISPLAY:
                     365               ;MOV  R0,#TIME_DATA      ;取得显示单元首地址
02AE 797F            366               MOV  R1,#07FH          ;从第一个数码管开始
02B0 7A08            367               MOV  R2,#08H           ;共8个数码管
                     368     
02B2 8680            369     DISLP:    MOV  P0,@R0            ;获得当前单元数据
02B4 E9              370               MOV  A,R1
02B5 F5A0            371               MOV  P2,A             ;数码显示
02B7 20E505          372               JB  ACC.5,DISLP1      ;第三位数码管显示 -
02BA 7580BF          373               MOV  P0,#0BFH
02BD 8009            374               JMP  DISLP3
02BF 20E205          375     DISLP1:   JB  ACC.2,DISLP2      ;第六位数码管显示 -
02C2 7580BF          376               MOV  P0,#0BFH
02C5 8001            377               JMP  DISLP3
02C7 08              378     DISLP2:   INC  R0
02C8 E9              379     DISLP3:   MOV  A,R1              ;为下一个数准备
02C9 03              380               RR  A                  ;下一个单元
02CA F9              381               MOV  R1,A              ;保存
02CB 1202D1          382               LCALL  DELAY           ;为了保证数码管亮度,延时
02CE DAE2            383               DJNZ  R2,DISLP        ;重复显示,直到全部数据刷新过
02D0 22              384               RET                   ;返回
                     385     
02D1                 386     DELAY:
02D1 7C0A            387               MOV  R4,#0AH
02D3 7D64            388       L15:    MOV  R5,#64H
A51 MACRO ASSEMBLER  DS1302_DSY                                                           03/29/2005 16:20:14 PAGE     7

02D5 DDFE            389       L16:    DJNZ  R5,L16
02D7 DCFA            390               DJNZ  R4,L15
02D9 22              391               RET
                     392     ;******************************************************
02DA                 393     SET_KEY:
02DA D294            394              SETB  K1             ;增加键
02DC D295            395              SETB  K2             ;减少键
02DE D296            396              SETB  K3             ;选择键
02E0 D297            397              SETB  K4             ;定时设定功能键
02E2 00              398              NOP
02E3 209705          399              JB  K4,KEY01
02E6 1206DC          400              LCALL  BEEP_BL
02E9 8011            401              JMP  DS_KEY          ;进入定时值设定子程序
02EB 209505          402     KEY01:   JB  K2,KEY02
02EE 1206DC          403              LCALL  BEEP_BL
02F1 8014            404              JMP  SET_TIME        ;进入时间设定子程序
02F3 209605          405     KEY02:   JB  K3,KEY03
02F6 1206DC          406              LCALL  BEEP_BL
02F9 B200            407              CPL  20H.0          ;止闹标记取反
02FB 22              408     KEY03:   RET
                     409     
                     410     ;-----------------------------------------------------
02FC                 411     DS_KEY:
02FC D1A8            412              CALL  DS_DELAY
02FE 3097FD          413              JNB  K4,$          
0301 120534          414              LCALL  DSSET
0304 D1A8            415              CALL  DS_DELAY
0306 22              416              RET
                     417     ;==============================================
                     418     ;实时时间设定子程序
                     419     ;K1为加键、K2为减键、K3为选择键
                     420     ;==============================================
0307                 421     SET_TIME:
0307 798E            422              MOV  R1,#8EH          ;写保护寄存器
0309 7800            423              MOV  R0,#00H          ;允许写入
030B 1201C2          424              LCALL WRITE
                     425     
030E 7980            426              MOV  R1,#80H          ;写秒寄存器
0310 7880            427              MOV  R0,#80H          ;停止振荡器工作
0312 1201C2          428              LCALL WRITE
                     429     
0315 D28C            430              SETB  TR0
                     431     
0317 D1BA            432     K001:    CALL TIME_DELAY       ;校时
0319 3096FB          433              JNB K3,K001           ;K3为位移键
031C                 434     K010:
031C 5135            435              CALL  CHULI
031E 300A08          436              JNB  0AH,KH01
0321 857F54          437              MOV  54H,7FH          ;送入熄灭符
0324 857F55          438              MOV  55H,7FH
0327 8006            439              JMP  KH02
0329 857454          440      KH01:   MOV  54H,74H          ;送实时值
032C 857555          441              MOV  55H,75H          ;送实时值
032F 7850            442      KH02:   MOV  R0,#TIME_DATA
0331 51A2            443              CALL  DISP
0333 7850            444              MOV  R0,#TIME_DATA
0335 51AE            445              CALL  TIME_DISPLAY
0337 309408          446              JNB  K1,K011A
033A 30951E          447              JNB  K2,K011B

⌨️ 快捷键说明

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