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

📄 ds1305.lis

📁 DS1305程序代码,在网上很少,一般不容易找到.现上传一个给大家分享.
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 0280 807F              andi R24,240
 0282 8295              swap R24
 0284 8F70              andi R24,#0x0F
 0286 9AE0              ldi R25,10
 0288 989F              mul R25,R24
 028A 802F              mov R24,R16
 028C 8F70              andi R24,15
 028E 202C              mov R2,R0
 0290 280E              add R2,R24
 0292 20920300          sts _minute,R2
 0296                   .dbline 206
 0296           ;   second=ds1305_read(ds1305_sec_reg);   //秒 
 0296 0027              clr R16
 0298 41DF              rcall _ds1305_read
 029A 00930200          sts _second,R16
 029E                   .dbline 207
 029E           ;   second=((second&0xf0)>>4)*10+(second&0x0F);
 029E 802F              mov R24,R16
 02A0 807F              andi R24,240
 02A2 8295              swap R24
 02A4 8F70              andi R24,#0x0F
 02A6 9AE0              ldi R25,10
 02A8 989F              mul R25,R24
 02AA 802F              mov R24,R16
 02AC 8F70              andi R24,15
 02AE 202C              mov R2,R0
 02B0 280E              add R2,R24
 02B2 20920200          sts _second,R2
 02B6                   .dbline -2
 02B6           L36:
 02B6                   .dbline 0 ; func end
 02B6 0895              ret
 02B8                   .dbend
 02B8                   .dbfunc e ds1305_write_time _ds1305_write_time fV
                        .even
 02B8           _ds1305_write_time::
 02B8                   .dbline -1
 02B8                   .dbline 210
 02B8           ; } 
 02B8           ; void ds1305_write_time(void) 
 02B8           ; { 
 02B8                   .dbline 211
 02B8           ;   ds1305_write(ds1305_control_reg,0x80);   //停止振荡器,关闭写保护,关闭闹铃中断       
 02B8 20E8              ldi R18,128
 02BA 0FE0              ldi R16,15
 02BC F2DE              rcall _ds1305_write
 02BE                   .dbline 212
 02BE           ;   ds1305_write(ds1305_charger_reg,0xa9);   //涓流充电 
 02BE 29EA              ldi R18,169
 02C0 01E1              ldi R16,17
 02C2 EFDE              rcall _ds1305_write
 02C4                   .dbline 218
 02C4           ;   //ds1305_write(ds1305_year_reg,year);     //年 
 02C4           ;   //ds1305_write(ds1305_month_reg,month);   //月 
 02C4           ;   //ds1305_write(ds1305_date_reg,day);     //日 
 02C4           ;   //ds1305_write(ds1305_day_reg,week);     //周 
 02C4           ;   //ds1305_write(ds1305_hr_reg,hour);     //时 
 02C4           ;   minute=((minute/10)<<4)+minute%10; 
 02C4 1AE0              ldi R17,10
 02C6 00910300          lds R16,_minute
 02CA 00D0              rcall mod8u
 02CC 202E              mov R2,R16
 02CE 1AE0              ldi R17,10
 02D0 00910300          lds R16,_minute
 02D4 00D0              rcall div8u
 02D6 802F              mov R24,R16
 02D8 8F70              andi R24,#0x0F
 02DA 8295              swap R24
 02DC 820D              add R24,R2
 02DE 80930300          sts _minute,R24
 02E2                   .dbline 219
 02E2           ;   ds1305_write(ds1305_min_reg,minute);   //分
 02E2 282F              mov R18,R24
 02E4 01E0              ldi R16,1
 02E6 DDDE              rcall _ds1305_write
 02E8                   .dbline 220
 02E8           ;   second=((second/10)<<4)+second%10; 
 02E8 1AE0              ldi R17,10
 02EA 00910200          lds R16,_second
 02EE 00D0              rcall mod8u
 02F0 202E              mov R2,R16
 02F2 1AE0              ldi R17,10
 02F4 00910200          lds R16,_second
 02F8 00D0              rcall div8u
 02FA 802F              mov R24,R16
 02FC 8F70              andi R24,#0x0F
 02FE 8295              swap R24
 0300 820D              add R24,R2
 0302 80930200          sts _second,R24
 0306                   .dbline 221
 0306           ;   ds1305_write(ds1305_sec_reg,second);   //秒   
 0306 282F              mov R18,R24
 0308 0027              clr R16
 030A CBDE              rcall _ds1305_write
 030C                   .dbline 222
 030C           ;   ds1305_write(ds1305_control_reg,0x41);   //打开写保护 
 030C 21E4              ldi R18,65
 030E 0FE0              ldi R16,15
 0310 C8DE              rcall _ds1305_write
 0312                   .dbline -2
 0312           L37:
 0312                   .dbline 0 ; func end
 0312 0895              ret
 0314                   .dbend
 0314                   .dbfunc e ds1305_init _ds1305_init fV
                        .even
 0314           _ds1305_init::
 0314                   .dbline -1
 0314                   .dbline 226
 0314           ; }
 0314           ; 
 0314           ; void ds1305_init(void)
 0314           ; {
 0314                   .dbline 227
 0314           ;   ds1305_write(ds1305_control_reg,0x80);   //停止振荡器,关闭写保护,关闭闹铃中断       
 0314 20E8              ldi R18,128
 0316 0FE0              ldi R16,15
 0318 C4DE              rcall _ds1305_write
 031A                   .dbline 228
 031A           ;   ds1305_write(ds1305_charger_reg,0xa9);   //涓流充电 
 031A 29EA              ldi R18,169
 031C 01E1              ldi R16,17
 031E C1DE              rcall _ds1305_write
 0320                   .dbline 229
 0320           ;   ds1305_write(ds1305_year_reg,0x05);     //年 
 0320 25E0              ldi R18,5
 0322 06E0              ldi R16,6
 0324 BEDE              rcall _ds1305_write
 0326                   .dbline 230
 0326           ;   ds1305_write(ds1305_month_reg,0x12);   //月 
 0326 22E1              ldi R18,18
 0328 05E0              ldi R16,5
 032A BBDE              rcall _ds1305_write
 032C                   .dbline 231
 032C           ;   ds1305_write(ds1305_date_reg,0x23);     //日 
 032C 23E2              ldi R18,35
 032E 04E0              ldi R16,4
 0330 B8DE              rcall _ds1305_write
 0332                   .dbline 232
 0332           ;   ds1305_write(ds1305_day_reg,0x05);     //周 
 0332 25E0              ldi R18,5
 0334 03E0              ldi R16,3
 0336 B5DE              rcall _ds1305_write
 0338                   .dbline 233
 0338           ;   ds1305_write(ds1305_hr_reg,0x10);     //时 
 0338 20E1              ldi R18,16
 033A 02E0              ldi R16,2
 033C B2DE              rcall _ds1305_write
 033E                   .dbline 234
 033E           ;   ds1305_write(ds1305_min_reg,0x56);   //分 
 033E 26E5              ldi R18,86
 0340 01E0              ldi R16,1
 0342 AFDE              rcall _ds1305_write
 0344                   .dbline 235
 0344           ;   ds1305_write(ds1305_sec_reg,0x00);   //秒
 0344 2227              clr R18
 0346 0027              clr R16
 0348 ACDE              rcall _ds1305_write
 034A                   .dbline 236
 034A           ;   ds1305_write(alarm0_sec_reg,0x20);  
 034A 20E2              ldi R18,32
 034C 07E0              ldi R16,7
 034E A9DE              rcall _ds1305_write
 0350                   .dbline 237
 0350           ;   ds1305_write(alarm0_min_reg,0x80); 
 0350 20E8              ldi R18,128
 0352 08E0              ldi R16,8
 0354 A6DE              rcall _ds1305_write
 0356                   .dbline 238
 0356           ;   ds1305_write(alarm0_hr_reg,0x80); 
 0356 20E8              ldi R18,128
 0358 09E0              ldi R16,9
 035A A3DE              rcall _ds1305_write
 035C                   .dbline 239
 035C           ;   ds1305_write(alarm0_day_reg,0x80);  
 035C 20E8              ldi R18,128
 035E 0AE0              ldi R16,10
 0360 A0DE              rcall _ds1305_write
 0362                   .dbline 240
 0362           ;   ds1305_write(ds1305_control_reg,45);   //打开写保护 
 0362 2DE2              ldi R18,45
 0364 0FE0              ldi R16,15
 0366 9DDE              rcall _ds1305_write
 0368                   .dbline -2
 0368           L38:
 0368                   .dbline 0 ; func end
 0368 0895              ret
 036A                   .dbend
 036A                   .dbfunc e delay_1us _delay_1us fV
                        .even
 036A           _delay_1us::
 036A                   .dbline -1
 036A                   .dbline 243
 036A           ; }
 036A           ; void delay_1us(void)//1u延时函数
 036A           ; {
 036A                   .dbline 244
 036A           ;   asm("nop"); 
 036A 0000              nop
 036C                   .dbline -2
 036C           L39:
 036C                   .dbline 0 ; func end
 036C 0895              ret
 036E                   .dbend
 036E                   .dbfunc e delay_1ms _delay_1ms fV
 036E           ;              i -> R16,R17
                        .even
 036E           _delay_1ms::
 036E                   .dbline -1
 036E                   .dbline 248
 036E           ; }
 036E           ; 
 036E           ; void delay_1ms(void)//1ms延时函数
 036E           ; {
 036E                   .dbline 250
 036E           ;   unsigned int i;
 036E           ;   for (i=0;i<1034;i++)
 036E 0027              clr R16
 0370 1127              clr R17
 0372 02C0              rjmp L44
 0374           L41:
 0374                   .dbline 251
 0374                   .dbline 252
 0374           L42:
 0374                   .dbline 250
 0374 0F5F              subi R16,255  ; offset = 1
 0376 1F4F              sbci R17,255
 0378           L44:
 0378                   .dbline 250
 0378 0A30              cpi R16,10
 037A E4E0              ldi R30,4
 037C 1E07              cpc R17,R30
 037E D0F3              brlo L41
 0380                   .dbline -2
 0380           L40:
 0380                   .dbline 0 ; func end
 0380 0895              ret
 0382                   .dbsym r i 16 i
 0382                   .dbend
 0382                   .dbfunc e delay_nus _delay_nus fV
 0382           ;              i -> R20,R21
 0382           ;              n -> R22,R23
                        .even
 0382           _delay_nus::
 0382 00D0              rcall push_gset2
 0384 B801              movw R22,R16
 0386                   .dbline -1
 0386                   .dbline 256
 0386           ;   {
 0386           ;   } 
 0386           ; }
 0386           ; 
 0386           ; void delay_nus(unsigned int n)//nus延时函数
 0386           ; {
 0386                   .dbline 258
 0386           ;   unsigned int i;
 0386           ;   for (i=0;i<n;i++)//执行n次1微秒延时
 0386 4427              clr R20
 0388 5527              clr R21
 038A 03C0              rjmp L49
 038C           L46:
 038C                   .dbline 259
 038C EEDF              rcall _delay_1us
 038E           L47:
 038E                   .dbline 258
 038E 4F5F              subi R20,255  ; offset = 1
 0390 5F4F              sbci R21,255
 0392           L49:
 0392                   .dbline 258
 0392 4617              cp R20,R22
 0394 5707              cpc R21,R23
 0396 D0F3              brlo L46
 0398                   .dbline -2
 0398           L45:
 0398 00D0              rcall pop_gset2
 039A                   .dbline 0 ; func end
 039A 0895              ret
 039C                   .dbsym r i 20 i
 039C                   .dbsym r n 22 i
 039C                   .dbend
 039C                   .dbfunc e delay_nms _delay_nms fV
 039C           ;              i -> R20,R21
 039C           ;              n -> R22,R23
                        .even
 039C           _delay_nms::
 039C 00D0              rcall push_gset2
 039E B801              movw R22,R16
 03A0                   .dbline -1
 03A0                   .dbline 263
 03A0           ;   delay_1us();
 03A0           ; }
 03A0           ; 
 03A0           ; void delay_nms(unsigned int n)//延时n毫秒
 03A0           ; {
 03A0                   .dbline 265
 03A0           ;   unsigned int i;
 03A0           ;   for (i=0;i<n;i++)//执行n次1毫秒延时
 03A0 4427              clr R20
 03A2 5527              clr R21
 03A4 03C0              rjmp L54
 03A6           L51:
 03A6                   .dbline 266
 03A6 E3DF              rcall _delay_1ms
 03A8           L52:
 03A8                   .dbline 265
 03A8 4F5F              subi R20,255  ; offset = 1
 03AA 5F4F              sbci R21,255
 03AC           L54:
 03AC                   .dbline 265
 03AC 4617              cp R20,R22
 03AE 5707              cpc R21,R23
 03B0 D0F3              brlo L51
 03B2                   .dbline -2
 03B2           L50:
 03B2 00D0              rcall pop_gset2
 03B4                   .dbline 0 ; func end
 03B4 0895              ret
 03B6                   .dbsym r i 20 i
 03B6                   .dbsym r n 22 i
 03B6                   .dbend
 03B6                   .dbfunc e uart_init _uart_init fV
                        .even
 03B6           _uart_init::
 03B6                   .dbline -1
 03B6                   .dbline 270
 03B6           ;   delay_1ms(); 
 03B6           ; }
 03B6           ; 
 03B6           ; void uart_init(void)
 03B6           ; {
 03B6                   .dbline 272
 03B6           ; //UCSRB=(1<<RXEN)|(1<<TXEN); //允许发送和接收
 03B6           ; UBRRL=(fosc/16/baud-1)%256; //设置波特率寄存器低位字节
 03B6 8FE2              ldi R24,47
 03B8 89B9              out 0x9,R24
 03BA                   .dbline 273
 03BA           ; UBRRH=(fosc/16/baud-1)/256; //设置波特率寄存器高位字节
 03BA 2224              clr R2
 03BC 20BC              out 0x20,R2
 03BE                   .dbline 274
 03BE           ; UCSRC=(1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0); //8位数据+1位STOP位
 03BE 86E8              ldi R24,134
 03C0 80BD              out 0x20,R24
 03C2                   .dbline 275
 03C2           ; UCSRB=(1<<RXEN)|(1<<TXEN); //允许发送和接收
 03C2 88E1              ldi R24,24
 03C4 8AB9              out 0xa,R24
 03C6                   .dbline -2
 03C6           L55:
 03C6                   .dbline 0 ; func end
 03C6 0895              ret
 03C8                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile F:\ziliao\JTAG\example\DS1305\DS1305.c
 0000           _year::
 0000                   .blkb 2
 0002                   .dbsym e year _year i
 0002           _second::
 0002                   .blkb 1
 0003                   .dbsym e second _second c
 0003           _minute::
 0003                   .blkb 1
 0004                   .dbsym e minute _minute c
 0004           _hour::
 0004                   .blkb 1
 0005                   .dbsym e hour _hour c
 0005           _day::
 0005                   .blkb 1
 0006                   .dbsym e day _day c
 0006           _week::
 0006                   .blkb 1
 0007                   .dbsym e week _week c
 0007           _month::
 0007                   .blkb 1
 0008                   .dbsym e month _month c
                        .area data(ram, con, rel)
 0000                   .dbfile F:\ziliao\JTAG\example\DS1305\DS1305.c
 0000           L6:
 0000                   .blkb 47
                        .area idata
 0000 B5B1C7B0B5C4CAB1BCE4CAC7A3BA2020  .byte 181,177,199,176,181,196,202,177,188,228,202,199,163,186,32,32
 0010 2564C4EA2564D4C22564C8D52020D0C7  .byte 37,'d,196,234,37,'d,212,194,37,'d,200,213,32,32,208,199
 0020 C6DA25642025643A25643A25640A00    .byte 198,218,37,'d,32,37,'d,58,37,'d,58,37,'d,10,0
                        .area data(ram, con, rel)
 002F                   .dbfile F:\ziliao\JTAG\example\DS1305\DS1305.c

⌨️ 快捷键说明

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