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

📄 ds1302-dsy.lst

📁 单片机8051下 对1302实时时钟的读写程序 对课程设计很有帮助
💻 LST
📖 第 1 页 / 共 5 页
字号:
A51 MACRO ASSEMBLER  DS1302_DSY                                                           03/29/2005 16:20:14 PAGE     1


MACRO ASSEMBLER A51 V7.10
OBJECT MODULE PLACED IN DS1302-DSY.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE DS1302-DSY.asm SET(SMALL) DEBUG EP

LOC  OBJ            LINE     SOURCE

                       1     ;********************************************************************************
                       2     ;*  标题:  伟纳电子ME300B单片机开发系统演示程序 - DS1302数码管显示电子钟        *
                       3     ;*  文件:  DS1302_DSY.asm                                                       *
                       4     ;*  日期:  2005-3-20                                                            *
                       5     ;*  版本:  1.0                                                                  *
                       6     ;*  作者:  gguoqing                                                             *
                       7     ;*  邮箱:  gguoqing@willar.com                                                  *
                       8     ;*  网站: http://www.willar.com                                                *
                       9     ;********************************************************************************
                      10     ;*  描述:                                                                       *
                      11     ;*          DS1302数码管显示电子钟                                              *
                      12     ;*                                                                              *
                      13     ;*          使用方法参考readme.txt文档                                          *
                      14     ;*                                                                              *
                      15     ;*                                                                              *
                      16     ;********************************************************************************
                      17     ;* 【版权】 Copyright(C)伟纳电子 www.willar.com  All Rights Reserved            *
                      18     ;* 【声明】 此程序仅用于学习与参考,引用请注明版权和作者信息!                  *
                      19     ;********************************************************************************
                      20     
                      21     
                      22     ;ME300B
                      23     ;8位数码管显示
                      24     ;P0 为段码口、P2 为位码口
                      25     ;晶振 11.0592M
                      26     ;时钟芯片:DS1302
                      27     
                      28     ;************** DS1302 端口位定义 **************
  0091                29               IO_DATA  BIT  P1.1     ; 数据传送总线
  0090                30               SCLK     BIT  P1.0     ; 时钟控制总线
  0092                31               RST      BIT  P1.2     ; 复位总线
                      32     
  0094                33               K1     EQU  P1.4       ;独立键
  0095                34               K2     EQU  P1.5
  0096                35               K3     EQU  P1.6
  0097                36               K4     EQU  P1.7
                      37     
  00B7                38               BEEP   EQU  P3.7       ;蜂鸣器
  0093                39               RELAY  EQU  P1.3       ;继电器
                      40     
  0022                41               T_CONU  EQU  22H       ;中断计数
  0023                42               TIME_L  EQU  23H       ;定时初值
  0024                43               TIME_H  EQU  24H
                      44     
  0050                45               TIME_DATA   EQU  50H   ;显示时间单元首地址
  0060                46               DATE_DATA   EQU  60H   ;显示日期单元首地址
  0058                47               DS_DATA     EQU  58H   ;显示定时时间单元首地址
                      48     ;------------------------------------------------
0000                  49               ORG 0000H
0000 2100             50               AJMP MAIN
                      51     
000B                  52               ORG  000BH
000B 2165             53               AJMP  INT_T0
                      54     
0100                  55               ORG  0100H
                      56     ;------------------------------------------------
0100                  57     MAIN:
0100 758901           58               MOV  TMOD,#01H        ;T0,方式1
A51 MACRO ASSEMBLER  DS1302_DSY                                                           03/29/2005 16:20:14 PAGE     2

0103 752300           59               MOV  TIME_L,#00H      ;50MS定时值
0106 75244C           60               MOV  TIME_H,#4CH
0109 752200           61               MOV  T_CONU,#00H      ;中断次数
010C 75A882           62               MOV  IE,#82H          ;EA=1,ET0=1
                      63     
010F 7400             64               MOV  A,#00H
0111 7840             65               MOV  R0,#40H          ;从40H单元开始
0113 7940             66               MOV  R1,#40H          ;清64个单元
0115 F6               67     M_CLEAR:  MOV  @R0,A
0116 08               68               INC  R0
0117 D9FC             69               DJNZ  R1,M_CLEAR
                      70     
0119 757F0A           71               MOV  7FH,#0AH         ;送熄灭符
011C D2B7             72               SETB   BEEP
011E 1206BA           73               LCALL  TIME_DELAY     ;调显示延时
0121 120180           74               LCALL  PROSET         ;DS1302初始化
                      75     
0124                  76     MAIN1:
0124 120190           77               LCALL  GET_TIME       ;从DS1302读数据程序
0127 120235           78               LCALL  CHULI          ;实时时间数据处理
012A 7850             79               MOV  R0,#TIME_DATA    ;显示时、分、秒
012C 1202A2           80               LCALL  DISP
012F 7850             81               MOV  R0,#TIME_DATA
0131 1202AE           82               LCALL  TIME_DISPLAY
0134 1202DA           83               LCALL  SET_KEY        ;键功能程序
0137 12068A           84               LCALL  COMP           ;实时时间与定时时间比较
013A 2094E7           85               JB  K1,MAIN1
013D D1DC             86               CALL  BEEP_BL
013F                  87     MAIN2:
013F 120235           88               LCALL  CHULI          ;日期数据处理
0142 7860             89               MOV  R0,#DATE_DATA
0144 1202A2           90               LCALL  DISP           ;显示年、月、日
0147 7860             91               MOV  R0,#DATE_DATA
0149 1202AE           92               LCALL  TIME_DISPLAY
014C 2094F0           93               JB  K1,MAIN2
014F D1DC             94               CALL  BEEP_BL
0151                  95     MAIN3:
0151 120630           96               LCALL  DS_CHULI        ;定时时间数据处理
0154 7858             97               MOV  R0,#DS_DATA
0156 12065B           98               LCALL  DS_SP           ;显示定时时间
0159 7858             99               MOV  R0,#DS_DATA
015B 120667          100               LCALL  DS_DISPLAY
015E 2094F0          101               JB  K1,MAIN3
0161 D1DC            102               CALL  BEEP_BL
0163 2124            103               AJMP  MAIN1
                     104     ;--------------------------------------------
                     105     ;中断服务子程序
                     106     ;300MS对闪动标记取反一次
                     107     ;--------------------------------------------
