?? ds12997.s
字號:
nop
.dbline 264
; _NOP();
nop
.dbline 265
; AD_DDR = 0xFF; //數據口設置為輸出
ldi R24,255
out 0x1a,R24
.dbline 266
; _NOP();
nop
.dbline 267
; _NOP();
nop
.dbline 268
; _NOP();
nop
.dbline 269
; _NOP();
nop
.dbline 270
; AD_PORT = Address; //給出地址
out 0x1b,R16
.dbline 271
; _NOP();
nop
.dbline 272
; _NOP();
nop
.dbline 273
; _NOP();
nop
.dbline 274
; _NOP();
nop
.dbline 275
; _NOP();
nop
.dbline 276
; _NOP();
nop
.dbline 277
; _NOP();
nop
.dbline 278
; _NOP();
nop
.dbline 279
; P_AS_0; //鎖存信號低電平
cbi 0x18,3
.dbline 280
; _NOP();
nop
.dbline 281
; _NOP();
nop
.dbline 282
; P_DS_0; //給出寫信號
cbi 0x18,1
.dbline 283
; _NOP();
nop
.dbline 284
; _NOP();
nop
.dbline 285
; AD_DDR = 0X00; //端口方向設置為輸入
clr R2
out 0x1a,R2
.dbline 286
; _NOP();
nop
.dbline 287
; _NOP();
nop
.dbline 288
; _NOP();
nop
.dbline 289
; _NOP();
nop
.dbline 290
; temp = AD_PIN; //讀入數據
in R20,0x19
.dbline 291
; _NOP();
nop
.dbline 292
; _NOP();
nop
.dbline 293
; _NOP();
nop
.dbline 294
; _NOP();
nop
.dbline 295
; _NOP();
nop
.dbline 296
; _NOP();
nop
.dbline 297
; _NOP();
nop
.dbline 298
; _NOP();
nop
.dbline 299
; P_DS_1; //
sbi 0x18,1
.dbline 300
; _NOP();
nop
.dbline 301
; _NOP();
nop
.dbline 302
; P_AS_1; //
sbi 0x18,3
.dbline 303
; _NOP();
nop
.dbline 304
; _NOP();
nop
.dbline 305
; return temp;
mov R16,R20
.dbline -2
L45:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r temp 20 c
.dbsym r Address 16 c
.dbend
.dbfunc e DS12887_Init _DS12887_Init fV
.even
_DS12887_Init::
.dbline -1
.dbline 310
; }
;
; //DS12887初始化
; void DS12887_Init(void)
; {
.dbline 311
; DS12887_Write(0x0a, 0x20); //打開振蕩器,啟動DS12887
ldi R18,32
ldi R16,10
xcall _DS12887_Write
.dbline 312
; DS12887_Write(0x0b, 0x86); //禁止更新,接下來初始化數據,即寫入時間,日期等
ldi R18,134
ldi R16,11
xcall _DS12887_Write
.dbline 313
; DS12887_Write(0x0b, 0x06); //正常更新,二進制格式,24進制小時
ldi R18,6
ldi R16,11
xcall _DS12887_Write
.dbline -2
L46:
.dbline 0 ; func end
ret
.dbend
.dbfunc e DS12887_SetTime _DS12887_SetTime fV
; Value -> R22
; Address -> R20
.even
_DS12887_SetTime::
xcall push_gset2
mov R22,R18
mov R20,R16
.dbline -1
.dbline 320
; }
;
;
;
; //設置時間函數
; void DS12887_SetTime( uchar Address, uchar Value)
; {
.dbline 321
; DS12887_Write(0x0b, 0x86); //禁止更新,接下來初始化數據,即寫入時間,日期等
ldi R18,134
ldi R16,11
xcall _DS12887_Write
.dbline 322
; DS12887_Write(Address,Value);
mov R18,R22
mov R16,R20
xcall _DS12887_Write
.dbline 323
; DS12887_Write(0x0b, 0x06); //正常更新,二進制格式,24進制小時
ldi R18,6
ldi R16,11
xcall _DS12887_Write
.dbline -2
L47:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r Value 22 c
.dbsym r Address 20 c
.dbend
.dbfunc e DS12887_GetTime _DS12887_GetTime fV
.dbstruct 0 25 _SYSTEMTIME_
.dbfield 0 Second c
.dbfield 1 Minute c
.dbfield 2 Hour c
.dbfield 3 Week c
.dbfield 4 Day c
.dbfield 5 Month c
.dbfield 6 Year c
.dbfield 7 DateString A[9:9]c
.dbfield 16 TimeString A[9:9]c
.dbend
; temp -> <dead>
; Time -> R20,R21
.even
_DS12887_GetTime::
xcall push_gset1
movw R20,R16
.dbline -1
.dbline 329
; }
;
;
; //讀出時間
; void DS12887_GetTime(SYSTEMTIME *Time)
; { uchar temp;
.dbline 330
; Time->Second = DS12887_Read(DS12887_Second);
clr R16
xcall _DS12887_Read
movw R30,R20
std z+0,R16
.dbline 331
; Time->Minute = DS12887_Read(DS12887_Minute);
ldi R16,2
xcall _DS12887_Read
movw R30,R20
std z+1,R16
.dbline 332
; Time->Hour = DS12887_Read(DS12887_Hour );
ldi R16,4
xcall _DS12887_Read
movw R30,R20
std z+2,R16
.dbline 333
; Time->Day = DS12887_Read(DS12887_Day );
ldi R16,7
xcall _DS12887_Read
movw R30,R20
std z+4,R16
.dbline 335
; //Time->Week = DS12887_Read(DS12887_Week );
; Time->Month = DS12887_Read(DS12887_Month );
ldi R16,8
xcall _DS12887_Read
movw R30,R20
std z+5,R16
.dbline 336
; Time->Year = DS12887_Read(DS12887_Year );
ldi R16,9
xcall _DS12887_Read
movw R30,R20
std z+6,R16
.dbline 338
;
; y1=DS12887_Read(DS12887_Second);
clr R16
xcall _DS12887_Read
sts _y1,R16
.dbline 339
; y2=DS12887_Read(DS12887_Minute);
ldi R16,2
xcall _DS12887_Read
sts _y2,R16
.dbline 340
; y3=DS12887_Read(DS12887_Hour );
ldi R16,4
xcall _DS12887_Read
sts _y3,R16
.dbline 341
; y4=DS12887_Read(DS12887_Day );
ldi R16,7
xcall _DS12887_Read
sts _y4,R16
.dbline 342
; y5=DS12887_Read(DS12887_Month );
ldi R16,8
xcall _DS12887_Read
sts _y5,R16
.dbline 343
; y6=DS12887_Read(DS12887_Year );
ldi R16,9
xcall _DS12887_Read
sts _y6,R16
.dbline -2
L48:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym l temp 1 c
.dbsym r Time 20 pS[_SYSTEMTIME_]
.dbend
.dbfunc e DateToStr _DateToStr fV
; Time -> R20,R21
.even
_DateToStr::
xcall push_gset1
movw R20,R16
.dbline -1
.dbline 347
; }
; /*********************日期轉化成字符 09-02-19************/
; void DateToStr(SYSTEMTIME *Time)
; {
.dbline 348
; Time->DateString[0] = Time->Year/10 + '0';
ldi R17,10
movw R30,R20
ldd R16,z+6
xcall div8u
mov R24,R16
subi R24,208 ; addi 48
movw R30,R20
std z+7,R24
.dbline 349
; Time->DateString[1] = Time->Year%10 + '0';
ldi R17,10
movw R30,R20
ldd R16,z+6
xcall mod8u
mov R24,R16
subi R24,208 ; addi 48
movw R30,R20
std z+8,R24
.dbline 350
; Time->DateString[2] = '-';
ldi R24,45
movw R30,R20
std z+9,R24
.dbline 351
; Time->DateString[3] = Time->Month/10 + '0';
ldi R17,10
movw R30,R20
ldd R16,z+5
xcall div8u
mov R24,R16
subi R24,208 ; addi 48
movw R30,R20
std z+10,R24
.dbline 352
; Time->DateString[4] = Time->Month%10 + '0';
ldi R17,10
movw R30,R20
ldd R16,z+5
xcall mod8u
mov R24,R16
subi R24,208 ; addi 48
movw R30,R20
std z+11,R24
.dbline 353
; Time->DateString[5] = '-';
ldi R24,45
movw R30,R20
std z+12,R24
.dbline 354
; Time->DateString[6] = Time->Day/10 + '0';
ldi R17,10
movw R30,R20
ldd R16,z+4
xcall div8u
mov R24,R16
subi R24,208 ; addi 48
movw R30,R20
std z+13,R24
.dbline 355
; Time->DateString[7] = Time->Day%10 + '0';
ldi R17,10
movw R30,R20
ldd R16,z+4
xcall mod8u
mov R24,R16
subi R24,208 ; addi 48
movw R30,R20
std z+14,R24
.dbline 356
; Time->DateString[8] = '\0';
clr R2
movw R30,R20
std z+15,R2
.dbline 358
;
; y[0]=Time->DateString[0];
movw R30,R20
ldd R2,z+7
sts _y,R2
.dbline 359
; y[1]=Time->DateString[1]; //年
movw R30,R20
ldd R2,z+8
sts _y+1,R2
.dbline 361
;
; y[3]=Time->DateString[3];
movw R30,R20
ldd R2,z+10
sts _y+3,R2
.dbline 362
; y[4]=Time->DateString[4]; //月
movw R30,R20
ldd R2,z+11
sts _y+4,R2
.dbline 364
;
; y[6]=Time->DateString[6];
movw R30,R20
ldd R2,z+13
sts _y+6,R2
.dbline 365
; y[7]=Time->DateString[7]; //日
movw R30,R20
ldd R2,z+14
sts _y+7,R2
.dbline -2
L49:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r Time 20 pS[_SYSTEMTIME_]
.dbend
.dbfunc e TimeToStr _TimeToStr fV
; Time -> R20,R21
.even
_TimeToStr::
xcall push_gset1
movw R20,R16
.dbline -1
.dbline 372
;
; }
;
;
; /*********************時間轉化成字符***********************************/
; void TimeToStr(SYSTEMTIME *Time)
; {
.dbline 373
; Time->TimeString[0] = Time->Hour/10 + '0';
ldi R17,10
movw R30,R20
ldd R16,z+2
xcall div8u
mov R24,R16
subi R24,208 ; addi 48
movw R30,R20
std z+16,R24
.dbline 374
; Time->TimeString[1] = Time->Hour%10 + '0';
ldi R17,10
movw R30,R20
ldd R16,z+2
xcall mod8u
mov R24,R16
subi R24,208 ; addi 48
movw R30,R20
std z+17,R24
.dbline 375
; Time->TimeString[2] = ':';
ldi R24,58
movw R30,R20
std z+18,R24
.dbline 376
; Time->TimeString[3] = Time->Minute/10 + '0';
ldi R17,10
movw R30,R20
ldd R16,z+1
xcall div8u
mov R24,R16
subi R24,208 ; addi 48
movw R30,R20
std z+19,R24
.dbline 377
; Time->TimeString[4] = Time->Minute%10 + '0';
ldi R17,10
movw R30,R20
ldd R16,z+1
xcall mod8u
mov R24,R16
subi R24,208 ; addi 48
movw R30,R20
std z+20,R24
.dbline 378
; Time->TimeString[5] = ':';
ldi R24,58
movw R30,R20
std z+21,R24
.dbline 379
; Time->TimeString[6] = Time->Second/10 + '0';
ldi R17,10
movw R30,R20
ldd R16,z+0
xcall div8u
mov R24,R16
subi R24,208 ; addi 48
movw R30,R20
std z+22,R24
.dbline 380
; Time->TimeString[7] = Time->Second%10 + '0';
ldi R17,10
movw R30,R20
ldd R16,z+0
xcall mod8u
mov R24,R16
subi R24,208 ; addi 48
movw R30,R20
std z+23,R24
.dbline 381
; Time->TimeString[8] = '\0';
clr R2
movw R30,R20
std z+24,R2
.dbline 383
;
; y[9]=Time->TimeString[0];
movw R30,R20
ldd R2,z+16
sts _y+9,R2
.dbline 384
; y[10]=Time->TimeString[1]; //時
movw R30,R20
ldd R2,z+17
sts _y+10,R2
.dbline 386
;
; y[12]=Time->TimeString[3];
movw R30,R20
ldd R2,z+19
sts _y+12,R2
.dbline 387
; y[13]=Time->TimeString[4]; //分
movw R30,R20
ldd R2,z+20
sts _y+13,R2
.dbline 389
;
; y[15]=Time->TimeString[6];
movw R30,R20
ldd R2,z+22
sts _y+15,R2
.dbline 390
; y[16]=Time->TimeString[7]; //秒
movw R30,R20
ldd R2,z+23
sts _y+16,R2
.dbline -2
L55:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r Time 20 pS[_SYSTEMTIME_]
.dbend
.dbfunc e init_devices _init_devices fV
.even
_init_devices::
.dbline -1
.dbline 397
;
; }
;
;
; /********************初始化器件************************************/
; void init_devices(void)
; {
.dbline 398
; port_init();
xcall _port_init
.dbline 399
; usart_init();
xcall _usart_init
.dbline -2
L62:
.dbline 0 ; func end
ret
.dbend
.dbfunc e main _main fV
; temp -> R20
; CurrentTime -> y+0
.even
_main::
sbiw R28,25
.dbline -1
.dbline 403
; }
; /***************主函數*****************************/
; void main(void)
; {
.dbline 406
; SYSTEMTIME CurrentTime;
; uchar temp;
; init_devices();
xcall _init_devices
.dbline 407
; DS12887_Init(); //只讀時間的時候可以屏蔽該句
xcall _DS12887_Init
.dbline 408
; DS12887_GetTime(&CurrentTime);
movw R16,R28
xcall _DS12887_GetTime
.dbline 412
; /*************時間初始化設置 ,2009-3-4 16:57:00************/
; //時鐘調準后屏蔽該段程序
; //*
; DS12887_SetTime(DS12887_Second, 0); //設置秒
clr R18
clr R16
xcall _DS12887_SetTime
.dbline 413
; DS12887_SetTime(DS12887_Minute, 57); //設置分
ldi R18,57
ldi R16,2
xcall _DS12887_SetTime
.dbline 414
; DS12887_SetTime(DS12887_Hour,16); //設置時
ldi R18,16
ldi R16,4
xcall _DS12887_SetTime
.dbline 415
; DS12887_SetTime(DS12887_Day, 4); //設置天
ldi R18,4
ldi R16,7
xcall _DS12887_SetTime
.dbline 416
; DS12887_SetTime(DS12887_Month, 3); //設置月
ldi R18,3
ldi R16,8
xcall _DS12887_SetTime
.dbline 417
; DS12887_SetTime(DS12887_Year, 9); //設置年
ldi R18,9
ldi R16,9
xcall _DS12887_SetTime
.dbline 419
; //*/
; usart_str_send("DS12887工作中.......");
ldi R16,<L64
ldi R17,>L64
xcall _usart_str_send
xjmp L66
L65:
.dbline 421
; while(1)
; {
.dbline 422
; DS12887_GetTime(&CurrentTime);
movw R16,R28
xcall _DS12887_GetTime
.dbline 423
; DateToStr(&CurrentTime);
movw R16,R28
xcall _DateToStr
.dbline 424
; TimeToStr(&CurrentTime);
movw R16,R28
xcall _TimeToStr
.dbline 425
; temp=usart_char_receive();
xcall _usart_char_receive
mov R20,R16
.dbline 426
; if(temp=='0') //字符0----數據傳送啟動指令
cpi R16,48
brne L68
.dbline 427
; usart_str_send("現在時間是:");
ldi R16,<L70
ldi R17,>L70
xcall _usart_str_send
L68:
.dbline 428
xcall _usart_send_arry
.dbline 429
ldi R16,<L71
ldi R17,>L71
xcall _usart_str_send
.dbline 430
L66:
.dbline 420
xjmp L65
X1:
.dbline -2
L63:
adiw R28,25
.dbline 0 ; func end
ret
.dbsym r temp 20 c
.dbsym l CurrentTime 0 S[_SYSTEMTIME_]
.dbend
.area bss(ram, con, rel)
.dbfile C:\DOCUME~1\wangqinbo\MYDOCU~1\avrc\ds12997.c
_y6::
.blkb 1
.dbsym e y6 _y6 c
_y5::
.blkb 1
.dbsym e y5 _y5 c
_y4::
.blkb 1
.dbsym e y4 _y4 c
_y3::
.blkb 1
.dbsym e y3 _y3 c
_y2::
.blkb 1
.dbsym e y2 _y2 c
_y1::
.blkb 1
.dbsym e y1 _y1 c
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\wangqinbo\MYDOCU~1\avrc\ds12997.c
L71:
.blkb 3
.area idata
.byte 32,32,0
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\wangqinbo\MYDOCU~1\avrc\ds12997.c
L70:
.blkb 13
.area idata
.byte 207,214,212,218,202,177,188,228,202,199,163,186,0
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\wangqinbo\MYDOCU~1\avrc\ds12997.c
L64:
.blkb 21
.area idata
.byte 'D,'S,49,50,56,56,55,185,164,215,247,214,208,46,46,46
.byte 46,46,46,46,0
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\wangqinbo\MYDOCU~1\avrc\ds12997.c
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -