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

📄 diy0816_10.lis

📁 AVR单片机应用开发指南及实例,包含许多实例,挺不错
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 0028           X0:
 0028                   .dbline -2
 0028           L5:
 0028 0E940000          xcall pop_gset1
 002C                   .dbline 0 ; func end
 002C 0895              ret
 002E                   .dbsym r time 20 i
 002E                   .dbend
                        .area vector(rom, abs)
                        .org 32
 0020 0C941700          jmp _timer1_ovf_isr
                        .area text(rom, con, rel)
 002E                   .dbfile D:\SL-DIY~1\diy0208_16_10\diy0816_10.c
 002E                   .dbfunc e timer1_ovf_isr _timer1_ovf_isr fV
                        .even
 002E           _timer1_ovf_isr::
 002E 2A92              st -y,R2
 0030 3A92              st -y,R3
 0032 8A93              st -y,R24
 0034 2FB6              in R2,0x3f
 0036 2A92              st -y,R2
 0038                   .dbline -1
 0038                   .dbline 112
 0038           ;  {            
 0038           ;   delay_us(1000);
 0038           ;   time--;
 0038           ;  }
 0038           ; }             
 0038           ; 
 0038           ; unsigned int toneconst;                                                                                                                                                                                                                        
 0038           ; #pragma interrupt_handler timer1_ovf_isr:iv_TIMER1_OVF
 0038           ; void timer1_ovf_isr(void)
 0038           ;        {
 0038                   .dbline 113
 0038           ;         TCNT1=toneconst;
 0038 20900000          lds R2,_toneconst
 003C 30900100          lds R3,_toneconst+1
 0040 3DBC              out 0x2d,R3
 0042 2CBC              out 0x2c,R2
 0044                   .dbline 114
 0044           ;         PORTC^=1;
 0044 81E0              ldi R24,1
 0046 25B2              in R2,0x15
 0048 2826              eor R2,R24
 004A 25BA              out 0x15,R2
 004C                   .dbline -2
 004C           L9:
 004C 2990              ld R2,y+
 004E 2FBE              out 0x3f,R2
 0050 8991              ld R24,y+
 0052 3990              ld R3,y+
 0054 2990              ld R2,y+
 0056                   .dbline 0 ; func end
 0056 1895              reti
 0058                   .dbend
 0058                   .dbfunc e music _music fV
 0058           ;      sound_add -> R20,R21
 0058           ;          temp1 -> R22
 0058           ;           temp -> R10
                        .even
 0058           _music::
 0058 0E940000          xcall push_gset3
 005C                   .dbline -1
 005C                   .dbline 117
 005C           ;        }               
 005C           ; void music(void)
 005C           ;        {
 005C                   .dbline 119
 005C           ;         unsigned char temp,temp1;
 005C           ;         unsigned int sound_add=0;
 005C 4427              clr R20
 005E 5527              clr R21
 0060                   .dbline 120
 0060           ;         TCCR1A = 0x00;
 0060 2224              clr R2
 0062 2FBC              out 0x2f,R2
 0064                   .dbline 121
 0064           ;         TCCR1B =(1<<CS11);//8分频
 0064 82E0              ldi R24,2
 0066 8EBD              out 0x2e,R24
 0068                   .dbline 122
 0068           ;         temp1 = sound[sound_add];
 0068 80E0              ldi R24,<_sound
 006A 90E0              ldi R25,>_sound
 006C FA01              movw R30,R20
 006E E80F              add R30,R24
 0070 F91F              adc R31,R25
 0072 6491              lpm R22,Z
 0074 2FC0              xjmp L12
 0076           L11:
 0076                   .dbline 124
 0076           ;         while(temp1!=0)
 0076           ;                       {
 0076                   .dbline 125
 0076           ;                       temp=temp1; 
 0076 A62E              mov R10,R22
 0078                   .dbline 126
 0078           ;                       temp&=0x0f;
 0078 8A2D              mov R24,R10
 007A 8F70              andi R24,15
 007C A82E              mov R10,R24
 007E                   .dbline 127
 007E           ;                       if(temp!=0)
 007E 8823              tst R24
 0080 A1F0              breq L14
 0082                   .dbline 128
 0082           ;                         {
 0082                   .dbline 129
 0082           ;                          TIMSK|=(1<<TOIE1);//根据SOUNDTABLE中数据的低四位选择音调频率
 0082 89B7              in R24,0x39
 0084 8460              ori R24,4
 0086 89BF              out 0x39,R24
 0088                   .dbline 130
 0088           ;                          temp--;                         
 0088 AA94              dec R10
 008A                   .dbline 131
 008A           ;                  toneconst=TONETABLE[temp];
 008A 82E0              ldi R24,2
 008C 8A9D              mul R24,R10
 008E F001              movw R30,R0
 0090 80E0              ldi R24,<_TONETABLE
 0092 90E0              ldi R25,>_TONETABLE
 0094 E80F              add R30,R24
 0096 F91F              adc R31,R25
 0098 0590              lpm R0,Z+
 009A 1490              lpm R1,Z
 009C F001              movw R30,R0
 009E F0930100          sts _toneconst+1,R31
 00A2 E0930000          sts _toneconst,R30
 00A6                   .dbline 132
 00A6           ;                          TCNT1=toneconst;
 00A6 FDBD              out 0x2d,R31
 00A8 ECBD              out 0x2c,R30
 00AA                   .dbline 133
 00AA           ;                         }
 00AA           L14:
 00AA                   .dbline 134
 00AA A62E              mov R10,R22
 00AC                   .dbline 135
 00AC 8A2D              mov R24,R10
 00AE 8295              swap R24
 00B0 8F70              andi R24,#0x0F
 00B2                   .dbline 136
 00B2 8F70              andi R24,15
 00B4 A82E              mov R10,R24
 00B6                   .dbline 137
 00B6 81E8              ldi R24,129
 00B8 8A9D              mul R24,R10
 00BA 8001              movw R16,R0
 00BC A9DF              xcall _delay_ms
 00BE                   .dbline 138
 00BE 89B7              in R24,0x39
 00C0 8B7F              andi R24,251
 00C2 89BF              out 0x39,R24
 00C4                   .dbline 139
 00C4 4F5F              subi R20,255  ; offset = 1
 00C6 5F4F              sbci R21,255
 00C8                   .dbline 140
 00C8 80E0              ldi R24,<_sound
 00CA 90E0              ldi R25,>_sound
 00CC FA01              movw R30,R20
 00CE E80F              add R30,R24
 00D0 F91F              adc R31,R25
 00D2 6491              lpm R22,Z
 00D4                   .dbline 141
 00D4           L12:
 00D4                   .dbline 123
 00D4 6623              tst R22
 00D6 79F6              brne L11
 00D8                   .dbline 142
 00D8           ;                       temp=temp1;
 00D8           ;                       temp>>=4;
 00D8           ;                       temp&=0x0f;
 00D8           ;                       delay_ms(temp*129);//根据SOUNDTABLE中数据的高四位*5后,为音调持续时间
 00D8           ;                       TIMSK&=~(1<<TOIE1);
 00D8           ;                       sound_add++;
 00D8           ;                       temp1 = sound[sound_add]; 
 00D8           ;                       }
 00D8           ;               delay_ms(1000);                                                 
 00D8 08EE              ldi R16,1000
 00DA 13E0              ldi R17,3
 00DC 99DF              xcall _delay_ms
 00DE                   .dbline -2
 00DE           L10:
 00DE 0E940000          xcall pop_gset3
 00E2                   .dbline 0 ; func end
 00E2 0895              ret
 00E4                   .dbsym r sound_add 20 i
 00E4                   .dbsym r temp1 22 c
 00E4                   .dbsym r temp 10 c
 00E4                   .dbend
 00E4                   .dbfunc e main _main fV
                        .even
 00E4           _main::
 00E4                   .dbline -1
 00E4                   .dbline 146
 00E4           ;        }                               
 00E4           ; /*                             主程序                                 */        
 00E4           ; void main(void)
 00E4           ;        {
 00E4                   .dbline 147
 00E4           ;         DDRB=0x00;
 00E4 2224              clr R2
 00E6 27BA              out 0x17,R2
 00E8                   .dbline 148
 00E8           ;         PORTB=0xff;
 00E8 8FEF              ldi R24,255
 00EA 88BB              out 0x18,R24
 00EC                   .dbline 149
 00EC           ;         DDRC=0x01;
 00EC 81E0              ldi R24,1
 00EE 84BB              out 0x14,R24
 00F0                   .dbline 150
 00F0           ;         PORTC=0xff;
 00F0 8FEF              ldi R24,255
 00F2 85BB              out 0x15,R24
 00F4                   .dbline 151
 00F4           ;         SEI();
 00F4 7894              sei
 00F6           L17:
 00F6                   .dbline 153
 00F6           L18:
 00F6                   .dbline 153
 00F6           ;       
 00F6           ;         while(PINB & 0x01);//等待PB0按键按下  
 00F6 B099              sbic 0x16,0
 00F8 FECF              rjmp L17
 00FA 01C0              xjmp L21
 00FC           L20:
 00FC                   .dbline 156
 00FC                   .dbline 157
 00FC ADDF              xcall _music
 00FE                   .dbline 158
 00FE           L21:
 00FE                   .dbline 155
 00FE FECF              xjmp L20
 0100           X1:
 0100                   .dbline -2
 0100           L16:
 0100                   .dbline 0 ; func end
 0100 0895              ret
 0102                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile D:\SL-DIY~1\diy0208_16_10\diy0816_10.c
 0000           _toneconst::
 0000                   .blkb 2
 0002                   .dbsym e toneconst _toneconst i

⌨️ 快捷键说明

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