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

📄 ds12997.lis

📁 本程序经调试好使
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 0146           ; void DS12887_Init(void)
 0146           ; {
 0146                   .dbline 241
 0146           ;       DS12887_Write(0x0a, 0x20);      //打开振荡器,启动DS12887
 0146 20E2              ldi R18,32
 0148 0AE0              ldi R16,10
 014A 8FDF              xcall _DS12887_Write
 014C                   .dbline 242
 014C           ;       DS12887_Write(0x0b, 0x86);      //禁止更新,接下来初始化数据,即写入时间,日期等
 014C 26E8              ldi R18,134
 014E 0BE0              ldi R16,11
 0150 8CDF              xcall _DS12887_Write
 0152                   .dbline 243
 0152           ;       DS12887_Write(0x0b, 0x06);      //正常更新,二进制格式,24进制小时
 0152 26E0              ldi R18,6
 0154 0BE0              ldi R16,11
 0156 89DF              xcall _DS12887_Write
 0158                   .dbline -2
 0158           L27:
 0158                   .dbline 0 ; func end
 0158 0895              ret
 015A                   .dbend
 015A                   .dbfunc e DS12887_SetTime _DS12887_SetTime fV
 015A           ;          Value -> R22
 015A           ;        Address -> R20
                        .even
 015A           _DS12887_SetTime::
 015A 0E940000          xcall push_gset2
 015E 622F              mov R22,R18
 0160 402F              mov R20,R16
 0162                   .dbline -1
 0162                   .dbline 250
 0162           ; }
 0162           ; 
 0162           ; 
 0162           ; 
 0162           ; //设置时间函数
 0162           ; void DS12887_SetTime( uchar Address,  uchar Value)
 0162           ; {
 0162                   .dbline 251
 0162           ;       DS12887_Write(0x0b, 0x86);      //禁止更新,接下来初始化数据,即写入时间,日期等
 0162 26E8              ldi R18,134
 0164 0BE0              ldi R16,11
 0166 81DF              xcall _DS12887_Write
 0168                   .dbline 252
 0168           ;       DS12887_Write(Address,Value);
 0168 262F              mov R18,R22
 016A 042F              mov R16,R20
 016C 7EDF              xcall _DS12887_Write
 016E                   .dbline 253
 016E           ;       DS12887_Write(0x0b, 0x06);      //正常更新,二进制格式,24进制小时
 016E 26E0              ldi R18,6
 0170 0BE0              ldi R16,11
 0172 7BDF              xcall _DS12887_Write
 0174                   .dbline -2
 0174           L28:
 0174 0E940000          xcall pop_gset2
 0178                   .dbline 0 ; func end
 0178 0895              ret
 017A                   .dbsym r Value 22 c
 017A                   .dbsym r Address 20 c
 017A                   .dbend
 017A                   .dbfunc e DS12887_GetTime _DS12887_GetTime fV
 017A                   .dbstruct 0 25 _SYSTEMTIME_
 017A                   .dbfield 0 Second c
 017A                   .dbfield 1 Minute c
 017A                   .dbfield 2 Hour c
 017A                   .dbfield 3 Week c
 017A                   .dbfield 4 Day c
 017A                   .dbfield 5 Month c
 017A                   .dbfield 6 Year c
 017A                   .dbfield 7 DateString A[9:9]c
 017A                   .dbfield 16 TimeString A[9:9]c
 017A                   .dbend
 017A           ;           temp -> <dead>
 017A           ;           Time -> R20,R21
                        .even
 017A           _DS12887_GetTime::
 017A 0E940000          xcall push_gset1
 017E A801              movw R20,R16
 0180                   .dbline -1
 0180                   .dbline 259
 0180           ; }
 0180           ; 
 0180           ; 
 0180           ; //读出时间
 0180           ; void DS12887_GetTime(SYSTEMTIME *Time)
 0180           ; {   uchar temp;
 0180                   .dbline 260
 0180           ;       Time->Second = DS12887_Read(DS12887_Second);
 0180 0027              clr R16
 0182 A4DF              xcall _DS12887_Read
 0184 FA01              movw R30,R20
 0186 0083              std z+0,R16
 0188                   .dbline 261
 0188           ;       Time->Minute = DS12887_Read(DS12887_Minute);
 0188 02E0              ldi R16,2
 018A A0DF              xcall _DS12887_Read
 018C FA01              movw R30,R20
 018E 0183              std z+1,R16
 0190                   .dbline 262
 0190           ;       Time->Hour   = DS12887_Read(DS12887_Hour  );
 0190 04E0              ldi R16,4
 0192 9CDF              xcall _DS12887_Read
 0194 FA01              movw R30,R20
 0196 0283              std z+2,R16
 0198                   .dbline 263
 0198           ;       Time->Day    = DS12887_Read(DS12887_Day   );
 0198 07E0              ldi R16,7
 019A 98DF              xcall _DS12887_Read
 019C FA01              movw R30,R20
 019E 0483              std z+4,R16
 01A0                   .dbline 265
 01A0           ;       //Time->Week   = DS12887_Read(DS12887_Week  );
 01A0           ;       Time->Month  = DS12887_Read(DS12887_Month );
 01A0 08E0              ldi R16,8
 01A2 94DF              xcall _DS12887_Read
 01A4 FA01              movw R30,R20
 01A6 0583              std z+5,R16
 01A8                   .dbline 266
 01A8           ;       Time->Year   = DS12887_Read(DS12887_Year  );
 01A8 09E0              ldi R16,9
 01AA 90DF              xcall _DS12887_Read
 01AC FA01              movw R30,R20
 01AE 0683              std z+6,R16
 01B0                   .dbline 268
 01B0           ;   
 01B0           ;   y1=DS12887_Read(DS12887_Second);
 01B0 0027              clr R16
 01B2 8CDF              xcall _DS12887_Read
 01B4 00930500          sts _y1,R16
 01B8                   .dbline 269
 01B8           ;   y2=DS12887_Read(DS12887_Minute);
 01B8 02E0              ldi R16,2
 01BA 88DF              xcall _DS12887_Read
 01BC 00930400          sts _y2,R16
 01C0                   .dbline 270
 01C0           ;   y3=DS12887_Read(DS12887_Hour  );
 01C0 04E0              ldi R16,4
 01C2 84DF              xcall _DS12887_Read
 01C4 00930300          sts _y3,R16
 01C8                   .dbline 271
 01C8           ;   y4=DS12887_Read(DS12887_Day   );
 01C8 07E0              ldi R16,7
 01CA 80DF              xcall _DS12887_Read
 01CC 00930200          sts _y4,R16
 01D0                   .dbline 272
 01D0           ;   y5=DS12887_Read(DS12887_Month );
 01D0 08E0              ldi R16,8
 01D2 7CDF              xcall _DS12887_Read
 01D4 00930100          sts _y5,R16
 01D8                   .dbline 273
 01D8           ;   y6=DS12887_Read(DS12887_Year  );
 01D8 09E0              ldi R16,9
 01DA 78DF              xcall _DS12887_Read
 01DC 00930000          sts _y6,R16
 01E0                   .dbline -2
 01E0           L29:
 01E0 0E940000          xcall pop_gset1
 01E4                   .dbline 0 ; func end
 01E4 0895              ret
 01E6                   .dbsym l temp 1 c
 01E6                   .dbsym r Time 20 pS[_SYSTEMTIME_]
 01E6                   .dbend
 01E6                   .dbfunc e port_init _port_init fV
                        .even
 01E6           _port_init::
 01E6                   .dbline -1
 01E6                   .dbline 278
 01E6           ; }
 01E6           ; 
 01E6           ; /*****************端口初始化********************************/
 01E6           ; void port_init(void) 
 01E6           ; {
 01E6                   .dbline 279
 01E6           ;  DDRB  = 0xFF; 
 01E6 8FEF              ldi R24,255
 01E8 87BB              out 0x17,R24
 01EA                   .dbline 280
 01EA           ;  PORTB = 0xFF; //设为输出高电平
 01EA 88BB              out 0x18,R24
 01EC                   .dbline 282
 01EC           ;  
 01EC           ;  DDRA  = 0x00; 
 01EC 2224              clr R2
 01EE 2ABA              out 0x1a,R2
 01F0                   .dbline 283
 01F0           ;  PORTA = 0x00; //设为高阻态
 01F0 2BBA              out 0x1b,R2
 01F2                   .dbline -2
 01F2           L30:
 01F2                   .dbline 0 ; func end
 01F2 0895              ret
 01F4                   .dbend
 01F4                   .dbfunc e init_devices _init_devices fV
                        .even
 01F4           _init_devices::
 01F4                   .dbline -1
 01F4                   .dbline 288
 01F4           ; 
 01F4           ; }
 01F4           ; /********************初始化器件************************************/
 01F4           ; void init_devices(void) 
 01F4           ; {
 01F4                   .dbline 289
 01F4           ;  port_init();
 01F4 F8DF              xcall _port_init
 01F6                   .dbline -2
 01F6           L31:
 01F6                   .dbline 0 ; func end
 01F6 0895              ret
 01F8                   .dbend
 01F8                   .dbfunc e main _main fV
 01F8           ;    CurrentTime -> y+0
                        .even
 01F8           _main::
 01F8 6997              sbiw R28,25
 01FA                   .dbline -1
 01FA                   .dbline 296
 01FA           ;  }
 01FA           ; 
 01FA           ; 
 01FA           ; 
 01FA           ; /***************主函数*****************************/
 01FA           ; void main(void)
 01FA           ; {
 01FA                   .dbline 298
 01FA           ;       SYSTEMTIME CurrentTime;
 01FA           ;     init_devices();
 01FA FCDF              xcall _init_devices
 01FC                   .dbline 300
 01FC           ;       
 01FC           ;       DS12887_Init();
 01FC A4DF              xcall _DS12887_Init
 01FE                   .dbline 301
 01FE           ;        DS12887_GetTime(&CurrentTime);
 01FE 8E01              movw R16,R28
 0200 BCDF              xcall _DS12887_GetTime
 0202                   .dbline 304
 0202           ; /*************时间初始化设置 ,2009-2-16 2:00:00************/
 0202           ; //*
 0202           ; DS12887_SetTime(DS12887_Second, 0); //设置秒
 0202 2227              clr R18
 0204 0027              clr R16
 0206 A9DF              xcall _DS12887_SetTime
 0208                   .dbline 305
 0208           ; DS12887_SetTime(DS12887_Minute, 34); //设置分
 0208 22E2              ldi R18,34
 020A 02E0              ldi R16,2
 020C A6DF              xcall _DS12887_SetTime
 020E                   .dbline 306
 020E           ; DS12887_SetTime(DS12887_Hour,16);      //设置时
 020E 20E1              ldi R18,16
 0210 04E0              ldi R16,4
 0212 A3DF              xcall _DS12887_SetTime
 0214                   .dbline 307
 0214           ; DS12887_SetTime(DS12887_Day, 4);       //设置天
 0214 24E0              ldi R18,4
 0216 07E0              ldi R16,7
 0218 A0DF              xcall _DS12887_SetTime
 021A                   .dbline 308
 021A           ; DS12887_SetTime(DS12887_Month, 3); //设置月
 021A 23E0              ldi R18,3
 021C 08E0              ldi R16,8
 021E 9DDF              xcall _DS12887_SetTime
 0220                   .dbline 309
 0220           ; DS12887_SetTime(DS12887_Year, 9);      //设置年
 0220 29E0              ldi R18,9
 0222 09E0              ldi R16,9
 0224 9ADF              xcall _DS12887_SetTime
 0226 02C0              xjmp L34
 0228           L33:
 0228                   .dbline 313
 0228                   .dbline 314
 0228 8E01              movw R16,R28
 022A A7DF              xcall _DS12887_GetTime
 022C                   .dbline 317
 022C           L34:
 022C                   .dbline 312
 022C FDCF              xjmp L33
 022E           X1:
 022E                   .dbline -2
 022E           L32:
 022E 6996              adiw R28,25
 0230                   .dbline 0 ; func end
 0230 0895              ret
 0232                   .dbsym l CurrentTime 0 S[_SYSTEMTIME_]
 0232                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile C:\DOCUME~1\wangqinbo\MYDOCU~1\avrc\ds12997.c
 0000           _y6::
 0000                   .blkb 1
 0001                   .dbsym e y6 _y6 c
 0001           _y5::
 0001                   .blkb 1
 0002                   .dbsym e y5 _y5 c
 0002           _y4::
 0002                   .blkb 1
 0003                   .dbsym e y4 _y4 c
 0003           _y3::
 0003                   .blkb 1
 0004                   .dbsym e y3 _y3 c
 0004           _y2::
 0004                   .blkb 1
 0005                   .dbsym e y2 _y2 c
 0005           _y1::
 0005                   .blkb 1
 0006                   .dbsym e y1 _y1 c

⌨️ 快捷键说明

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