?? ds12997.lis
字號:
0168 .dbline 264
0168 ; _NOP();
0168 0000 nop
016A .dbline 265
016A ; AD_DDR = 0xFF; //數據口設置為輸出
016A 8FEF ldi R24,255
016C 8ABB out 0x1a,R24
016E .dbline 266
016E ; _NOP();
016E 0000 nop
0170 .dbline 267
0170 ; _NOP();
0170 0000 nop
0172 .dbline 268
0172 ; _NOP();
0172 0000 nop
0174 .dbline 269
0174 ; _NOP();
0174 0000 nop
0176 .dbline 270
0176 ; AD_PORT = Address; //給出地址
0176 0BBB out 0x1b,R16
0178 .dbline 271
0178 ; _NOP();
0178 0000 nop
017A .dbline 272
017A ; _NOP();
017A 0000 nop
017C .dbline 273
017C ; _NOP();
017C 0000 nop
017E .dbline 274
017E ; _NOP();
017E 0000 nop
0180 .dbline 275
0180 ; _NOP();
0180 0000 nop
0182 .dbline 276
0182 ; _NOP();
0182 0000 nop
0184 .dbline 277
0184 ; _NOP();
0184 0000 nop
0186 .dbline 278
0186 ; _NOP();
0186 0000 nop
0188 .dbline 279
0188 ; P_AS_0; //鎖存信號低電平
0188 C398 cbi 0x18,3
018A .dbline 280
018A ; _NOP();
018A 0000 nop
018C .dbline 281
018C ; _NOP();
018C 0000 nop
018E .dbline 282
018E ; P_DS_0; //給出寫信號
018E C198 cbi 0x18,1
0190 .dbline 283
0190 ; _NOP();
0190 0000 nop
0192 .dbline 284
0192 ; _NOP();
0192 0000 nop
0194 .dbline 285
0194 ; AD_DDR = 0X00; //端口方向設置為輸入
0194 2224 clr R2
0196 2ABA out 0x1a,R2
0198 .dbline 286
0198 ; _NOP();
0198 0000 nop
019A .dbline 287
019A ; _NOP();
019A 0000 nop
019C .dbline 288
019C ; _NOP();
019C 0000 nop
019E .dbline 289
019E ; _NOP();
019E 0000 nop
01A0 .dbline 290
01A0 ; temp = AD_PIN; //讀入數據
01A0 49B3 in R20,0x19
01A2 .dbline 291
01A2 ; _NOP();
01A2 0000 nop
01A4 .dbline 292
01A4 ; _NOP();
01A4 0000 nop
01A6 .dbline 293
01A6 ; _NOP();
01A6 0000 nop
01A8 .dbline 294
01A8 ; _NOP();
01A8 0000 nop
01AA .dbline 295
01AA ; _NOP();
01AA 0000 nop
01AC .dbline 296
01AC ; _NOP();
01AC 0000 nop
01AE .dbline 297
01AE ; _NOP();
01AE 0000 nop
01B0 .dbline 298
01B0 ; _NOP();
01B0 0000 nop
01B2 .dbline 299
01B2 ; P_DS_1; //
01B2 C19A sbi 0x18,1
01B4 .dbline 300
01B4 ; _NOP();
01B4 0000 nop
01B6 .dbline 301
01B6 ; _NOP();
01B6 0000 nop
01B8 .dbline 302
01B8 ; P_AS_1; //
01B8 C39A sbi 0x18,3
01BA .dbline 303
01BA ; _NOP();
01BA 0000 nop
01BC .dbline 304
01BC ; _NOP();
01BC 0000 nop
01BE .dbline 305
01BE ; return temp;
01BE 042F mov R16,R20
01C0 .dbline -2
01C0 L45:
01C0 0E940000 xcall pop_gset1
01C4 .dbline 0 ; func end
01C4 0895 ret
01C6 .dbsym r temp 20 c
01C6 .dbsym r Address 16 c
01C6 .dbend
01C6 .dbfunc e DS12887_Init _DS12887_Init fV
.even
01C6 _DS12887_Init::
01C6 .dbline -1
01C6 .dbline 310
01C6 ; }
01C6 ;
01C6 ; //DS12887初始化
01C6 ; void DS12887_Init(void)
01C6 ; {
01C6 .dbline 311
01C6 ; DS12887_Write(0x0a, 0x20); //打開振蕩器,啟動DS12887
01C6 20E2 ldi R18,32
01C8 0AE0 ldi R16,10
01CA 8FDF xcall _DS12887_Write
01CC .dbline 312
01CC ; DS12887_Write(0x0b, 0x86); //禁止更新,接下來初始化數據,即寫入時間,日期等
01CC 26E8 ldi R18,134
01CE 0BE0 ldi R16,11
01D0 8CDF xcall _DS12887_Write
01D2 .dbline 313
01D2 ; DS12887_Write(0x0b, 0x06); //正常更新,二進制格式,24進制小時
01D2 26E0 ldi R18,6
01D4 0BE0 ldi R16,11
01D6 89DF xcall _DS12887_Write
01D8 .dbline -2
01D8 L46:
01D8 .dbline 0 ; func end
01D8 0895 ret
01DA .dbend
01DA .dbfunc e DS12887_SetTime _DS12887_SetTime fV
01DA ; Value -> R22
01DA ; Address -> R20
.even
01DA _DS12887_SetTime::
01DA 0E940000 xcall push_gset2
01DE 622F mov R22,R18
01E0 402F mov R20,R16
01E2 .dbline -1
01E2 .dbline 320
01E2 ; }
01E2 ;
01E2 ;
01E2 ;
01E2 ; //設置時間函數
01E2 ; void DS12887_SetTime( uchar Address, uchar Value)
01E2 ; {
01E2 .dbline 321
01E2 ; DS12887_Write(0x0b, 0x86); //禁止更新,接下來初始化數據,即寫入時間,日期等
01E2 26E8 ldi R18,134
01E4 0BE0 ldi R16,11
01E6 81DF xcall _DS12887_Write
01E8 .dbline 322
01E8 ; DS12887_Write(Address,Value);
01E8 262F mov R18,R22
01EA 042F mov R16,R20
01EC 7EDF xcall _DS12887_Write
01EE .dbline 323
01EE ; DS12887_Write(0x0b, 0x06); //正常更新,二進制格式,24進制小時
01EE 26E0 ldi R18,6
01F0 0BE0 ldi R16,11
01F2 7BDF xcall _DS12887_Write
01F4 .dbline -2
01F4 L47:
01F4 0E940000 xcall pop_gset2
01F8 .dbline 0 ; func end
01F8 0895 ret
01FA .dbsym r Value 22 c
01FA .dbsym r Address 20 c
01FA .dbend
01FA .dbfunc e DS12887_GetTime _DS12887_GetTime fV
01FA .dbstruct 0 25 _SYSTEMTIME_
01FA .dbfield 0 Second c
01FA .dbfield 1 Minute c
01FA .dbfield 2 Hour c
01FA .dbfield 3 Week c
01FA .dbfield 4 Day c
01FA .dbfield 5 Month c
01FA .dbfield 6 Year c
01FA .dbfield 7 DateString A[9:9]c
01FA .dbfield 16 TimeString A[9:9]c
01FA .dbend
01FA ; temp -> <dead>
01FA ; Time -> R20,R21
.even
01FA _DS12887_GetTime::
01FA 0E940000 xcall push_gset1
01FE A801 movw R20,R16
0200 .dbline -1
0200 .dbline 329
0200 ; }
0200 ;
0200 ;
0200 ; //讀出時間
0200 ; void DS12887_GetTime(SYSTEMTIME *Time)
0200 ; { uchar temp;
0200 .dbline 330
0200 ; Time->Second = DS12887_Read(DS12887_Second);
0200 0027 clr R16
0202 A4DF xcall _DS12887_Read
0204 FA01 movw R30,R20
0206 0083 std z+0,R16
0208 .dbline 331
0208 ; Time->Minute = DS12887_Read(DS12887_Minute);
0208 02E0 ldi R16,2
020A A0DF xcall _DS12887_Read
020C FA01 movw R30,R20
020E 0183 std z+1,R16
0210 .dbline 332
0210 ; Time->Hour = DS12887_Read(DS12887_Hour );
0210 04E0 ldi R16,4
0212 9CDF xcall _DS12887_Read
0214 FA01 movw R30,R20
0216 0283 std z+2,R16
0218 .dbline 333
0218 ; Time->Day = DS12887_Read(DS12887_Day );
0218 07E0 ldi R16,7
021A 98DF xcall _DS12887_Read
021C FA01 movw R30,R20
021E 0483 std z+4,R16
0220 .dbline 335
0220 ; //Time->Week = DS12887_Read(DS12887_Week );
0220 ; Time->Month = DS12887_Read(DS12887_Month );
0220 08E0 ldi R16,8
0222 94DF xcall _DS12887_Read
0224 FA01 movw R30,R20
0226 0583 std z+5,R16
0228 .dbline 336
0228 ; Time->Year = DS12887_Read(DS12887_Year );
0228 09E0 ldi R16,9
022A 90DF xcall _DS12887_Read
022C FA01 movw R30,R20
022E 0683 std z+6,R16
0230 .dbline 338
0230 ;
0230 ; y1=DS12887_Read(DS12887_Second);
0230 0027 clr R16
0232 8CDF xcall _DS12887_Read
0234 00930500 sts _y1,R16
0238 .dbline 339
0238 ; y2=DS12887_Read(DS12887_Minute);
0238 02E0 ldi R16,2
023A 88DF xcall _DS12887_Read
023C 00930400 sts _y2,R16
0240 .dbline 340
0240 ; y3=DS12887_Read(DS12887_Hour );
0240 04E0 ldi R16,4
0242 84DF xcall _DS12887_Read
0244 00930300 sts _y3,R16
0248 .dbline 341
0248 ; y4=DS12887_Read(DS12887_Day );
0248 07E0 ldi R16,7
024A 80DF xcall _DS12887_Read
024C 00930200 sts _y4,R16
0250 .dbline 342
0250 ; y5=DS12887_Read(DS12887_Month );
0250 08E0 ldi R16,8
0252 7CDF xcall _DS12887_Read
0254 00930100 sts _y5,R16
0258 .dbline 343
0258 ; y6=DS12887_Read(DS12887_Year );
0258 09E0 ldi R16,9
025A 78DF xcall _DS12887_Read
025C 00930000 sts _y6,R16
0260 .dbline -2
0260 L48:
0260 0E940000 xcall pop_gset1
0264 .dbline 0 ; func end
0264 0895 ret
0266 .dbsym l temp 1 c
0266 .dbsym r Time 20 pS[_SYSTEMTIME_]
0266 .dbend
0266 .dbfunc e DateToStr _DateToStr fV
0266 ; Time -> R20,R21
.even
0266 _DateToStr::
0266 0E940000 xcall push_gset1
026A A801 movw R20,R16
026C .dbline -1
026C .dbline 347
026C ; }
026C ; /*********************日期轉化成字符 09-02-19************/
026C ; void DateToStr(SYSTEMTIME *Time)
026C ; {
026C .dbline 348
026C ; Time->DateString[0] = Time->Year/10 + '0';
026C 1AE0 ldi R17,10
026E FA01 movw R30,R20
0270 0681 ldd R16,z+6
0272 0E940000 xcall div8u
0276 802F mov R24,R16
0278 805D subi R24,208 ; addi 48
027A FA01 movw R30,R20
027C 8783 std z+7,R24
027E .dbline 349
027E ; Time->DateString[1] = Time->Year%10 + '0';
027E 1AE0 ldi R17,10
0280 FA01 movw R30,R20
0282 0681 ldd R16,z+6
0284 0E940000 xcall mod8u
0288 802F mov R24,R16
028A 805D subi R24,208 ; addi 48
028C FA01 movw R30,R20
028E 8087 std z+8,R24
0290 .dbline 350
0290 ; Time->DateString[2] = '-';
0290 8DE2 ldi R24,45
0292 FA01 movw R30,R20
0294 8187 std z+9,R24
0296 .dbline 351
0296 ; Time->DateString[3] = Time->Month/10 + '0';
0296 1AE0 ldi R17,10
0298 FA01 movw R30,R20
029A 0581 ldd R16,z+5
029C 0E940000 xcall div8u
02A0 802F mov R24,R16
02A2 805D subi R24,208 ; addi 48
02A4 FA01 movw R30,R20
02A6 8287 std z+10,R24
02A8 .dbline 352
02A8 ; Time->DateString[4] = Time->Month%10 + '0';
02A8 1AE0 ldi R17,10
02AA FA01 movw R30,R20
02AC 0581 ldd R16,z+5
02AE 0E940000 xcall mod8u
02B2 802F mov R24,R16
02B4 805D subi R24,208 ; addi 48
02B6 FA01 movw R30,R20
02B8 8387 std z+11,R24
02BA .dbline 353
02BA ; Time->DateString[5] = '-';
02BA 8DE2 ldi R24,45
02BC FA01 movw R30,R20
02BE 8487 std z+12,R24
02C0 .dbline 354
02C0 ; Time->DateString[6] = Time->Day/10 + '0';
02C0 1AE0 ldi R17,10
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -