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

📄 music.lis

📁 avr单片机atmage16驱动小灯的一些例程 并且包括一些收发数据的程序利用usb口
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 001E 0895              ret
 0020                   .dbsym r a 20 c
 0020                   .dbsym r i 16 i
 0020                   .dbend
 0020                   .dbfunc e port_init _port_init fV
                        .even
 0020           _port_init::
 0020                   .dbline -1
 0020                   .dbline 61
 0020           ;                   {
 0020           ;                       ;
 0020           ;                       }
 0020           ;               }
 0020           ;       }
 0020           ; 
 0020           ; /************************************
 0020           ; *         端口初始化函数                      *
 0020           ; ************************************/
 0020           ; void port_init(void)
 0020           ;     {
 0020                   .dbline 62
 0020           ;       DDRD=0xff;                                               //D口配置为输出,驱动蜂鸣器
 0020 8FEF              ldi R24,255
 0022 81BB              out 0x11,R24
 0024                   .dbline 63
 0024           ;       DDRB=0xff;                                               //B口配置为输出,驱动LED
 0024 87BB              out 0x17,R24
 0026                   .dbline 64
 0026           ;       PORTB=0xff;                                              //LED初值为灭
 0026 88BB              out 0x18,R24
 0028                   .dbline -2
 0028           L10:
 0028                   .dbline 0 ; func end
 0028 0895              ret
 002A                   .dbend
 002A                   .dbfunc e sound _sound fV
 002A           ;              x -> R10,R11
 002A           ;              i -> R10
                        .even
 002A           _sound::
 002A 0E940000          xcall push_gset3
 002E A02E              mov R10,R16
 0030                   .dbline -1
 0030                   .dbline 74
 0030           ;       }
 0030           ; 
 0030           ; /***********************************
 0030           ; *           音乐产生函数                 *
 0030           ; * 功能:输出频率为x的方波,延时y MS*
 0030           ; * 范围:x:100-20000Hz,0:不发声   *
 0030           ; *         y:0-65536 MS                           *
 0030           ; ***********************************/
 0030           ; void sound(uchar i)
 0030           ;     {
 0030                   .dbline 76
 0030           ;       uint x;
 0030           ;       x=music_data[i][0];                             //取音乐的频率数据
 0030 84E0              ldi R24,4
 0032 8A9D              mul R24,R10
 0034 F001              movw R30,R0
 0036 80E0              ldi R24,<_music_data
 0038 90E0              ldi R25,>_music_data
 003A E80F              add R30,R24
 003C F91F              adc R31,R25
 003E A590              lpm R10,Z+
 0040 B490              lpm R11,Z
 0042                   .dbline 77
 0042           ;       if(x!=0)
 0042 AA20              tst R10
 0044 11F4              brne X1
 0046 BB20              tst R11
 0048 A9F0              breq L12
 004A           X1:
 004A                   .dbline 78
 004A           ;           {
 004A                   .dbline 79
 004A           ;               x=500000/x;                                     //1M时钟数据计算
 004A 1501              movw R2,R10
 004C 4424              clr R4
 004E 5524              clr R5
 0050 40E2              ldi R20,32
 0052 51EA              ldi R21,161
 0054 67E0              ldi R22,7
 0056 70E0              ldi R23,0
 0058 5A92              st -y,R5
 005A 4A92              st -y,R4
 005C 3A92              st -y,R3
 005E 2A92              st -y,R2
 0060 8A01              movw R16,R20
 0062 9B01              movw R18,R22
 0064 0E940000          xcall div32s
 0068 5801              movw R10,R16
 006A                   .dbline 80
 006A           ;               OCR1A=x;                                        //比较值赋值
 006A 1BBD              out 0x2b,R17
 006C 0ABD              out 0x2a,R16
 006E                   .dbline 81
 006E           ;               TCCR1A = 0x40;                          //允许比较反转输出
 006E 80E4              ldi R24,64
 0070 8FBD              out 0x2f,R24
 0072                   .dbline 82
 0072           ;               }
 0072 02C0              xjmp L13
 0074           L12:
 0074                   .dbline 84
 0074                   .dbline 85
 0074 2224              clr R2
 0076 2FBC              out 0x2f,R2
 0078                   .dbline 86
 0078           L13:
 0078                   .dbline -2
 0078           L11:
 0078 0E940000          xcall pop_gset3
 007C                   .dbline 0 ; func end
 007C 0895              ret
 007E                   .dbsym r x 10 i
 007E                   .dbsym r i 10 c
 007E                   .dbend
 007E                   .dbfunc e main _main fV
 007E           ;              i -> R20
                        .even
 007E           _main::
 007E                   .dbline -1
 007E                   .dbline 92
 007E           ;       else
 007E           ;               {
 007E           ;               TCCR1A = 0x00;                          //频率为0,休止符,不发声
 007E           ;               }
 007E           ;       }
 007E           ; /*******************************
 007E           ; *             主函数             *
 007E           ; *******************************/
 007E           ; void main(void)
 007E           ;       {
 007E                   .dbline 93
 007E           ;       uchar i=0;
 007E 4427              clr R20
 0080                   .dbline 94
 0080           ;       port_init();                                    //端口初始化
 0080 CFDF              xcall _port_init
 0082                   .dbline 95
 0082           ;       TCCR1A = 0x40;                                  //将T/C1配置为比较匹配,OC1A取反
 0082 80E4              ldi R24,64
 0084 8FBD              out 0x2f,R24
 0086                   .dbline 96
 0086           ;       TCCR1B = 0x09;
 0086 89E0              ldi R24,9
 0088 8EBD              out 0x2e,R24
 008A 25C0              xjmp L16
 008C           X2:
 008C                   .dbline 98
 008C           ;       while(1)
 008C           ;           {
 008C           L18:
 008C                   .dbline 100
 008C                   .dbline 101
 008C 042F              mov R16,R20
 008E CDDF              xcall _sound
 0090                   .dbline 102
 0090 84E0              ldi R24,4
 0092 849F              mul R24,R20
 0094 F001              movw R30,R0
 0096 80E0              ldi R24,<_music_data+2
 0098 90E0              ldi R25,>_music_data+2
 009A E80F              add R30,R24
 009C F91F              adc R31,R25
 009E 0591              lpm R16,Z+
 00A0 1491              lpm R17,Z
 00A2 AEDF              xcall _delay_ms
 00A4                   .dbline 103
 00A4 2224              clr R2
 00A6 2FBC              out 0x2f,R2
 00A8                   .dbline 104
 00A8 80E2              ldi R24,32
 00AA 28B2              in R2,0x18
 00AC 2826              eor R2,R24
 00AE 28BA              out 0x18,R2
 00B0                   .dbline 105
 00B0 959A              sbi 0x12,5
 00B2                   .dbline 106
 00B2 4395              inc R20
 00B4                   .dbline 107
 00B4           L19:
 00B4                   .dbline 99
 00B4 84E0              ldi R24,4
 00B6 849F              mul R24,R20
 00B8 F001              movw R30,R0
 00BA 80E0              ldi R24,<_music_data+2
 00BC 90E0              ldi R25,>_music_data+2
 00BE E80F              add R30,R24
 00C0 F91F              adc R31,R25
 00C2 0590              lpm R0,Z+
 00C4 1490              lpm R1,Z
 00C6 F001              movw R30,R0
 00C8 E030              cpi R30,0
 00CA EF07              cpc R30,R31
 00CC F9F6              brne L18
 00CE           X3:
 00CE                   .dbline 108
 00CE 08EE              ldi R16,1000
 00D0 13E0              ldi R17,3
 00D2 96DF              xcall _delay_ms
 00D4                   .dbline 109
 00D4 4427              clr R20
 00D6                   .dbline 110
 00D6           L16:
 00D6                   .dbline 97
 00D6 EECF              xjmp L19
 00D8           X4:
 00D8                   .dbline -2
 00D8           L14:
 00D8                   .dbline 0 ; func end
 00D8 0895              ret
 00DA                   .dbsym r i 20 c
 00DA                   .dbend

⌨️ 快捷键说明

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