📄 time_8515.lis
字号:
0292 FA93 st -y,R31
0294 EA93 st -y,R30
0296 9A93 st -y,R25
0298 8A93 st -y,R24
029A 00D0 rcall asgncblk
029C .dbline 323
029C ;
029C ; for(i=0;i<16;i++) //向串口发送数据
029C 4427 clr R20
029E 08C0 rjmp L82
02A0 L79:
02A0 .dbline 324
02A0 .dbline 325
02A0 CE01 movw R24,R28
02A2 E42F mov R30,R20
02A4 FF27 clr R31
02A6 E80F add R30,R24
02A8 F91F adc R31,R25
02AA 0081 ldd R16,z+0
02AC 73DF rcall _write_pc232
02AE .dbline 326
02AE L80:
02AE .dbline 323
02AE 4395 inc R20
02B0 L82:
02B0 .dbline 323
02B0 4031 cpi R20,16
02B2 B0F3 brlo L79
02B4 .dbline 327
02B4 ; {
02B4 ; write_pc232(time1[i]);
02B4 ; }
02B4 ; write_pc232('2'); //年
02B4 02E3 ldi R16,50
02B6 6EDF rcall _write_pc232
02B8 .dbline 328
02B8 ; write_pc232('0');
02B8 00E3 ldi R16,48
02BA 6CDF rcall _write_pc232
02BC .dbline 329
02BC ; write_pc232(buf_time[7]);
02BC 00910700 lds R16,_buf_time+7
02C0 69DF rcall _write_pc232
02C2 .dbline 330
02C2 ; write_pc232(buf_time[8]);
02C2 00910800 lds R16,_buf_time+8
02C6 66DF rcall _write_pc232
02C8 .dbline 331
02C8 ; write_pc232('-');
02C8 0DE2 ldi R16,45
02CA 64DF rcall _write_pc232
02CC .dbline 332
02CC ; write_pc232(buf_time[10]); //月
02CC 00910A00 lds R16,_buf_time+10
02D0 61DF rcall _write_pc232
02D2 .dbline 333
02D2 ; write_pc232(buf_time[11]);
02D2 00910B00 lds R16,_buf_time+11
02D6 5EDF rcall _write_pc232
02D8 .dbline 334
02D8 ; write_pc232('-');
02D8 0DE2 ldi R16,45
02DA 5CDF rcall _write_pc232
02DC .dbline 335
02DC ; write_pc232(buf_time[13]); //日
02DC 00910D00 lds R16,_buf_time+13
02E0 59DF rcall _write_pc232
02E2 .dbline 336
02E2 ; write_pc232(buf_time[14]);
02E2 00910E00 lds R16,_buf_time+14
02E6 56DF rcall _write_pc232
02E8 .dbline 338
02E8 ;
02E8 ; for(i=0;i<16;i++) //向串口发送数据
02E8 4427 clr R20
02EA 09C0 rjmp L92
02EC L89:
02EC .dbline 339
02EC .dbline 340
02EC CE01 movw R24,R28
02EE 4096 adiw R24,16
02F0 E42F mov R30,R20
02F2 FF27 clr R31
02F4 E80F add R30,R24
02F6 F91F adc R31,R25
02F8 0081 ldd R16,z+0
02FA 4CDF rcall _write_pc232
02FC .dbline 341
02FC L90:
02FC .dbline 338
02FC 4395 inc R20
02FE L92:
02FE .dbline 338
02FE 4031 cpi R20,16
0300 A8F3 brlo L89
0302 .dbline 342
0302 ; {
0302 ; write_pc232(time2[i]);
0302 ; }
0302 ; write_pc232(buf_time[22]); //时
0302 00911600 lds R16,_buf_time+22
0306 46DF rcall _write_pc232
0308 .dbline 343
0308 ; write_pc232(buf_time[23]);
0308 00911700 lds R16,_buf_time+23
030C 43DF rcall _write_pc232
030E .dbline 344
030E ; write_pc232(':');
030E 0AE3 ldi R16,58
0310 41DF rcall _write_pc232
0312 .dbline 345
0312 ; write_pc232(buf_time[25]); //分
0312 00911900 lds R16,_buf_time+25
0316 3EDF rcall _write_pc232
0318 .dbline 346
0318 ; write_pc232(buf_time[26]);
0318 00911A00 lds R16,_buf_time+26
031C 3BDF rcall _write_pc232
031E .dbline 347
031E ; write_pc232(':');
031E 0AE3 ldi R16,58
0320 39DF rcall _write_pc232
0322 .dbline 348
0322 ; write_pc232(buf_time[28]); //秒
0322 00911C00 lds R16,_buf_time+28
0326 36DF rcall _write_pc232
0328 .dbline 349
0328 ; write_pc232(buf_time[29]);
0328 00911D00 lds R16,_buf_time+29
032C 33DF rcall _write_pc232
032E .dbline 351
032E ;
032E ; write_pc232('\n');
032E 0AE0 ldi R16,10
0330 31DF rcall _write_pc232
0332 .dbline 352
0332 ; write_pc232('\r'); //显示回车换行
0332 0DE0 ldi R16,13
0334 2FDF rcall _write_pc232
0336 .dbline -2
0336 L76:
0336 A096 adiw R28,32
0338 00D0 rcall pop_gset1
033A .dbline 0 ; func end
033A 0895 ret
033C .dbsym l time2 16 A[16:16]c
033C .dbsym l time1 0 A[16:16]c
033C .dbsym r i 20 c
033C .dbend
.area lit(rom, con, rel)
0020 L100:
0020 2020202077656C636F6D652120202020 .byte 32,32,32,32,'w,'e,'l,'c,'o,'m,'e,33,32,32,32,32
0030 20207777772E6974736E2E636E212020 .byte 32,32,'w,'w,'w,46,'i,'t,'s,'n,46,'c,'n,33,32,32
0040 00 .byte 0
.area text(rom, con, rel)
033C .dbfile E:\iccavr代码\实验19_其他芯片使用_8515\time_8515.c
033C .dbfunc e main _main fV
033C ; buf_logo -> y+0
033C ; data_old -> R20
.even
033C _main::
033C A197 sbiw R28,33
033E .dbline -1
033E .dbline 356
033E ; }
033E ; //*****************主程序**********************************
033E ; void main (void)
033E ; {
033E .dbline 358
033E ; uchar data_old;
033E ; uchar buf_logo[]=" welcome! www.itsn.cn! ";
033E 80E0 ldi R24,<L100
0340 90E0 ldi R25,>L100
0342 FE01 movw R30,R28
0344 01E2 ldi R16,33
0346 10E0 ldi R17,0
0348 FA93 st -y,R31
034A EA93 st -y,R30
034C 9A93 st -y,R25
034E 8A93 st -y,R24
0350 00D0 rcall asgncblk
0352 .dbline 360
0352 ;
0352 ; mcu_Init(); //单片机初始化
0352 2ADF rcall _mcu_Init
0354 .dbline 361
0354 ; usart_Init(); //串口初始化
0354 2EDF rcall _usart_Init
0356 .dbline 362
0356 ; init_lcd(); //lcd初始化
0356 81DE rcall _init_lcd
0358 .dbline 364
0358 ;
0358 ; write_pc232('o'); //测试串口
0358 0FE6 ldi R16,111
035A 1CDF rcall _write_pc232
035C .dbline 365
035C ; write_pc232('k'); //测试串口
035C 0BE6 ldi R16,107
035E 1ADF rcall _write_pc232
0360 .dbline 366
0360 ; write_pc232('\n');
0360 0AE0 ldi R16,10
0362 18DF rcall _write_pc232
0364 .dbline 367
0364 ; write_pc232('\r'); //显示回车换行
0364 0DE0 ldi R16,13
0366 16DF rcall _write_pc232
0368 .dbline 369
0368 ;
0368 ; display_lcd(buf_logo); //显示LOGO
0368 8E01 movw R16,R28
036A 82DE rcall _display_lcd
036C .dbline 370
036C ; spk (1000); //上电蜂鸣器长响
036C 08EE ldi R16,232
036E 26DF rcall _spk
0370 .dbline 371
0370 ; DelaymS(2000); //长延迟
0370 00ED ldi R16,2000
0372 17E0 ldi R17,7
0374 45DE rcall _DelaymS
0376 .dbline 372
0376 ; display_lcd(buf_time); //开始工作,LCD刷新显示一屏
0376 00E0 ldi R16,<_buf_time
0378 10E0 ldi R17,>_buf_time
037A 7ADE rcall _display_lcd
037C .dbline 373
037C ; spk (100); //开始工作,蜂鸣器短响
037C 04E6 ldi R16,100
037E 1EDF rcall _spk
0380 .dbline 376
0380 ;
0380 ; //---------此段测试1302是否已经写过内容了,若写过就不再重新写。
0380 ; read_DS1302(); //读时间
0380 ECDE rcall _read_DS1302
0382 .dbline 377
0382 ; if(buf_read[0] & 0x80)
0382 20900000 lds R2,_buf_read
0386 27FE sbrs R2,7
0388 01C0 rjmp L101
038A .dbline 378
038A ; {
038A .dbline 379
038A ; write_DS1302(); //写入需要的初始时间值,
038A BDDE rcall _write_DS1302
038C .dbline 380
038C ; }
038C L101:
038C .dbline 383
038C ; //------------------
038C ;
038C ; DelaymS(1); //延迟
038C 01E0 ldi R16,1
038E 10E0 ldi R17,0
0390 37DE rcall _DelaymS
0392 .dbline 384
0392 ; read_DS1302(); //读时间
0392 E3DE rcall _read_DS1302
0394 .dbline 385
0394 ; data_old = buf_read[0]; //提取旧时钟的秒数值
0394 40910000 lds R20,_buf_read
0398 13C0 rjmp L104
039A L103:
039A .dbline 387
039A ; while(1) //无限循环执行,此程序保证了一秒钟更新一次串口数据,更新一次LCD显示。
039A ; {
039A .dbline 388
039A ; DelaymS(10); //延迟
039A 0AE0 ldi R16,10
039C 10E0 ldi R17,0
039E 30DE rcall _DelaymS
03A0 .dbline 389
03A0 ; read_DS1302(); //读时间
03A0 DCDE rcall _read_DS1302
03A2 .dbline 390
03A2 ; if (data_old == buf_read[0])
03A2 20900000 lds R2,_buf_read
03A6 4215 cp R20,R2
03A8 21F4 brne L106
03AA .dbline 391
03AA ; {
03AA .dbline 392
03AA ; DelaymS(10); //延迟
03AA 0AE0 ldi R16,10
03AC 10E0 ldi R17,0
03AE 28DE rcall _DelaymS
03B0 .dbline 393
03B0 ; }
03B0 07C0 rjmp L107
03B2 L106:
03B2 .dbline 395
03B2 ; else
03B2 ; {
03B2 .dbline 396
03B2 ; data_conversion(); //将读出的数据分开,分别装入显存
03B2 0EDF rcall _data_conversion
03B4 .dbline 397
03B4 ; display_lcd(buf_time); //刷新显示一屏
03B4 00E0 ldi R16,<_buf_time
03B6 10E0 ldi R17,>_buf_time
03B8 5BDE rcall _display_lcd
03BA .dbline 398
03BA ; out_data_pc232(); //串口将时间数据送PC
03BA 59DF rcall _out_data_pc232
03BC .dbline 399
03BC ; data_old = buf_read[0]; //更新时钟的秒数值
03BC 40910000 lds R20,_buf_read
03C0 .dbline 400
03C0 ; }
03C0 L107:
03C0 .dbline 401
03C0 L104:
03C0 .dbline 386
03C0 ECCF rjmp L103
03C2 X0:
03C2 .dbline -2
03C2 L99:
03C2 A196 adiw R28,33
03C4 .dbline 0 ; func end
03C4 0895 ret
03C6 .dbsym l buf_logo 0 A[33:33]c
03C6 .dbsym r data_old 20 c
03C6 .dbend
.area bss(ram, con, rel)
0000 .dbfile E:\iccavr代码\实验19_其他芯片使用_8515\time_8515.c
0000 _buf_read::
0000 .blkb 8
0008 .dbsym e buf_read _buf_read A[8:8]c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -