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

📄 ds12997.s

📁 本程序经调试好使
💻 S
📖 第 1 页 / 共 2 页
字号:
	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 + -