0165                 108     INT_T0:
0165 C0E0            109               PUSH  ACC
0167 C0D0            110               PUSH  PSW
0169 85238A          111               MOV  TL0,TIME_L
016C 85248C          112               MOV  TH0,TIME_H
016F 0522            113               INC  T_CONU
0171 E522            114               MOV  A,T_CONU
0173 B40605          115               CJNE  A,#06H,INT_END
0176 752200          116               MOV  T_CONU,#00H
0179 B20A            117               CPL  0AH
017B                 118     INT_END:
017B D0D0            119               POP  PSW
017D D0E0            120               POP  ACC
017F 32              121               RETI
                     122     ;--------------------------------------------
                     123     ;DS1302 初始化子程序
                     124     ; (R0)=数据  (R1)=地址
A51 MACRO ASSEMBLER  DS1302_DSY                                                           03/29/2005 16:20:14 PAGE     3

                     125     ;--------------------------------------------
0180                 126     PROSET:
0180 C292            127                CLR   RST            ;DS1302复位
0182 C290            128                CLR   SCLK
0184 00              129                NOP
0185 00              130                NOP
0186 D292            131                SETB  RST
                     132     
                     133               ;MOV  R1,#80H          ;写秒寄存器
                     134               ;MOV  R0,#00H          ;启动振荡器
                     135               ;LCALL WRITE
                     136     
                     137               ;MOV  R1,#82H          ;写分寄存器
                     138               ;MOV  R0,#58H
                     139               ;LCALL WRITE
                     140     
                     141               ;MOV  R1,#84H          ;写时寄存器
                     142               ;MOV  R0,#80H
                     143               ;LCALL WRITE
                     144     
0188 7990            145               MOV  R1,#90H          ;写充电寄存器
018A 78AB            146               MOV  R0,#0ABH
018C 1201C2          147               LCALL WRITE
018F 22              148               RET
                     149     ;===============================================
                     150     ;读时间、日期数据子程序
                     151     ;存放单元 40H - 46H
                     152     ;===============================================
0190                 153     GET_TIME:
0190 7981            154               MOV  R1,#81H          ;读秒
0192 1201FD          155               LCALL  READ
0195 8840            156               MOV 40H,R0
                     157     
0197 7983            158               MOV  R1,#83H          ;读分
0199 1201FD          159               LCALL  READ
019C 8841            160               MOV 41H,R0
                     161     
019E 7985            162               MOV  R1,#85H          ;读时
01A0 1201FD          163               LCALL  READ
01A3 8842            164               MOV 42H,R0
                     165     
01A5 7987            166               MOV  R1,#87H          ;读出日期
01A7 1201FD          167               LCALL  READ
01AA 8843            168               MOV 43H,R0
                     169     
01AC 7989            170               MOV  R1,#89H          ;读出月份
01AE 1201FD          171               LCALL  READ
01B1 8844            172               MOV 44H,R0
                     173     
01B3 798B            174               MOV  R1,#8BH          ;读出星期
01B5 1201FD          175               LCALL  READ
01B8 8846            176               MOV 46H,R0
                     177     
01BA 798D            178               MOV  R1,#8DH          ;读出年
01BC 1201FD          179               LCALL  READ
01BF 8845            180               MOV 45H,R0
                     181     
01C1 22              182               RET
                     183     ;================================================
                     184     ;写 DS1302 子程序
                     185     ;================================================
01C2                 186     WRITE:
01C2 C290            187               CLR  SCLK
01C4 00              188               NOP
01C5 00              189               NOP
01C6 D292            190               SETB  RST
A51 MACRO ASSEMBLER  DS1302_DSY                                                           03/29/2005 16:20:14 PAGE     4

01C8 00              191               NOP
01C9 E9              192               MOV  A,R1
01CA 7A08            193               MOV  R2,#08H
01CC                 194     WRI_01:
01CC 13              195               RRC  A                ;传输地址到DS1302
01CD 00              196               NOP
01CE 00              197               NOP
01CF C290            198               CLR  SCLK
01D1 00              199               NOP
01D2 00              200               NOP          
01D3 9291            201               MOV  IO_DATA,C
01D5 00              202               NOP
01D6 00              203               NOP         
01D7 D290            204               SETB  SCLK
01D9 00              205               NOP
01DA 00              206               NOP
01DB DAEF            207               DJNZ  R2,WRI_01
01DD C290            208               CLR  SCLK
01DF 00              209               NOP
01E0 00              210               NOP
01E1 E8              211               MOV  A,R0
01E2 7A08            212               MOV  R2,#08H
01E4                 213     WRI_02:
01E4 13              214               RRC  A           ;传输数据到DS1302
01E5 00              215               NOP
01E6 C290            216               CLR  SCLK
01E8 00              217               NOP
01E9 00              218               NOP
01EA 9291            219               MOV  IO_DATA,C

⌨️ 快捷键说明

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