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

📄 sound.lis

📁 AVR 8515音乐演示demo程序
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 0042                   .dbline 0 ; func end
 0042 1895              reti
 0044                   .dbfunc s timer1 _timer1 fI
                         .even
 0044                 _timer1::
 0044 2A92              st -y,R2
 0046 8A93              st -y,R24
 0048 2FB6              in R2,0x3f
 004A 2A92              st -y,R2
 004C                   .dbline -1
 004C                   .dbline 63
                       ; /**************************************************
                       ;       T1中断程序,根据SOUND函数输出一定频率的方波
                       ; **************************************************/  
                       ; void timer1(void) 
                       ;     {
 004C                   .dbline 64
                       ;      PORTC^=0x01;
 004C 81E0              ldi R24,1
 004E 25B2              in R2,0x15
 0050 2826              eor R2,R24
 0052 25BA              out 0x15,R2
 0054                   .dbline -2
 0054                   .dbline 65
                       ;     }
 0054                 L3:
 0054 2990              ld R2,y+
 0056 2FBE              out 0x3f,R2
 0058 8991              ld R24,y+
 005A 2990              ld R2,y+
 005C                   .dbline 0 ; func end
 005C 1895              reti
 005E                   .dbfunc s sound _sound fI
                       ;              y -> R10,R11
                       ;              x -> R12,R13
                         .even
 005E                 _sound::
 005E 00D0              rcall push_gset4
 0060 A22E              mov R10,R18
 0062 B32E              mov R11,R19
 0064 C02E              mov R12,R16
 0066 D12E              mov R13,R17
 0068                   .dbline -1
 0068                   .dbline 72
                       ; /*****************************************************
                       ;       SOUND程序,输出频率为 x HZ的方波,延时 y MS
                       ;        x:100~20000 HZ, 0表示不发声
                       ;        y:0~65536 MS
                       ; *****************************************************/     
                       ; void sound(unsigned int x,unsigned int y)
                       ;     {
 0068                   .dbline 73
                       ;        SEI(); 
 0068 7894              sei
 006A                   .dbline 74
                       ;        delay=0; 
 006A 2224              clr R2
 006C 3324              clr R3
 006E 30920100          sts _delay+1,R3
 0072 20920000          sts _delay,R2
 0076                   .dbline 75
                       ;        if (x!=0)
 0076 CC20              tst R12
 0078 11F4              brne X0
 007A DD20              tst R13
 007C 59F1              breq L5
 007E                 X0:
 007E                   .dbline 76
                       ;         {         
 007E                   .dbline 77
                       ;          x=4000000/x; 
 007E 2C2C              mov R2,R12
 0080 3D2C              mov R3,R13
 0082 4424              clr R4
 0084 5524              clr R5
 0086 40E0              ldi R20,0
 0088 59E0              ldi R21,9
 008A 6DE3              ldi R22,61
 008C 70E0              ldi R23,0
 008E 5A92              st -y,R5
 0090 4A92              st -y,R4
 0092 3A92              st -y,R3
 0094 2A92              st -y,R2
 0096 042F              mov R16,R20
 0098 152F              mov R17,R21
 009A 262F              mov R18,R22
 009C 372F              mov R19,R23
 009E 00D0              rcall div32s
 00A0 C02E              mov R12,R16
 00A2 D12E              mov R13,R17
 00A4                   .dbline 78
                       ;          OCR1A=x;   
 00A4 D0924B00          sts 74+1,R13
 00A8 C0924A00          sts 74,R12
 00AC                   .dbline 79
                       ;          TCNT1=0x00;
 00AC 2224              clr R2
 00AE 3324              clr R3
 00B0 30924D00          sts 76+1,R3
 00B4 20924C00          sts 76,R2
 00B8                   .dbline 80
                       ;          TIMSK|=(1<<OCIE1A);
 00B8 89B7              in R24,0x39
 00BA 8061              ori R24,16
 00BC 89BF              out 0x39,R24
 00BE                 L7:
 00BE                   .dbline 82
 00BE                 L8:
 00BE                   .dbline 81
                       ;          while(delay<y)
 00BE 20900000          lds R2,_delay
 00C2 30900100          lds R3,_delay+1
 00C6 2A14              cp R2,R10
 00C8 3B04              cpc R3,R11
 00CA C8F3              brlo L7
 00CC                   .dbline 83
                       ;           ;
                       ;          TIMSK&=~(1<<OCIE1A);      
 00CC 89B7              in R24,0x39
 00CE 8F7E              andi R24,239
 00D0 89BF              out 0x39,R24
 00D2                   .dbline 84
                       ;          }
 00D2 0AC0              rjmp L6
 00D4                 L5:
 00D4                   .dbline 86
                       ;       else
                       ;          {
 00D4                   .dbline 87
                       ;           TIMSK&=~(1<<OCIE1A);
 00D4 89B7              in R24,0x39
 00D6 8F7E              andi R24,239
 00D8 89BF              out 0x39,R24
 00DA                 L10:
 00DA                   .dbline 89
 00DA                 L11:
 00DA                   .dbline 88
                       ;           while(delay<y)
 00DA 20900000          lds R2,_delay
 00DE 30900100          lds R3,_delay+1
 00E2 2A14              cp R2,R10
 00E4 3B04              cpc R3,R11
 00E6 C8F3              brlo L10
 00E8                   .dbline 90
                       ;           ;
                       ;           }
 00E8                 L6:
 00E8                   .dbline 91
                       ;       CLI(); 
 00E8 F894              cli
 00EA                   .dbline -2
 00EA                   .dbline 93
                       ;              
                       ;     }
 00EA                 L4:
 00EA 00D0              rcall pop_gset4
 00EC                   .dbline 0 ; func end
 00EC 0895              ret
 00EE                   .dbsym r y 10 i
 00EE                   .dbsym r x 12 i
 00EE                   .dbfunc s main _main fI
                       ;              i -> R20
                         .even
 00EE                 _main::
 00EE                   .dbline -1
 00EE                   .dbline 98
                       ; /*******************************
                       ;           主程序
                       ; *******************************/  
                       ; void main(void)
                       ;   {
 00EE                   .dbline 99
                       ;    unsigned char i=0;
 00EE 4427              clr R20
 00F0                   .dbline 100
                       ;    music_init();  
 00F0 87DF              rcall _music_init
 00F2 27C0              rjmp L15
 00F4                 X1:
 00F4                   .dbline 102
                       ;    while(1)
                       ;       { 
 00F4                 L17:
 00F4                   .dbline 104
 00F4                   .dbline 105
 00F4 242E              mov R2,R20
 00F6 3324              clr R3
 00F8 220C              lsl R2
 00FA 331C              rol R3
 00FC 220C              lsl R2
 00FE 331C              rol R3
 0100 80E0              ldi R24,<_music_data+2
 0102 90E0              ldi R25,>_music_data+2
 0104 022D              mov R16,R2
 0106 132D              mov R17,R3
 0108 080F              add R16,R24
 010A 191F              adc R17,R25
 010C 00D0              rcall lpm16
 010E 202F              mov R18,R16
 0110 312F              mov R19,R17
 0112 80E0              ldi R24,<_music_data
 0114 90E0              ldi R25,>_music_data
 0116 022D              mov R16,R2
 0118 132D              mov R17,R3
 011A 080F              add R16,R24
 011C 191F              adc R17,R25
 011E 00D0              rcall lpm16
 0120 9EDF              rcall _sound
 0122                   .dbline 106
 0122 4395              inc R20
 0124                   .dbline 107
 0124                 L18:
 0124                   .dbline 103
 0124 80E0              ldi R24,<_music_data+2
 0126 90E0              ldi R25,>_music_data+2
 0128 042F              mov R16,R20
 012A 1127              clr R17
 012C 000F              lsl R16
 012E 111F              rol R17
 0130 000F              lsl R16
 0132 111F              rol R17
 0134 080F              add R16,R24
 0136 191F              adc R17,R25
 0138 00D0              rcall lpm16
 013A 0030              cpi R16,0
 013C 0107              cpc R16,R17
 013E D1F6              brne L17
 0140                   .dbline 108
 0140 4427              clr R20
 0142                   .dbline 109
 0142                 L15:
 0142                   .dbline 101
 0142 F0CF              rjmp L18
 0144                 X2:
 0144                   .dbline -2
 0144                   .dbline 110
                       ;        while(music_data[i][1]!=0)
                       ;            {
                       ;             sound(music_data[i][0],music_data[i][1]);
                       ;             i++;
                       ;             }
                       ;        i=0;     
                       ;        }
                       ;    }
 0144                 L13:
 0144                   .dbline 0 ; func end
 0144 0895              ret
 0146                   .dbsym r i 20 c

⌨️ 快捷键说明

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