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

📄 music.lis

📁 单片机开发资料光盘-双龙-686M.zip
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 003A 8991              ld R24,y+
 003C 8FBF              out 0x3f,R24
 003E 9991              ld R25,y+
 0040 8991              ld R24,y+
 0042                   .dbline 0 ; func end
 0042 1895              reti
 0044                   .dbend
 0044                   .dbfunc e timer1 _timer1 fV
                        .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
 004C           ; /**************************************************
 004C           ;       T1中断程序,根据SOUND函数输出一定频率的方波
 004C           ; **************************************************/  
 004C           ; void timer1(void) 
 004C           ;     {
 004C                   .dbline 64
 004C           ;      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           ;     }
 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                   .dbend
 005E                   .dbfunc e sound _sound fV
 005E           ;              y -> R10,R11
 005E           ;              x -> R12,R13
                        .even
 005E           _sound::
 005E 0E940000          xcall push_gset4
 0062 5901              movw R10,R18
 0064 6801              movw R12,R16
 0066                   .dbline -1
 0066                   .dbline 72
 0066           ; /*****************************************************
 0066           ;       SOUND程序,输出频率为 x HZ的方波,延时 y MS
 0066           ;        x:100~20000 HZ, 0表示不发声
 0066           ;        y:0~65536 MS
 0066           ; *****************************************************/     
 0066           ; void sound(unsigned int x,unsigned int y)
 0066           ;     {
 0066                   .dbline 73
 0066           ;        SEI(); 
 0066 7894              sei
 0068                   .dbline 74
 0068           ;        delay=0; 
 0068 2224              clr R2
 006A 3324              clr R3
 006C 30920100          sts _delay+1,R3
 0070 20920000          sts _delay,R2
 0074                   .dbline 75
 0074           ;        if (x!=0)
 0074 CC20              tst R12
 0076 11F4              brne X0
 0078 DD20              tst R13
 007A 21F1              breq L5
 007C           X0:
 007C                   .dbline 76
 007C           ;         {         
 007C                   .dbline 77
 007C           ;          x=4000000/x; 
 007C 1601              movw R2,R12
 007E 4424              clr R4
 0080 5524              clr R5
 0082 40E0              ldi R20,0
 0084 59E0              ldi R21,9
 0086 6DE3              ldi R22,61
 0088 70E0              ldi R23,0
 008A 5A92              st -y,R5
 008C 4A92              st -y,R4
 008E 3A92              st -y,R3
 0090 2A92              st -y,R2
 0092 8A01              movw R16,R20
 0094 9B01              movw R18,R22
 0096 0E940000          xcall div32s
 009A 6801              movw R12,R16
 009C                   .dbline 78
 009C           ;          OCR1A=x;   
 009C 1BBD              out 0x2b,R17
 009E 0ABD              out 0x2a,R16
 00A0                   .dbline 79
 00A0           ;          TCNT1=0x00;
 00A0 2224              clr R2
 00A2 3324              clr R3
 00A4 3DBC              out 0x2d,R3
 00A6 2CBC              out 0x2c,R2
 00A8                   .dbline 80
 00A8           ;                TIMSK|=(1<<OCIE1A);
 00A8 89B7              in R24,0x39
 00AA 8061              ori R24,16
 00AC 89BF              out 0x39,R24
 00AE           L7:
 00AE                   .dbline 82
 00AE           L8:
 00AE                   .dbline 81
 00AE           ;          while(delay<y)
 00AE 20900000          lds R2,_delay
 00B2 30900100          lds R3,_delay+1
 00B6 2A14              cp R2,R10
 00B8 3B04              cpc R3,R11
 00BA C8F3              brlo L7
 00BC                   .dbline 83
 00BC           ;           ;
 00BC           ;                TIMSK&=~(1<<OCIE1A);      
 00BC 89B7              in R24,0x39
 00BE 8F7E              andi R24,239
 00C0 89BF              out 0x39,R24
 00C2                   .dbline 84
 00C2           ;          }
 00C2 0AC0              xjmp L6
 00C4           L5:
 00C4                   .dbline 86
 00C4           ;       else
 00C4           ;          {
 00C4                   .dbline 87
 00C4           ;           TIMSK&=~(1<<OCIE1A);
 00C4 89B7              in R24,0x39
 00C6 8F7E              andi R24,239
 00C8 89BF              out 0x39,R24
 00CA           L10:
 00CA                   .dbline 89
 00CA           L11:
 00CA                   .dbline 88
 00CA           ;           while(delay<y)
 00CA 20900000          lds R2,_delay
 00CE 30900100          lds R3,_delay+1
 00D2 2A14              cp R2,R10
 00D4 3B04              cpc R3,R11
 00D6 C8F3              brlo L10
 00D8                   .dbline 90
 00D8           ;           ;
 00D8           ;           }
 00D8           L6:
 00D8                   .dbline 91
 00D8           ;       CLI(); 
 00D8 F894              cli
 00DA                   .dbline -2
 00DA                   .dbline 93
 00DA           ;              
 00DA           ;     }
 00DA           L4:
 00DA 0E940000          xcall pop_gset4
 00DE                   .dbline 0 ; func end
 00DE 0895              ret
 00E0                   .dbsym r y 10 i
 00E0                   .dbsym r x 12 i
 00E0                   .dbend
 00E0                   .dbfunc e main _main fV
 00E0           ;              i -> R20
                        .even
 00E0           _main::
 00E0                   .dbline -1
 00E0                   .dbline 98
 00E0           ; /*******************************
 00E0           ;           主程序
 00E0           ; *******************************/  
 00E0           ; void main(void)
 00E0           ;   {
 00E0                   .dbline 99
 00E0           ;    unsigned char i=0;
 00E0 4427              clr R20
 00E2                   .dbline 100
 00E2           ;    music_init();  
 00E2 8EDF              xcall _music_init
 00E4 21C0              xjmp L15
 00E6           X1:
 00E6                   .dbline 102
 00E6           ;    while(1)
 00E6           ;       { 
 00E6           L17:
 00E6                   .dbline 104
 00E6                   .dbline 105
 00E6 84E0              ldi R24,4
 00E8 849F              mul R24,R20
 00EA 1001              movw R2,R0
 00EC 80E0              ldi R24,<_music_data+2
 00EE 90E0              ldi R25,>_music_data+2
 00F0 F101              movw R30,R2
 00F2 E80F              add R30,R24
 00F4 F91F              adc R31,R25
 00F6 2591              lpm R18,Z+
 00F8 3491              lpm R19,Z
 00FA 80E0              ldi R24,<_music_data
 00FC 90E0              ldi R25,>_music_data
 00FE F101              movw R30,R2
 0100 E80F              add R30,R24
 0102 F91F              adc R31,R25
 0104 0591              lpm R16,Z+
 0106 1491              lpm R17,Z
 0108 AADF              xcall _sound
 010A                   .dbline 106
 010A 4395              inc R20
 010C                   .dbline 107
 010C           L18:
 010C                   .dbline 103
 010C 84E0              ldi R24,4
 010E 849F              mul R24,R20
 0110 F001              movw R30,R0
 0112 80E0              ldi R24,<_music_data+2
 0114 90E0              ldi R25,>_music_data+2
 0116 E80F              add R30,R24
 0118 F91F              adc R31,R25
 011A 0590              lpm R0,Z+
 011C 1490              lpm R1,Z
 011E F001              movw R30,R0
 0120 E030              cpi R30,0
 0122 EF07              cpc R30,R31
 0124 01F7              brne L17
 0126           X2:
 0126                   .dbline 108
 0126 4427              clr R20
 0128                   .dbline 109
 0128           L15:
 0128                   .dbline 101
 0128 F1CF              xjmp L18
 012A           X3:
 012A                   .dbline -2
 012A                   .dbline 110
 012A           ;        while(music_data[i][1]!=0)
 012A           ;            {
 012A           ;             sound(music_data[i][0],music_data[i][1]);
 012A           ;             i++;
 012A           ;             }
 012A           ;        i=0;     
 012A           ;        }
 012A           ;    }
 012A           L13:
 012A                   .dbline 0 ; func end
 012A 0895              ret
 012C                   .dbsym r i 20 c
 012C                   .dbend

⌨️ 快捷键说明

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