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

📄 ds1302-dsy.lst

📁 数字电压表 AD芯片: 采用8位串行A/D转换器ADC0832。 ● 8位分辨率
💻 LST
📖 第 1 页 / 共 5 页
字号:
A51 MACRO ASSEMBLER  DS1302_DSY                                                           07/21/2006 08:51:55 PAGE     1


MACRO ASSEMBLER A51 V7.08a
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     ;8位数码管显示
                       3     ;P0 为段码口、P2 为位码口
                       4     ;晶振 11.0592M
                       5     ;时钟芯片:DS1302
                       6     
                       7     ;************** DS1302 端口位定义 **************
  0091                 8               IO_DATA  BIT  P1.1     ; 数据传送总线
  0090                 9               SCLK     BIT  P1.0     ; 时钟控制总线
  0092                10               RST      BIT  P1.2     ; 复位总线
                      11     
  0094                12               K1     EQU  P1.4       ;独立键
  0095                13               K2     EQU  P1.5
  0096                14               K3     EQU  P1.6
  0097                15               K4     EQU  P1.7
                      16     
  00B7                17               BEEP   EQU  P3.7       ;蜂鸣器
  0093                18               RELAY  EQU  P1.3       ;继电器
                      19     
  0022                20               T_CONU  EQU  22H       ;中断计数
  0023                21               TIME_L  EQU  23H       ;定时初值
  0024                22               TIME_H  EQU  24H
                      23     
  0050                24               TIME_DATA   EQU  50H   ;显示时间单元首地址
  0060                25               DATE_DATA   EQU  60H   ;显示日期单元首地址
  0058                26               DS_DATA     EQU  58H   ;显示定时时间单元首地址
                      27     ;------------------------------------------------
0000                  28               ORG 0000H
0000 2100             29               AJMP MAIN
                      30     
000B                  31               ORG  000BH
000B 2165             32               AJMP  INT_T0
                      33     
0100                  34               ORG  0100H
                      35     ;------------------------------------------------
0100                  36     MAIN:
0100 758901           37               MOV  TMOD,#01H        ;T0,方式1
0103 752300           38               MOV  TIME_L,#00H      ;50MS定时值
0106 75244C           39               MOV  TIME_H,#4CH
0109 752200           40               MOV  T_CONU,#00H      ;中断次数
010C 75A882           41               MOV  IE,#82H          ;EA=1,ET0=1
                      42     
010F 7400             43               MOV  A,#00H
0111 7840             44               MOV  R0,#40H          ;从40H单元开始
0113 7940             45               MOV  R1,#40H          ;清64个单元
0115 F6               46     M_CLEAR:  MOV  @R0,A
0116 08               47               INC  R0
0117 D9FC             48               DJNZ  R1,M_CLEAR
                      49     
0119 757F0A           50               MOV  7FH,#0AH         ;送熄灭符
011C D2B7             51               SETB   BEEP
011E 1206BA           52               LCALL  TIME_DELAY     ;调显示延时
0121 120180           53               LCALL  PROSET         ;DS1302初始化
                      54     
0124                  55     MAIN1:
0124 120190           56               LCALL  GET_TIME       ;从DS1302读数据程序
0127 120235           57               LCALL  CHULI          ;实时时间数据处理
012A 7850             58               MOV  R0,#TIME_DATA    ;显示时、分、秒
A51 MACRO ASSEMBLER  DS1302_DSY                                                           07/21/2006 08:51:55 PAGE     2

012C 1202A2           59               LCALL  DISP
012F 7850             60               MOV  R0,#TIME_DATA
0131 1202AE           61               LCALL  TIME_DISPLAY
0134 1202DA           62               LCALL  SET_KEY        ;键功能程序
0137 12068A           63               LCALL  COMP           ;实时时间与定时时间比较
013A 2094E7           64               JB  K1,MAIN1
013D D1DC             65               CALL  BEEP_BL
013F                  66     MAIN2:
013F 120235           67               LCALL  CHULI          ;日期数据处理
0142 7860             68               MOV  R0,#DATE_DATA
0144 1202A2           69               LCALL  DISP           ;显示年、月、日
0147 7860             70               MOV  R0,#DATE_DATA
0149 1202AE           71               LCALL  TIME_DISPLAY
014C 2094F0           72               JB  K1,MAIN2
014F D1DC             73               CALL  BEEP_BL
0151                  74     MAIN3:
0151 120630           75               LCALL  DS_CHULI        ;定时时间数据处理
0154 7858             76               MOV  R0,#DS_DATA
0156 12065B           77               LCALL  DS_SP           ;显示定时时间
0159 7858             78               MOV  R0,#DS_DATA
015B 120667           79               LCALL  DS_DISPLAY
015E 2094F0           80               JB  K1,MAIN3
0161 D1DC             81               CALL  BEEP_BL
0163 2124             82               AJMP  MAIN1
                      83     ;--------------------------------------------
                      84     ;中断服务子程序
                      85     ;300MS对闪动标记取反一次
                      86     ;--------------------------------------------
