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

📄 bi2.lis

📁 驱动320240
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 019E           ;   while (time>1);
 019E 81E0              ldi R24,1
 01A0 90E0              ldi R25,0
 01A2 8017              cp R24,R16
 01A4 9107              cpc R25,R17
 01A6 CCF3              brlt L58
 01A8                   .dbline -2
 01A8           L57:
 01A8                   .dbline 0 ; func end
 01A8 0895              ret
 01AA                   .dbsym r time 16 I
 01AA                   .dbend
 01AA                   .dbfunc e delay_ms _delay_ms fV
 01AA           ;           time -> R20,R21
                        .even
 01AA           _delay_ms::
 01AA 0E940000          xcall push_gset1
 01AE A801              movw R20,R16
 01B0                   .dbline -1
 01B0                   .dbline 344
 01B0           ; }       
 01B0           ; 
 01B0           ; void delay_ms(unsigned int time)
 01B0           ; {//毫秒级延时程序
 01B0 05C0              xjmp L63
 01B2           L62:
 01B2                   .dbline 346
 01B2                   .dbline 347
 01B2 08EE              ldi R16,1000
 01B4 13E0              ldi R17,3
 01B6 F1DF              xcall _delay_us
 01B8                   .dbline 348
 01B8 4150              subi R20,1
 01BA 5040              sbci R21,0
 01BC                   .dbline 349
 01BC           L63:
 01BC                   .dbline 345
 01BC           ;  while(time!=0)
 01BC 4030              cpi R20,0
 01BE 4507              cpc R20,R21
 01C0 C1F7              brne L62
 01C2           X0:
 01C2                   .dbline -2
 01C2           L61:
 01C2 0E940000          xcall pop_gset1
 01C6                   .dbline 0 ; func end
 01C6 0895              ret
 01C8                   .dbsym r time 20 i
 01C8                   .dbend
                        .area vector(rom, abs)
                        .org 32
 0020 0C94E400          jmp _timer1_ovf_isr
                        .area text(rom, con, rel)
 01C8                   .dbfile E:\temp\avr\bi2\bi2.c
 01C8                   .dbfunc e timer1_ovf_isr _timer1_ovf_isr fV
                        .even
 01C8           _timer1_ovf_isr::
 01C8 2A92              st -y,R2
 01CA 3A92              st -y,R3
 01CC 8A93              st -y,R24
 01CE 2FB6              in R2,0x3f
 01D0 2A92              st -y,R2
 01D2                   .dbline -1
 01D2                   .dbline 354
 01D2           ;  {            
 01D2           ;   delay_us(1000);
 01D2           ;   time--;
 01D2           ;  }
 01D2           ; }             
 01D2           ; 
 01D2           ; #pragma interrupt_handler timer1_ovf_isr:iv_TIMER1_OVF
 01D2           ; void timer1_ovf_isr(void)
 01D2           ;        {
 01D2                   .dbline 355
 01D2           ;         TCNT1=toneconst;
 01D2 20900000          lds R2,_toneconst
 01D6 30900100          lds R3,_toneconst+1
 01DA 3DBC              out 0x2d,R3
 01DC 2CBC              out 0x2c,R2
 01DE                   .dbline 356
 01DE           ;         PORTC^=1;
 01DE 81E0              ldi R24,1
 01E0 25B2              in R2,0x15
 01E2 2826              eor R2,R24
 01E4 25BA              out 0x15,R2
 01E6                   .dbline -2
 01E6           L65:
 01E6 2990              ld R2,y+
 01E8 2FBE              out 0x3f,R2
 01EA 8991              ld R24,y+
 01EC 3990              ld R3,y+
 01EE 2990              ld R2,y+
 01F0                   .dbline 0 ; func end
 01F0 1895              reti
 01F2                   .dbend
 01F2                   .dbfunc e music _music fV
 01F2           ;      sound_add -> R20,R21
 01F2           ;          temp1 -> R22
 01F2           ;           temp -> R10
                        .even
 01F2           _music::
 01F2 0E940000          xcall push_gset3
 01F6 2297              sbiw R28,2
 01F8                   .dbline -1
 01F8                   .dbline 359
 01F8           ;        }               
 01F8           ; void music(void)
 01F8           ;        {
 01F8                   .dbline 361
 01F8           ;         unsigned char temp,temp1;
 01F8           ;         unsigned int sound_add=0;
 01F8 4427              clr R20
 01FA 5527              clr R21
 01FC                   .dbline 362
 01FC           ;         TCCR1A = 0x00;
 01FC 2224              clr R2
 01FE 2FBC              out 0x2f,R2
 0200                   .dbline 363
 0200           ;         TCCR1B =(1<<CS11);//8分频
 0200 82E0              ldi R24,2
 0202 8EBD              out 0x2e,R24
 0204                   .dbline 364
 0204           ;         temp1 = sound[sound_add];
 0204 80E0              ldi R24,<_sound
 0206 90E0              ldi R25,>_sound
 0208 FA01              movw R30,R20
 020A E80F              add R30,R24
 020C F91F              adc R31,R25
 020E 6491              lpm R22,Z
 0210 38C0              xjmp L68
 0212           L67:
 0212                   .dbline 366
 0212           ;         while(temp1!=0)
 0212           ;               {disp_temp(0,0,1);
 0212                   .dbline 366
 0212 81E0              ldi R24,1
 0214 90E0              ldi R25,0
 0216 9983              std y+1,R25
 0218 8883              std y+0,R24
 021A 2227              clr R18
 021C 3327              clr R19
 021E 0027              clr R16
 0220 1127              clr R17
 0222 60D1              xcall _disp_temp
 0224                   .dbline 367
 0224           ;                       temp=temp1; 
 0224 A62E              mov R10,R22
 0226                   .dbline 368
 0226           ;                       temp&=0x0f;
 0226 8A2D              mov R24,R10
 0228 8F70              andi R24,15
 022A A82E              mov R10,R24
 022C                   .dbline 370
 022C           ; 
 022C           ;                       if(temp!=0)
 022C 8823              tst R24
 022E A1F0              breq L70
 0230                   .dbline 371
 0230           ;                         {
 0230                   .dbline 372
 0230           ;                          TIMSK|=(1<<TOIE1);//根据SOUNDTABLE中数据的低四位选择音调频率
 0230 89B7              in R24,0x39
 0232 8460              ori R24,4
 0234 89BF              out 0x39,R24
 0236                   .dbline 373
 0236           ;                          temp--;                         
 0236 AA94              dec R10
 0238                   .dbline 374
 0238           ;                          toneconst=TONETABLE[temp];
 0238 82E0              ldi R24,2
 023A 8A9D              mul R24,R10
 023C F001              movw R30,R0
 023E 80E0              ldi R24,<_TONETABLE
 0240 90E0              ldi R25,>_TONETABLE
 0242 E80F              add R30,R24
 0244 F91F              adc R31,R25
 0246 0590              lpm R0,Z+
 0248 1490              lpm R1,Z
 024A F001              movw R30,R0
 024C F0930100          sts _toneconst+1,R31
 0250 E0930000          sts _toneconst,R30
 0254                   .dbline 375
 0254           ;                          TCNT1=toneconst;
 0254 FDBD              out 0x2d,R31
 0256 ECBD              out 0x2c,R30
 0258                   .dbline 376
 0258           ;                         }
 0258           L70:
 0258                   .dbline 377
 0258 A62E              mov R10,R22
 025A                   .dbline 378
 025A 8A2D              mov R24,R10
 025C 8295              swap R24
 025E 8F70              andi R24,#0x0F
 0260                   .dbline 379
 0260 8F70              andi R24,15
 0262 A82E              mov R10,R24
 0264                   .dbline 380
 0264 81E8              ldi R24,129
 0266 8A9D              mul R24,R10
 0268 8001              movw R16,R0
 026A 9FDF              xcall _delay_ms
 026C                   .dbline 381
 026C 89B7              in R24,0x39
 026E 8B7F              andi R24,251
 0270 89BF              out 0x39,R24
 0272                   .dbline 382
 0272 4F5F              subi R20,255  ; offset = 1
 0274 5F4F              sbci R21,255
 0276                   .dbline 383
 0276 80E0              ldi R24,<_sound
 0278 90E0              ldi R25,>_sound
 027A FA01              movw R30,R20
 027C E80F              add R30,R24
 027E F91F              adc R31,R25
 0280 6491              lpm R22,Z
 0282                   .dbline 384
 0282           L68:
 0282                   .dbline 365
 0282 6623              tst R22
 0284 09F0              breq X1
 0286 C5CF              xjmp L67
 0288           X1:
 0288                   .dbline -2
 0288           L66:
 0288 2296              adiw R28,2
 028A 0E940000          xcall pop_gset3
 028E                   .dbline 0 ; func end
 028E 0895              ret
 0290                   .dbsym r sound_add 20 i
 0290                   .dbsym r temp1 22 c
 0290                   .dbsym r temp 10 c
 0290                   .dbend
 0290                   .dbfunc e timer2_init _timer2_init fV
                        .even
 0290           _timer2_init::
 0290                   .dbline -1
 0290                   .dbline 394
 0290           ;                       temp=temp1;
 0290           ;                       temp>>=4;
 0290           ;                       temp&=0x0f;
 0290           ;                       delay_ms(temp*129);//根据SOUNDTABLE中数据的高四位*5后,为音调持续时间
 0290           ;                       TIMSK&=~(1<<TOIE1);
 0290           ;                       sound_add++;
 0290           ;                       temp1 = sound[sound_add]; 
 0290           ;               }
 0290           ;       //      delay_ms(1000); 
 0290           ;                                               
 0290           ;        }                               
 0290           ; #define delaytime 300
 0290           ; 
 0290           ; //TIMER2 initialisation - prescale:256
 0290           ; // desired value: 1Sec
 0290           ; // actual value:  1.000Sec (0.0%)
 0290           ; void timer2_init(void)
 0290           ; {
 0290                   .dbline 395
 0290           ;  TCCR2 = 0x00; //stop 
 0290 2224              clr R2
 0292 25BC              out 0x25,R2
 0294                   .dbline 396
 0294           ;  ASSR |= (1<<AS2); //set async mode
 0294 82B5              in R24,0x22
 0296 8860              ori R24,8
 0298 82BD              out 0x22,R24
 029A                   .dbline 397
 029A           ;  TCNT2 = 0x80; //setup
 029A 80E8              ldi R24,128
 029C 84BD              out 0x24,R24
 029E                   .dbline 398
 029E           ;  TCCR2 |= (1<<CS22)|(1<<CS21); //start
 029E 85B5              in R24,0x25
 02A0 8660              ori R24,6
 02A2 85BD              out 0x25,R24
 02A4                   .dbline -2
 02A4           L72:
 02A4                   .dbline 0 ; func end
 02A4 0895              ret
 02A6                   .dbend
                        .area vector(rom, abs)
                        .org 16
 0010 0C945301          jmp _timer2_ovf_isr
                        .area text(rom, con, rel)
 02A6                   .dbfile E:\temp\avr\bi2\bi2.c
 02A6                   .dbfunc e timer2_ovf_isr _timer2_ovf_isr fV
                        .even
 02A6           _timer2_ovf_isr::
 02A6 2A92              st -y,R2
 02A8 8A93              st -y,R24
 02AA 2FB6              in R2,0x3f
 02AC 2A92              st -y,R2
 02AE                   .dbline -1
 02AE                   .dbline 403
 02AE           ; }
 02AE           ; 
 02AE           ; #pragma interrupt_handler timer2_ovf_isr:iv_TIMER2_OVF
 02AE           ; void timer2_ovf_isr(void)
 02AE           ; {
 02AE                   .dbline 404
 02AE           ;  TCNT2 = 0x80; //reload counter value
 02AE 80E8              ldi R24,128
 02B0 84BD              out 0x24,R24
 02B2                   .dbline 405
 02B2           ;  PORTB^=1;

⌨️ 快捷键说明

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