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

📄 ds1305.lis

📁 DS1305程序代码,在网上很少,一般不容易找到.现上传一个给大家分享.
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 0104 4A95              dec R20
 0106           L17:
 0106                   .dbline 112
 0106 2224              clr R2
 0108 2416              cp R2,R20
 010A 70F3              brlo L14
 010C                   .dbline 126
 010C           ;     asm("nop"); 
 010C           ;     asm("nop"); 
 010C           ;     set_ds1305_sclk(); 
 010C           ;     asm("nop"); 
 010C           ;     asm("nop"); 
 010C           ;     clr_ds1305_sclk(); 
 010C           ;     asm("nop"); 
 010C           ;     asm("nop"); 
 010C           ;     data>>=1; 
 010C           ;   } 
 010C           ;   clr_ds1305_rst(); 
 010C A898              cbi 0x15,0
 010E                   .dbline 127
 010E           ;   asm("nop"); 
 010E 0000              nop
 0110                   .dbline 128
 0110           ;   asm("nop"); 
 0110 0000              nop
 0112                   .dbline 129
 0112           ;   clr_ds1305_io_ddr(); 
 0112 A298              cbi 0x14,2
 0114                   .dbline 130
 0114           ;   asm("nop"); 
 0114 0000              nop
 0116                   .dbline 131
 0116           ;   asm("nop"); 
 0116 0000              nop
 0118                   .dbline -2
 0118           L7:
 0118 00D0              rcall pop_gset1
 011A                   .dbline 0 ; func end
 011A 0895              ret
 011C                   .dbsym r i 20 c
 011C                   .dbsym r data 18 c
 011C                   .dbsym r reg 16 c
 011C                   .dbend
 011C                   .dbfunc e ds1305_read _ds1305_read fc
 011C           ;           data -> R20
 011C           ;              i -> R22
 011C           ;            reg -> R16
                        .even
 011C           _ds1305_read::
 011C 00D0              rcall push_gset2
 011E                   .dbline -1
 011E                   .dbline 134
 011E           ; } 
 011E           ; unsigned char ds1305_read(unsigned char reg) 
 011E           ; { 
 011E                   .dbline 135
 011E           ;   unsigned char data=0; 
 011E 4427              clr R20
 0120                   .dbline 136
 0120           ;   unsigned char i=0; 
 0120 6627              clr R22
 0122                   .dbline 138
 0122           ;   
 0122           ;   set_ds1305_io_ddr();   
 0122 A29A              sbi 0x14,2
 0124                   .dbline 141
 0124           ;   //asm("nop"); 
 0124           ;   //asm("nop"); 
 0124           ;   clr_ds1305_rst(); 
 0124 A898              cbi 0x15,0
 0126                   .dbline 142
 0126           ;   asm("nop"); 
 0126 0000              nop
 0128                   .dbline 143
 0128           ;   asm("nop"); 
 0128 0000              nop
 012A                   .dbline 144
 012A           ;   clr_ds1305_sclk(); 
 012A A998              cbi 0x15,1
 012C                   .dbline 145
 012C           ;   asm("nop"); 
 012C 0000              nop
 012E                   .dbline 146
 012E           ;   asm("nop"); 
 012E 0000              nop
 0130                   .dbline 147
 0130           ;   set_ds1305_rst(); 
 0130 A89A              sbi 0x15,0
 0132                   .dbline 148
 0132           ;   asm("nop"); 
 0132 0000              nop
 0134                   .dbline 149
 0134           ;   asm("nop"); 
 0134 0000              nop
 0136                   .dbline 150
 0136           ;   for(i=8;i>0;i--) 
 0136 68E0              ldi R22,8
 0138 0FC0              rjmp L24
 013A           L21:
 013A                   .dbline 151
 013A           ;   { 
 013A                   .dbline 153
 013A           ;     
 013A           ;     if(reg&0x01) set_ds1305_io(); 
 013A 00FF              sbrs R16,0
 013C 02C0              rjmp L25
 013E                   .dbline 153
 013E AA9A              sbi 0x15,2
 0140 01C0              rjmp L26
 0142           L25:
 0142                   .dbline 154
 0142           ;     else clr_ds1305_io(); 
 0142 AA98              cbi 0x15,2
 0144           L26:
 0144                   .dbline 155
 0144 0000              nop
 0146                   .dbline 156
 0146 0000              nop
 0148                   .dbline 157
 0148 A99A              sbi 0x15,1
 014A                   .dbline 158
 014A 0000              nop
 014C                   .dbline 159
 014C 0000              nop
 014E                   .dbline 160
 014E A998              cbi 0x15,1
 0150                   .dbline 161
 0150 0000              nop
 0152                   .dbline 162
 0152 0000              nop
 0154                   .dbline 163
 0154 0695              lsr R16
 0156                   .dbline 164
 0156           L22:
 0156                   .dbline 150
 0156 6A95              dec R22
 0158           L24:
 0158                   .dbline 150
 0158 2224              clr R2
 015A 2616              cp R2,R22
 015C 70F3              brlo L21
 015E                   .dbline 165
 015E           ;     asm("nop"); 
 015E           ;     asm("nop"); 
 015E           ;     set_ds1305_sclk(); 
 015E           ;     asm("nop"); 
 015E           ;     asm("nop"); 
 015E           ;     clr_ds1305_sclk(); 
 015E           ;     asm("nop"); 
 015E           ;     asm("nop"); 
 015E           ;     reg>>=1; 
 015E           ;   } 
 015E           ;   clr_ds1305_io_ddr(); 
 015E A298              cbi 0x14,2
 0160                   .dbline 166
 0160           ;   asm("nop"); 
 0160 0000              nop
 0162                   .dbline 167
 0162           ;   asm("nop"); 
 0162 0000              nop
 0164                   .dbline 168
 0164           ;   for(i=8;i>0;i--) 
 0164 68E0              ldi R22,8
 0166 0DC0              rjmp L30
 0168           L27:
 0168                   .dbline 169
 0168           ;   {   
 0168                   .dbline 170
 0168           ;     data>>=1; 
 0168 4695              lsr R20
 016A                   .dbline 171
 016A           ;     if(in_ds1305_io()) data|=0x80; 
 016A 9A9B              sbis 0x13,2
 016C 01C0              rjmp L31
 016E                   .dbline 171
 016E 4068              ori R20,128
 0170           L31:
 0170                   .dbline 172
 0170 0000              nop
 0172                   .dbline 173
 0172 0000              nop
 0174                   .dbline 174
 0174 A99A              sbi 0x15,1
 0176                   .dbline 175
 0176 0000              nop
 0178                   .dbline 176
 0178 0000              nop
 017A                   .dbline 177
 017A A998              cbi 0x15,1
 017C                   .dbline 178
 017C 0000              nop
 017E                   .dbline 179
 017E 0000              nop
 0180                   .dbline 180
 0180           L28:
 0180                   .dbline 168
 0180 6A95              dec R22
 0182           L30:
 0182                   .dbline 168
 0182 2224              clr R2
 0184 2616              cp R2,R22
 0186 80F3              brlo L27
 0188                   .dbline 181
 0188           ;     asm("nop"); 
 0188           ;     asm("nop"); 
 0188           ;     set_ds1305_sclk(); 
 0188           ;     asm("nop"); 
 0188           ;     asm("nop"); 
 0188           ;     clr_ds1305_sclk(); 
 0188           ;     asm("nop"); 
 0188           ;     asm("nop"); 
 0188           ;   } 
 0188           ;   clr_ds1305_rst(); 
 0188 A898              cbi 0x15,0
 018A                   .dbline 182
 018A           ;   asm("nop"); 
 018A 0000              nop
 018C                   .dbline 183
 018C           ;   asm("nop"); 
 018C 0000              nop
 018E                   .dbline 184
 018E           ;   return(data); 
 018E 042F              mov R16,R20
 0190                   .dbline -2
 0190           L20:
 0190 00D0              rcall pop_gset2
 0192                   .dbline 0 ; func end
 0192 0895              ret
 0194                   .dbsym r data 20 c
 0194                   .dbsym r i 22 c
 0194                   .dbsym r reg 16 c
 0194                   .dbend
 0194                   .dbfunc e check_ds1305 _check_ds1305 fc
                        .even
 0194           _check_ds1305::
 0194                   .dbline -1
 0194                   .dbline 187
 0194           ; } 
 0194           ; unsigned char check_ds1305(void) 
 0194           ; { 
 0194                   .dbline 188
 0194           ;   ds1305_write(ds1305_control_reg,0x40); 
 0194 20E4              ldi R18,64
 0196 0FE0              ldi R16,15
 0198 84DF              rcall _ds1305_write
 019A                   .dbline 189
 019A           ;   if(ds1305_read(ds1305_control_reg)==0x40) return 1; 
 019A 0FE0              ldi R16,15
 019C BFDF              rcall _ds1305_read
 019E 0034              cpi R16,64
 01A0 11F4              brne L34
 01A2                   .dbline 189
 01A2 01E0              ldi R16,1
 01A4 01C0              rjmp L33
 01A6           L34:
 01A6                   .dbline 190
 01A6           ;   return 0; 
 01A6 0027              clr R16
 01A8                   .dbline -2
 01A8           L33:
 01A8                   .dbline 0 ; func end
 01A8 0895              ret
 01AA                   .dbend
 01AA                   .dbfunc e ds1305_read_time _ds1305_read_time fV
                        .even
 01AA           _ds1305_read_time::
 01AA                   .dbline -1
 01AA                   .dbline 193
 01AA           ; } 
 01AA           ; void ds1305_read_time(void) 
 01AA           ; { 
 01AA                   .dbline 194
 01AA           ;   year=ds1305_read(ds1305_year_reg);   //年
 01AA 06E0              ldi R16,6
 01AC B7DF              rcall _ds1305_read
 01AE 202E              mov R2,R16
 01B0 3324              clr R3
 01B2 30920100          sts _year+1,R3
 01B6 20920000          sts _year,R2
 01BA                   .dbline 195
 01BA           ;   year=((year&0xf0)>>4)*10+(year&0x0F)+2000; 
 01BA 9101              movw R18,R2
 01BC 207F              andi R18,240
 01BE 3070              andi R19,0
 01C0 3695              lsr R19
 01C2 2795              ror R18
 01C4 3695              lsr R19
 01C6 2795              ror R18
 01C8 3695              lsr R19
 01CA 2795              ror R18
 01CC 3695              lsr R19
 01CE 2795              ror R18
 01D0 0AE0              ldi R16,10
 01D2 10E0              ldi R17,0
 01D4 00D0              rcall empy16s
 01D6 80910000          lds R24,_year
 01DA 90910100          lds R25,_year+1
 01DE 8F70              andi R24,15
 01E0 9070              andi R25,0
 01E2 1801              movw R2,R16
 01E4 280E              add R2,R24
 01E6 391E              adc R3,R25
 01E8 C101              movw R24,R2
 01EA 8053              subi R24,48  ; offset = 2000
 01EC 984F              sbci R25,248
 01EE 90930100          sts _year+1,R25
 01F2 80930000          sts _year,R24
 01F6                   .dbline 196
 01F6           ;   month=ds1305_read(ds1305_month_reg);//月 
 01F6 05E0              ldi R16,5
 01F8 91DF              rcall _ds1305_read
 01FA 00930700          sts _month,R16
 01FE                   .dbline 197
 01FE           ;   month=((month&0xf0)>>4)*10+(month&0x0F);
 01FE 802F              mov R24,R16
 0200 807F              andi R24,240
 0202 8295              swap R24
 0204 8F70              andi R24,#0x0F
 0206 9AE0              ldi R25,10
 0208 989F              mul R25,R24
 020A 802F              mov R24,R16
 020C 8F70              andi R24,15
 020E 202C              mov R2,R0
 0210 280E              add R2,R24
 0212 20920700          sts _month,R2
 0216                   .dbline 198
 0216           ;   day=ds1305_read(ds1305_date_reg);   //日
 0216 04E0              ldi R16,4
 0218 81DF              rcall _ds1305_read
 021A 00930500          sts _day,R16
 021E                   .dbline 199
 021E           ;   day=((day&0xf0)>>4)*10+(day&0x0F); 
 021E 802F              mov R24,R16
 0220 807F              andi R24,240
 0222 8295              swap R24
 0224 8F70              andi R24,#0x0F
 0226 9AE0              ldi R25,10
 0228 989F              mul R25,R24
 022A 802F              mov R24,R16
 022C 8F70              andi R24,15
 022E 202C              mov R2,R0
 0230 280E              add R2,R24
 0232 20920500          sts _day,R2
 0236                   .dbline 200
 0236           ;   week=ds1305_read(ds1305_day_reg);   //周 
 0236 03E0              ldi R16,3
 0238 71DF              rcall _ds1305_read
 023A 00930600          sts _week,R16
 023E                   .dbline 201
 023E           ;   week=((week&0xf0)>>4)*10+(week&0x0F);
 023E 802F              mov R24,R16
 0240 807F              andi R24,240
 0242 8295              swap R24
 0244 8F70              andi R24,#0x0F
 0246 9AE0              ldi R25,10
 0248 989F              mul R25,R24
 024A 802F              mov R24,R16
 024C 8F70              andi R24,15
 024E 202C              mov R2,R0
 0250 280E              add R2,R24
 0252 20920600          sts _week,R2
 0256                   .dbline 202
 0256           ;   hour=ds1305_read(ds1305_hr_reg);   //时 
 0256 02E0              ldi R16,2
 0258 61DF              rcall _ds1305_read
 025A 00930400          sts _hour,R16
 025E                   .dbline 203
 025E           ;   hour=((hour&0xf0)>>4)*10+(hour&0x0F);
 025E 802F              mov R24,R16
 0260 807F              andi R24,240
 0262 8295              swap R24
 0264 8F70              andi R24,#0x0F
 0266 9AE0              ldi R25,10
 0268 989F              mul R25,R24
 026A 802F              mov R24,R16
 026C 8F70              andi R24,15
 026E 202C              mov R2,R0
 0270 280E              add R2,R24
 0272 20920400          sts _hour,R2
 0276                   .dbline 204
 0276           ;   minute=ds1305_read(ds1305_min_reg);   //分 
 0276 01E0              ldi R16,1
 0278 51DF              rcall _ds1305_read
 027A 00930300          sts _minute,R16
 027E                   .dbline 205
 027E           ;   minute=((minute&0xf0)>>4)*10+(minute&0x0F);
 027E 802F              mov R24,R16

⌨️ 快捷键说明

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