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

📄 time_8515.s

📁 AVR开发板例子源代码
💻 S
📖 第 1 页 / 共 3 页
字号:
	andi R24,#0x0F
	subi R24,208    ; addi 48
	sts _buf_time+25,R24
	.dbline 298
; 	 
; 	 buf_time[23] = (buf_read[2] & 0x0f) + '0';   //时的低位
	lds R24,_buf_read+2
	andi R24,15
	subi R24,208    ; addi 48
	sts _buf_time+23,R24
	.dbline 299
; 	 buf_time[22] = (buf_read[2] >> 4 ) + '0';  //时的高位
	lds R24,_buf_read+2
	swap R24
	andi R24,#0x0F
	subi R24,208    ; addi 48
	sts _buf_time+22,R24
	.dbline 301
; 	 
; 	 buf_time[14] = (buf_read[3] & 0x0f) + '0';   //日的低位
	lds R24,_buf_read+3
	andi R24,15
	subi R24,208    ; addi 48
	sts _buf_time+14,R24
	.dbline 302
; 	 buf_time[13] = (buf_read[3] >> 4 ) + '0';  //日的高位
	lds R24,_buf_read+3
	swap R24
	andi R24,#0x0F
	subi R24,208    ; addi 48
	sts _buf_time+13,R24
	.dbline 304
; 	 
; 	 buf_time[11] = (buf_read[4] & 0x0f) + '0';   //月的高位
	lds R24,_buf_read+4
	andi R24,15
	subi R24,208    ; addi 48
	sts _buf_time+11,R24
	.dbline 305
; 	 buf_time[10] = (buf_read[4] >> 4 ) + '0';  //月的高位
	lds R24,_buf_read+4
	swap R24
	andi R24,#0x0F
	subi R24,208    ; addi 48
	sts _buf_time+10,R24
	.dbline 307
; 	 
; 	 buf_time[8]  = (buf_read[6] & 0x0f) + '0';   //年的高位
	lds R24,_buf_read+6
	andi R24,15
	subi R24,208    ; addi 48
	sts _buf_time+8,R24
	.dbline 308
; 	 buf_time[7]  = (buf_read[6] >> 4 ) + '0';  //年的高位
	lds R24,_buf_read+6
	swap R24
	andi R24,#0x0F
	subi R24,208    ; addi 48
	sts _buf_time+7,R24
	.dbline -2
L53:
	.dbline 0 ; func end
	ret
	.dbend
	.area lit(rom, con, rel)
L77:
	.byte 32,32,189,241,204,236,181,196,200,213,198,218,202,199,163,186
L78:
	.byte 32,32,181,177,199,176,181,196,202,177,188,228,202,199,163,186
	.area text(rom, con, rel)
	.dbfile E:\iccavr代码\实验19_其他芯片使用_8515\time_8515.c
	.dbfunc e out_data_pc232 _out_data_pc232 fV
;          time2 -> y+16
;          time1 -> y+0
;              i -> R20
	.even
_out_data_pc232::
	rcall push_gset1
	sbiw R28,32
	.dbline -1
	.dbline 318
; }
; /********************************************************
;   子程序名:   out_data_pc232()
;   功    能:   串口发送时间数据到PC,
;   输入参数:   /
;   输出参数:   /
;   描    述:   包括"当前的温度是:xxx.xx摄氏度",此程序借助LCD的显示缓冲区
; ********************************************************/
; void out_data_pc232(void) 
; {
	.dbline 320
; 	 uchar i;
; 	 uchar time1[16]="  今天的日期是:";
	ldi R24,<L77
	ldi R25,>L77
	movw R30,R28
	ldi R16,16
	ldi R17,0
	st -y,R31
	st -y,R30
	st -y,R25
	st -y,R24
	rcall asgncblk
	.dbline 321
; 	 uchar time2[16]="  当前的时间是:";
	ldi R24,<L78
	ldi R25,>L78
	movw R30,R28
	adiw R30,16
	ldi R16,16
	ldi R17,0
	st -y,R31
	st -y,R30
	st -y,R25
	st -y,R24
	rcall asgncblk
	.dbline 323
; 	 
;      for(i=0;i<16;i++)    //向串口发送数据
	clr R20
	rjmp L82
L79:
	.dbline 324
	.dbline 325
	movw R24,R28
	mov R30,R20
	clr R31
	add R30,R24
	adc R31,R25
	ldd R16,z+0
	rcall _write_pc232
	.dbline 326
L80:
	.dbline 323
	inc R20
L82:
	.dbline 323
	cpi R20,16
	brlo L79
	.dbline 327
;      { 
;          write_pc232(time1[i]);
;      } 
; 	  write_pc232('2');            //年
	ldi R16,50
	rcall _write_pc232
	.dbline 328
; 	  write_pc232('0');
	ldi R16,48
	rcall _write_pc232
	.dbline 329
; 	  write_pc232(buf_time[7]);
	lds R16,_buf_time+7
	rcall _write_pc232
	.dbline 330
; 	  write_pc232(buf_time[8]);
	lds R16,_buf_time+8
	rcall _write_pc232
	.dbline 331
; 	  write_pc232('-');
	ldi R16,45
	rcall _write_pc232
	.dbline 332
; 	  write_pc232(buf_time[10]);   //月
	lds R16,_buf_time+10
	rcall _write_pc232
	.dbline 333
; 	  write_pc232(buf_time[11]);
	lds R16,_buf_time+11
	rcall _write_pc232
	.dbline 334
; 	  write_pc232('-');
	ldi R16,45
	rcall _write_pc232
	.dbline 335
; 	  write_pc232(buf_time[13]);   //日
	lds R16,_buf_time+13
	rcall _write_pc232
	.dbline 336
; 	  write_pc232(buf_time[14]);
	lds R16,_buf_time+14
	rcall _write_pc232
	.dbline 338
; 	  
;      for(i=0;i<16;i++)    //向串口发送数据
	clr R20
	rjmp L92
L89:
	.dbline 339
	.dbline 340
	movw R24,R28
	adiw R24,16
	mov R30,R20
	clr R31
	add R30,R24
	adc R31,R25
	ldd R16,z+0
	rcall _write_pc232
	.dbline 341
L90:
	.dbline 338
	inc R20
L92:
	.dbline 338
	cpi R20,16
	brlo L89
	.dbline 342
;      { 
;          write_pc232(time2[i]);
;      } 
; 	  write_pc232(buf_time[22]);   //时
	lds R16,_buf_time+22
	rcall _write_pc232
	.dbline 343
; 	  write_pc232(buf_time[23]);
	lds R16,_buf_time+23
	rcall _write_pc232
	.dbline 344
; 	  write_pc232(':');
	ldi R16,58
	rcall _write_pc232
	.dbline 345
; 	  write_pc232(buf_time[25]);   //分
	lds R16,_buf_time+25
	rcall _write_pc232
	.dbline 346
; 	  write_pc232(buf_time[26]);
	lds R16,_buf_time+26
	rcall _write_pc232
	.dbline 347
; 	  write_pc232(':');
	ldi R16,58
	rcall _write_pc232
	.dbline 348
; 	  write_pc232(buf_time[28]);   //秒
	lds R16,_buf_time+28
	rcall _write_pc232
	.dbline 349
; 	  write_pc232(buf_time[29]);
	lds R16,_buf_time+29
	rcall _write_pc232
	.dbline 351
; 	  
; 	  write_pc232('\n'); 
	ldi R16,10
	rcall _write_pc232
	.dbline 352
;  	  write_pc232('\r'); //显示回车换行
	ldi R16,13
	rcall _write_pc232
	.dbline -2
L76:
	adiw R28,32
	rcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym l time2 16 A[16:16]c
	.dbsym l time1 0 A[16:16]c
	.dbsym r i 20 c
	.dbend
	.area lit(rom, con, rel)
L100:
	.byte 32,32,32,32,'w,'e,'l,'c,'o,'m,'e,33,32,32,32,32
	.byte 32,32,'w,'w,'w,46,'i,'t,'s,'n,46,'c,'n,33,32,32
	.byte 0
	.area text(rom, con, rel)
	.dbfile E:\iccavr代码\实验19_其他芯片使用_8515\time_8515.c
	.dbfunc e main _main fV
;       buf_logo -> y+0
;       data_old -> R20
	.even
_main::
	sbiw R28,33
	.dbline -1
	.dbline 356
; }
; //*****************主程序**********************************
; void main (void)
; {
	.dbline 358
;      uchar data_old;
; 	 uchar buf_logo[]="    welcome!      www.itsn.cn!  ";
	ldi R24,<L100
	ldi R25,>L100
	movw R30,R28
	ldi R16,33
	ldi R17,0
	st -y,R31
	st -y,R30
	st -y,R25
	st -y,R24
	rcall asgncblk
	.dbline 360
; 	 
;      mcu_Init();       //单片机初始化
	rcall _mcu_Init
	.dbline 361
; 	 usart_Init();     //串口初始化
	rcall _usart_Init
	.dbline 362
; 	 init_lcd();        //lcd初始化
	rcall _init_lcd
	.dbline 364
; 	 
; 	 write_pc232('o'); //测试串口
	ldi R16,111
	rcall _write_pc232
	.dbline 365
;      write_pc232('k'); //测试串口
	ldi R16,107
	rcall _write_pc232
	.dbline 366
; 	 write_pc232('\n'); 
	ldi R16,10
	rcall _write_pc232
	.dbline 367
;  	 write_pc232('\r'); //显示回车换行
	ldi R16,13
	rcall _write_pc232
	.dbline 369
; 	 
; 	 display_lcd(buf_logo);  //显示LOGO
	movw R16,R28
	rcall _display_lcd
	.dbline 370
; 	 spk (1000);           //上电蜂鸣器长响
	ldi R16,232
	rcall _spk
	.dbline 371
; 	 DelaymS(2000);    //长延迟
	ldi R16,2000
	ldi R17,7
	rcall _DelaymS
	.dbline 372
; 	 display_lcd(buf_time);  //开始工作,LCD刷新显示一屏
	ldi R16,<_buf_time
	ldi R17,>_buf_time
	rcall _display_lcd
	.dbline 373
; 	 spk (100);           //开始工作,蜂鸣器短响
	ldi R16,100
	rcall _spk
	.dbline 376
; 	 
; 	 //---------此段测试1302是否已经写过内容了,若写过就不再重新写。
; 	 read_DS1302();      //读时间
	rcall _read_DS1302
	.dbline 377
; 	 if(buf_read[0] & 0x80)
	lds R2,_buf_read
	sbrs R2,7
	rjmp L101
	.dbline 378
; 	 {
	.dbline 379
; 	    write_DS1302();  //写入需要的初始时间值,
	rcall _write_DS1302
	.dbline 380
; 	 }
L101:
	.dbline 383
; 	 //------------------
; 	 
; 	 DelaymS(1);       //延迟
	ldi R16,1
	ldi R17,0
	rcall _DelaymS
	.dbline 384
; 	 read_DS1302();      //读时间
	rcall _read_DS1302
	.dbline 385
; 	 data_old = buf_read[0];  //提取旧时钟的秒数值
	lds R20,_buf_read
	rjmp L104
L103:
	.dbline 387
; 	 while(1) //无限循环执行,此程序保证了一秒钟更新一次串口数据,更新一次LCD显示。
; 	 {
	.dbline 388
; 		   DelaymS(10);       //延迟
	ldi R16,10
	ldi R17,0
	rcall _DelaymS
	.dbline 389
; 		   read_DS1302();      //读时间
	rcall _read_DS1302
	.dbline 390
; 		   if (data_old == buf_read[0])
	lds R2,_buf_read
	cp R20,R2
	brne L106
	.dbline 391
; 		   {
	.dbline 392
; 		       DelaymS(10);       //延迟
	ldi R16,10
	ldi R17,0
	rcall _DelaymS
	.dbline 393
; 		   }
	rjmp L107
L106:
	.dbline 395
; 		   else
; 		   {
	.dbline 396
; 		       data_conversion();  //将读出的数据分开,分别装入显存
	rcall _data_conversion
	.dbline 397
; 		       display_lcd(buf_time);  //刷新显示一屏
	ldi R16,<_buf_time
	ldi R17,>_buf_time
	rcall _display_lcd
	.dbline 398
; 		       out_data_pc232();  //串口将时间数据送PC
	rcall _out_data_pc232
	.dbline 399
; 			   data_old = buf_read[0]; //更新时钟的秒数值
	lds R20,_buf_read
	.dbline 400
; 		   }		   
L107:
	.dbline 401
L104:
	.dbline 386
	rjmp L103
X0:
	.dbline -2
L99:
	adiw R28,33
	.dbline 0 ; func end
	ret
	.dbsym l buf_logo 0 A[33:33]c
	.dbsym r data_old 20 c
	.dbend
	.area bss(ram, con, rel)
	.dbfile E:\iccavr代码\实验19_其他芯片使用_8515\time_8515.c
_buf_read::
	.blkb 8
	.dbsym e buf_read _buf_read A[8:8]c

⌨️ 快捷键说明

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