0165                  87     INT_T0:
0165 C0E0             88               PUSH  ACC
0167 C0D0             89               PUSH  PSW
0169 85238A           90               MOV  TL0,TIME_L
016C 85248C           91               MOV  TH0,TIME_H
016F 0522             92               INC  T_CONU
0171 E522             93               MOV  A,T_CONU
0173 B40605           94               CJNE  A,#06H,INT_END
0176 752200           95               MOV  T_CONU,#00H
0179 B20A             96               CPL  0AH
017B                  97     INT_END:
017B D0D0             98               POP  PSW
017D D0E0             99               POP  ACC
017F 32              100               RETI
                     101     ;--------------------------------------------
                     102     ;DS1302 初始化子程序
                     103     ; (R0)=数据  (R1)=地址
                     104     ;--------------------------------------------
0180                 105     PROSET:
0180 C292            106                CLR   RST            ;DS1302复位
0182 C290            107                CLR   SCLK
0184 00              108                NOP
0185 00              109                NOP
0186 D292            110                SETB  RST
                     111     
                     112               ;MOV  R1,#80H          ;写秒寄存器
                     113               ;MOV  R0,#00H          ;启动振荡器
                     114               ;LCALL WRITE
                     115     
                     116               ;MOV  R1,#82H          ;写分寄存器
                     117               ;MOV  R0,#58H
                     118               ;LCALL WRITE
                     119     
                     120               ;MOV  R1,#84H          ;写时寄存器
                     121               ;MOV  R0,#80H
                     122               ;LCALL WRITE
                     123     
0188 7990            124               MOV  R1,#90H          ;写充电寄存器
A51 MACRO ASSEMBLER  DS1302_DSY                                                           07/21/2006 08:51:55 PAGE     3

018A 78AB            125               MOV  R0,#0ABH
018C 1201C2          126               LCALL WRITE
018F 22              127               RET
                     128     ;===============================================
                     129     ;读时间、日期数据子程序
                     130     ;存放单元 40H - 46H
                     131     ;===============================================
0190                 132     GET_TIME:
0190 7981            133               MOV  R1,#81H          ;读秒
0192 1201FD          134               LCALL  READ
0195 8840            135               MOV 40H,R0
                     136     
0197 7983            137               MOV  R1,#83H          ;读分
0199 1201FD          138               LCALL  READ
019C 8841            139               MOV 41H,R0
                     140     
019E 7985            141               MOV  R1,#85H          ;读时
01A0 1201FD          142               LCALL  READ
01A3 8842            143               MOV 42H,R0
                     144     
01A5 7987            145               MOV  R1,#87H          ;读出日期
01A7 1201FD          146               LCALL  READ
01AA 8843            147               MOV 43H,R0
                     148     
01AC 7989            149               MOV  R1,#89H          ;读出月份
01AE 1201FD          150               LCALL  READ
01B1 8844            151               MOV 44H,R0
                     152     
01B3 798B            153               MOV  R1,#8BH          ;读出星期
01B5 1201FD          154               LCALL  READ
01B8 8846            155               MOV 46H,R0
                     156     
01BA 798D            157               MOV  R1,#8DH          ;读出年
01BC 1201FD          158               LCALL  READ
01BF 8845            159               MOV 45H,R0
                     160     
01C1 22              161               RET
                     162     ;================================================
                     163     ;写 DS1302 子程序
                     164     ;================================================
01C2                 165     WRITE:
01C2 C290            166               CLR  SCLK
01C4 00              167               NOP
01C5 00              168               NOP
01C6 D292            169               SETB  RST
01C8 00              170               NOP
01C9 E9              171               MOV  A,R1
01CA 7A08            172               MOV  R2,#08H
01CC                 173     WRI_01:
01CC 13              174               RRC  A                ;传输地址到DS1302
01CD 00              175               NOP
01CE 00              176               NOP
01CF C290            177               CLR  SCLK
01D1 00              178               NOP
01D2 00              179               NOP          
01D3 9291            180               MOV  IO_DATA,C
01D5 00              181               NOP
01D6 00              182               NOP         
01D7 D290            183               SETB  SCLK
01D9 00              184               NOP
01DA 00              185               NOP
01DB DAEF            186               DJNZ  R2,WRI_01
01DD C290            187               CLR  SCLK
01DF 00              188               NOP
01E0 00              189               NOP
01E1 E8              190               MOV  A,R0
A51 MACRO ASSEMBLER  DS1302_DSY                                                           07/21/2006 08:51:55 PAGE     4

01E2 7A08            191               MOV  R2,#08H
01E4                 192     WRI_02:
01E4 13              193               RRC  A           ;传输数据到DS1302
01E5 00              194               NOP
01E6 C290            195               CLR  SCLK
01E8 00              196               NOP
01E9 00              197               NOP
01EA 9291            198               MOV  IO_DATA,C
01EC 00              199               NOP
01ED 00              200               NOP
01EE D290            201               SETB  SCLK
01F0 00              202               NOP
01F1 00              203               NOP
01F2 DAF0            204               DJNZ  R2,WRI_02
01F4 C290            205               CLR  SCLK
01F6 00              206               NOP
01F7 00              207               NOP
01F8 C292            208               CLR  RST
01FA 00              209               NOP
01FB 00              210               NOP
01FC 22              211               RET
                     212     ;=================================================
                     213     ;读 DS1302 子程序
                     214     ;=================================================
01FD                 215     READ:
01FD C290            216               CLR   SCLK
01FF 00              217               NOP
0200 00              218               NOP
0201 D292            219               SETB  RST
0203 00              220               NOP
0204 00              221               NOP
0205 E9              222               MOV  A,R1
0206 7A08            223               MOV  R2,#08H

⌨️ 快捷键说明

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