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

📄 ac15-4.lis

📁 AVR学习资料
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 04E2           L114:
 04E2                   .dbline 289
 04E2           ;                                                                                       
 04E2           ;                       //*************************
 04E2           ;                       case 0xfb:i2c_Write(11,time2.hour); 
 04E2 20910000          lds R18,_time2
 04E6 0BE0              ldi R16,11
 04E8 8DDE              xcall _i2c_Write
 04EA                   .dbline 290
 04EA           ;                                delay_ms(10);
 04EA 0AE0              ldi R16,10
 04EC 10E0              ldi R17,0
 04EE 8DD0              xcall _delay_ms
 04F0                   .dbline 291
 04F0           ;                                i2c_Write(12,time2.min);               
 04F0 20910100          lds R18,_time2+1
 04F4 0CE0              ldi R16,12
 04F6 86DE              xcall _i2c_Write
 04F8                   .dbline 292
 04F8           ;                                delay_ms(10);
 04F8 0AE0              ldi R16,10
 04FA 10E0              ldi R17,0
 04FC 86D0              xcall _delay_ms
 04FE                   .dbline 293
 04FE           ;                                DisplayOneChar(13,1,0x57); 
 04FE 87E5              ldi R24,87
 0500 8883              std y+0,R24
 0502 21E0              ldi R18,1
 0504 0DE0              ldi R16,13
 0506 BBDD              xcall _DisplayOneChar
 0508                   .dbline 294
 0508           ;                                delay_ms(10);break;    
 0508 0AE0              ldi R16,10
 050A 10E0              ldi R17,0
 050C 7ED0              xcall _delay_ms
 050E                   .dbline 294
 050E 16C0              xjmp L90
 0510           L116:
 0510                   .dbline 295
 0510           ;                       case 0xf7:time2.hour=i2c_Read(11); 
 0510 0BE0              ldi R16,11
 0512 28DE              xcall _i2c_Read
 0514 00930000          sts _time2,R16
 0518                   .dbline 296
 0518           ;                                delay_ms(10);
 0518 0AE0              ldi R16,10
 051A 10E0              ldi R17,0
 051C 76D0              xcall _delay_ms
 051E                   .dbline 297
 051E           ;                                time2.min=i2c_Read(12);
 051E 0CE0              ldi R16,12
 0520 21DE              xcall _i2c_Read
 0522 00930100          sts _time2+1,R16
 0526                   .dbline 298
 0526           ;                                delay_ms(10);
 0526 0AE0              ldi R16,10
 0528 10E0              ldi R17,0
 052A 6FD0              xcall _delay_ms
 052C                   .dbline 299
 052C           ;                                DisplayOneChar(13,1,0x52); 
 052C 82E5              ldi R24,82
 052E 8883              std y+0,R24
 0530 21E0              ldi R18,1
 0532 0DE0              ldi R16,13
 0534 A4DD              xcall _DisplayOneChar
 0536                   .dbline 300
 0536           ;                                delay_ms(10);break;    
 0536 0AE0              ldi R16,10
 0538 10E0              ldi R17,0
 053A 67D0              xcall _delay_ms
 053C                   .dbline 300
 053C                   .dbline 301
 053C           ;                       default:break;          
 053C           L90:
 053C                   .dbline 303
 053C 0CE2              ldi R16,300
 053E 11E0              ldi R17,1
 0540 64D0              xcall _delay_ms
 0542                   .dbline 304
 0542 80E2              ldi R24,32
 0544 8883              std y+0,R24
 0546 21E0              ldi R18,1
 0548 0DE0              ldi R16,13
 054A 99DD              xcall _DisplayOneChar
 054C                   .dbline 305
 054C 0AE0              ldi R16,10
 054E 10E0              ldi R17,0
 0550 5CD0              xcall _delay_ms
 0552                   .dbline 307
 0552           L81:
 0552                   .dbline 250
 0552 BDCE              xjmp L80
 0554           X1:
 0554                   .dbline -2
 0554           L79:
 0554 2296              adiw R28,2
 0556                   .dbline 0 ; func end
 0556 0895              ret
 0558                   .dbsym r key_val 22 c
 0558                   .dbend
                        .area vector(rom, abs)
                        .org 32
 0020 0C94AC02          jmp _timer1_ovf_isr
                        .area text(rom, con, rel)
 0558                   .dbfile d:\MYDOCU~1\ac15-4\ac15-4.c
 0558                   .dbfunc e timer1_ovf_isr _timer1_ovf_isr fV
                        .even
 0558           _timer1_ovf_isr::
 0558 2A92              st -y,R2
 055A 3A92              st -y,R3
 055C 8A93              st -y,R24
 055E 9A93              st -y,R25
 0560 2FB6              in R2,0x3f
 0562 2A92              st -y,R2
 0564                   .dbline -1
 0564                   .dbline 312
 0564           ;                       }                                       
 0564           ;                       delay_ms(300); 
 0564           ;                       DisplayOneChar(13,1,0x20); 
 0564           ;                       delay_ms(10);
 0564           ;                                               
 0564           ;                }                              
 0564           ; }                
 0564           ; /***********************定时器T1中断子函数**********************/
 0564           ; #pragma interrupt_handler timer1_ovf_isr:9
 0564           ; void timer1_ovf_isr(void)
 0564           ; {
 0564                   .dbline 314
 0564           ;  //TIMER1 has overflowed
 0564           ;  TCNT1H = 0xF3; //reload counter high value
 0564 83EF              ldi R24,243
 0566 8DBD              out 0x2d,R24
 0568                   .dbline 315
 0568           ;  TCNT1L = 0xCB; //reload counter low value
 0568 8BEC              ldi R24,203
 056A 8CBD              out 0x2c,R24
 056C                   .dbline 316
 056C           ;  if(++time1.dida>=10){time1.dida=0;time1.sec++;}
 056C 80910700          lds R24,_time1+3
 0570 8F5F              subi R24,255    ; addi 1
 0572 282E              mov R2,R24
 0574 20920700          sts _time1+3,R2
 0578 8A30              cpi R24,10
 057A 40F0              brlo L124
 057C                   .dbline 316
 057C                   .dbline 316
 057C 2224              clr R2
 057E 20920700          sts _time1+3,R2
 0582                   .dbline 316
 0582 80910600          lds R24,_time1+2
 0586 8F5F              subi R24,255    ; addi 1
 0588 80930600          sts _time1+2,R24
 058C                   .dbline 316
 058C           L124:
 058C                   .dbline 317
 058C           ;  if(time1.sec>=60){time1.sec=0;time1.min++;}
 058C 80910600          lds R24,_time1+2
 0590 8C33              cpi R24,60
 0592 40F0              brlo L129
 0594                   .dbline 317
 0594                   .dbline 317
 0594 2224              clr R2
 0596 20920600          sts _time1+2,R2
 059A                   .dbline 317
 059A 80910500          lds R24,_time1+1
 059E 8F5F              subi R24,255    ; addi 1
 05A0 80930500          sts _time1+1,R24
 05A4                   .dbline 317
 05A4           L129:
 05A4                   .dbline 318
 05A4           ;  if(time1.min>=60){time1.min=0;time1.hour++;}
 05A4 80910500          lds R24,_time1+1
 05A8 8C33              cpi R24,60
 05AA 40F0              brlo L134
 05AC                   .dbline 318
 05AC                   .dbline 318
 05AC 2224              clr R2
 05AE 20920500          sts _time1+1,R2
 05B2                   .dbline 318
 05B2 80910400          lds R24,_time1
 05B6 8F5F              subi R24,255    ; addi 1
 05B8 80930400          sts _time1,R24
 05BC                   .dbline 318
 05BC           L134:
 05BC                   .dbline 319
 05BC           ;  if(time1.hour>=24){time1.hour=0;}
 05BC 80910400          lds R24,_time1
 05C0 8831              cpi R24,24
 05C2 18F0              brlo L138
 05C4                   .dbline 319
 05C4                   .dbline 319
 05C4 2224              clr R2
 05C6 20920400          sts _time1,R2
 05CA                   .dbline 319
 05CA           L138:
 05CA                   .dbline 321
 05CA           ;  //-------------------
 05CA           ;  if((time1.hour==time2.hour)&&(time1.min==time2.min))LED_0; 
 05CA 20900000          lds R2,_time2
 05CE 30900400          lds R3,_time1
 05D2 3214              cp R3,R2
 05D4 41F4              brne L140
 05D6 20900100          lds R2,_time2+1
 05DA 30900500          lds R3,_time1+1
 05DE 3214              cp R3,R2
 05E0 11F4              brne L140
 05E2                   .dbline 321
 05E2 C798              cbi 0x18,7
 05E4 01C0              xjmp L141
 05E6           L140:
 05E6                   .dbline 322
 05E6 C79A              sbi 0x18,7
 05E8           L141:
 05E8                   .dbline -2
 05E8           L123:
 05E8 2990              ld R2,y+
 05EA 2FBE              out 0x3f,R2
 05EC 9991              ld R25,y+
 05EE 8991              ld R24,y+
 05F0 3990              ld R3,y+
 05F2 2990              ld R2,y+
 05F4                   .dbline 0 ; func end
 05F4 1895              reti
 05F6                   .dbend
 05F6                   .dbfunc e init_devices _init_devices fV
                        .even
 05F6           _init_devices::
 05F6                   .dbline -1
 05F6                   .dbline 326
 05F6           ;  else LED_1;
 05F6           ; }
 05F6           ; /*********************************************/
 05F6           ; void init_devices(void)
 05F6           ; {
 05F6                   .dbline 328
 05F6           ;  //stop errant interrupts until set up
 05F6           ;  CLI(); //disable all interrupts
 05F6 F894              cli
 05F8                   .dbline 329
 05F8           ;  port_init();
 05F8 A6DD              xcall _port_init
 05FA                   .dbline 330
 05FA           ;  timer1_init();
 05FA 41DE              xcall _timer1_init
 05FC                   .dbline 331
 05FC           ;  MCUCR = 0x00;
 05FC 2224              clr R2
 05FE 25BE              out 0x35,R2
 0600                   .dbline 332
 0600           ;  GICR  = 0x00;
 0600 2BBE              out 0x3b,R2
 0602                   .dbline 333
 0602           ;  TIMSK = 0x04; //timer interrupt sources
 0602 84E0              ldi R24,4
 0604 89BF              out 0x39,R24
 0606                   .dbline 334
 0606           ;  SEI(); //re-enable interrupts
 0606 7894              sei
 0608                   .dbline -2
 0608           L144:
 0608                   .dbline 0 ; func end
 0608 0895              ret
 060A                   .dbend
 060A                   .dbfunc e delay_ms _delay_ms fV
 060A           ;           time -> R20,R21
                        .even
 060A           _delay_ms::
 060A 0E940000          xcall push_gset1
 060E A801              movw R20,R16
 0610                   .dbline -1
 0610                   .dbline 340
 0610           ;  //all peripherals are now initialized
 0610           ; }
 0610           ; 
 0610           ; /*******************器件初始化********************/
 0610           ; void delay_ms(unsigned int time)
 0610           ;        {
 0610 05C0              xjmp L147
 0612           L146:
 0612                   .dbline 342
 0612                   .dbline 343
 0612 08EE              ldi R16,1000
 0614 13E0              ldi R17,3
 0616 08D0              xcall _delay_us
 0618                   .dbline 344
 0618 4150              subi R20,1
 061A 5040              sbci R21,0
 061C                   .dbline 345
 061C           L147:
 061C                   .dbline 341
 061C           ;         while(time!=0)
 061C 4030              cpi R20,0
 061E 4507              cpc R20,R21
 0620 C1F7              brne L146
 0622           X13:
 0622                   .dbline -2
 0622           L145:
 0622 0E940000          xcall pop_gset1
 0626                   .dbline 0 ; func end
 0626 0895              ret
 0628                   .dbsym r time 20 i
 0628                   .dbend
 0628                   .dbfunc e delay_us _delay_us fV
 0628           ;           time -> R16,R17
                        .even
 0628           _delay_us::
 0628                   .dbline -1
 0628                   .dbline 350
 0628           ;                 {             
 0628           ;                  delay_us(1000);
 0628           ;                  time--;
 0628           ;                 }
 0628           ;        }
 0628           ;                                               
 0628           ; /*****************廷时子函数************************/
 0628           ; void delay_us(int time)
 0628           ;        {     
 0628           L150:
 0628                   .dbline 352
 0628           ;         do
 0628           ;               {
 0628                   .dbline 353
 0628           ;                time--;
 0628 0150              subi R16,1
 062A 1040              sbci R17,0
 062C                   .dbline 354
 062C           ;               }       
 062C           L151:
 062C                   .dbline 355
 062C           ;         while (time>1);
 062C 81E0              ldi R24,1

⌨️ 快捷键说明

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