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

📄 time_8515.lis

📁 AVR开发板例子源代码
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 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 + -