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

📄 sound.lst

📁 Keil c工程
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.10   SOUND                                                                 08/29/2005 13:01:45 PAGE 1   


C51 COMPILER V7.10, COMPILATION OF MODULE SOUND
OBJECT MODULE PLACED IN .\out\SOUND.obj
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE c\SOUND.C BROWSE INTVECTOR(0XC000) DEBUG OBJECTEXTEND PRINT(.
                    -\lst\SOUND.lst) OBJECT(.\out\SOUND.obj)

line level    source

   1          
   2          #include "..\h\globle.h"
   3          #include "..\h\io_pin.h"
   4          #include <intrins.h>
   5          #define MUSIC_END 0x00
   6          #define FREQ 16000000
   7          
   8          extern void Delay100uS(word);
   9          
  10          void sound(void)
  11          {
  12   1          SOUND_PIN=0;
  13   1              Delay100uS(2000);       //delay 200ms
  14   1              SOUND_PIN=1;
  15   1      }
  16          void error_sound(void)
  17          {
  18   1      sound();
  19   1      Delay100uS(2000);       //delay 200ms
  20   1      sound();
  21   1      }
  22          //--------------------------------------------------------------------------//
  23          //标 题: 单片机IO口播放乐曲               #define  FREQ 11059200           //
  24          //版 本: V1.00                                                             //
  25          //创建人: 徐文军                         E-mail:xuwenjun@21cn.com           //
  26          //日 期: 02-11-5                                                           //
  27          //描 述: 单片机利用T1中断在IO口P1.0输出乐曲                                //
  28          //--------------------------------------------------------------------------//
  29          //说 明:                                                                   //
  30          //        单片机用T1中断在IO口P1.0输出乐曲(在P1.0口与VCC间接一喇叭即可听到) //
  31          //        1.由于输出的是方波,比较难听:-)你也可以将波形细分用DA输出正弦波   //
  32          //        2.由于T1频繁中断,任何其他中断发生都会是乐曲打顿,只适合试验      //
  33          //        3.优化音符编码:一个字节中包含节拍、音符、升降调,可区分数据和命令//
  34          //                        同时人工将音符译为机器码非常容易。(格式看下面实例)//
  35          //--------------------------------------------------------------------------//
  36          
  37          //音符码格式:| D7 |D6  D5  D4| D3 |D2  D1  D0|
  38          //          |变调|       节拍|升降|     音符 |
  39          
  40          //功能码格式:| D7  D6  D5  D4  | D3  D2  D1  D0|
  41          //          |高4位=0时是功能码|根据低4位散转  |
  42          //最后字节为功能码必须==0x00退出
  43          
  44          
  45          /*********************************************/
  46          byte code music_tab1[]={    //梁祝   
  47              0xcb,                            //示例:0xcb=1100 1011B,即升调,4/16拍,3Mi低音
  48              0x35,0x16,0xb9,0x12,0x96,0x99,0xa5,
  49              0xbd,0x99,0x96,0x15,0x13,0x15,0x62,
  50              0x32,0x13,0xa7,0x26,0x25,0x16,0xa9,0x22,
  51              0xa3,0xa9,0x96,0x15,0x16,0x99,0xe5,
  52              0xbb,0x15,0xa7,0xaa,0x96,0x99,0xd5,
  53              0x13,0x15,0x23,0x15,0x16,0x17,0x9a,0xd6,0x15,0x16,
  54              0xb9,0x12,0x25,0x23,0x23,0x22,0x13,0x12,0x21,0x96,0x15,
C51 COMPILER V7.10   SOUND                                                                 08/29/2005 13:01:45 PAGE 2   

  55              0x43,0xc9,0x96,0x99,0x96,0x15,0x13,0x15,0x16,0x99,
  56              0xd5,                         
  57              MUSIC_END,                            //最后字节为功能码必须==0x00退出
  58          };
  59          byte code music_tab2[]={    //康定情歌
  60              0x23,0x25,0x26,0x16,0x15,    0x36,0x13,0x42,
  61              0x23,0x25,0x26,0x16,0x15,    0x26,0x53,
  62              0x23,0x25,0x26,0x16,0x15,    0x26,0x23,0x42,
  63              0x25,0x23,0x12,0x13,0x12,0x11,    0x22,0xd6,
  64              0x26,0xda,    0x25,0x53,    0x12,0x11,0xd6,
  65              0xad,0x23,0x12,0x13,0x12,0x11,    0x22,0xd6,
  66              MUSIC_END,
  67          };
  68          byte code music_tab3[]={    //美酒加咖啡
  69              0x55,0x23,0x25,0x26,0xa9,0x22,    0x73,
  70              0x45,0x25,0x26,0x23,0x22,0x21,0x23,    0x72,
  71              0x52,0x23,0x45,0x43,    0x22,0x21,0xa6,0x25,0x66,
  72              0xc9,0xa6,0x25,0x23,0x25,0x26,0xa9,    0xf5,
  73              0x45,0x23,0x25,0x46,0xc9,    0x22,0x13,0x12,0x21,0x22,0x63,
  74              0x22,0x23,0x25,0x26,0x25,0x23,0x22,0x21,    0x72,
  75              0x52,0x23,0x45,0x43,    0x22,0x21,0xa6,0x25,0x66,
  76              0xb9,0x12,0x23,0x25,0x22,0xa5,0xab,0x22,    0x71,
  77              MUSIC_END,
  78          };
  79          byte code music_tab4[]={    //北国之春
  80              0x15,0x16,0x75,    0x15,0x16,0x55,0x13,0x15,0x16,0x15,0x16,0x99,0x12,0x13,
  81              0x65,0x45,0x13,0x12,0x11,0x12,    0x73,
  82              0x62,0x42,0x12,0x11,0x96,0x15,    0x76,
  83              0x55,0x23,0x45,0xa9,0x22,    0x53,0x12,0x13,0x65,
  84              0x52,0x22,0x42,0x21,0xa6,    0xe9,0x91,0x12,0x13,0x12,0x13,0x15,0x99,0x12,    //以上为过门
  85              0x20,0x23,0x23,0x23,0x63,    0x22,0x23,0x23,0x22,0x41,0xa6,0x25,
  86              0x53,0x22,0x21,0xa9,0x21,0xa6,    0x75,
  87              0x26,0xa9,0x21,0xa6,0xc9,0x12,0x11,0x96,0x15,
  88              0x23,0x25,0x25,0x26,0x45,0x21,0x22,
  89              0x13,0x35,0x25,0xa9,0xa6,0x25,0x23,0x22,    0x71,
  90              0x52,0x25,0x45,0x13,0x15,0x13,0x12,    0x21,0x41,0x22,0x43,0x45,
  91              0x23,0x25,0x26,0xa9,0x42,0x12,0x33,    0x72,
  92              0x51,0x22,0x43,0x22,0x21,    0xc6,0xc9,0x29,0xc6,0x45,0x23,0x23,
  93              0x53,0x25,0x26,0x25,0x13,0x12,0x21,    0x62,0x42,0x23,0x25,
  94              0x55,0x26,0x25,0x23,0x45,    0x26,0xa9,0x21,0x22,0x63,
  95              0x52,0x22,0x22,0x13,0x12,0x21,0xa6,0xf9,
  96              MUSIC_END,
  97          };
  98          
  99          /***************************************************************/
 100          
 101          void PlayMusic(byte index)
 102          {
 103   1      extern void music_play(byte *);
 104   1      byte *p;
 105   1      
 106   1      switch(index)
 107   1              {
 108   2               case 1:p=music_tab1;break;
 109   2               case 2:p=music_tab2;break;
 110   2               case 3:p=music_tab3;break;
 111   2               case 4:p=music_tab4;break;
 112   2               default:break;
 113   2              }
 114   1      
 115   1      music_play(p);
 116   1      }
C51 COMPILER V7.10   SOUND                                                                 08/29/2005 13:01:45 PAGE 3   

 117          
 118          
 119          byte code music_l_tab[8]={0,1,2,3,4,6,8,16};//节拍延时单位
 120          byte code music_freq_tab[64]={             //音符定时器值表
 121              0xff,0xea,                                      //0 休止符
 122              255-FREQ/24/131/256,     //256-FREQ/24/x/256    //1 do 高字节
 123              256-FREQ/24/131%256,     //256-FREQ/24/x%256    //1 do 低字节
 124              255-FREQ/24/147/256,256-FREQ/24/147%256,        //2 re
 125              255-FREQ/24/165/256,256-FREQ/24/165%256,        //3 mi
 126              255-FREQ/24/175/256,256-FREQ/24/175%256,        //4 fa
 127              255-FREQ/24/196/256,256-FREQ/24/196%256,        //5 suo
 128              255-FREQ/24/221/256,256-FREQ/24/221%256,        //6 la
 129              255-FREQ/24/248/256,256-FREQ/24/248%256,        //7 xi
 130          
 131              0xff,0xea,                                      //0 休止符
 132              255-FREQ/24/262/256,256-FREQ/24/262%256,        //1 do
 133              255-FREQ/24/294/256,256-FREQ/24/294%256,        //2 re
 134              255-FREQ/24/330/256,256-FREQ/24/330%256,        //3 mi
 135              255-FREQ/24/350/256,256-FREQ/24/350%256,        //4 fa
 136              255-FREQ/24/393/256,256-FREQ/24/393%256,        //5 suo
 137              255-FREQ/24/441/256,256-FREQ/24/441%256,        //6 la
 138              255-FREQ/24/495/256,256-FREQ/24/495%256,        //7 xi
 139          
 140              0xff,0xea,                                      //0 休止符
 141              255-FREQ/24/525/256,256-FREQ/24/525%256,        //1 do
 142              255-FREQ/24/589/256,256-FREQ/24/589%256,        //2 re
 143              255-FREQ/24/661/256,256-FREQ/24/661%256,        //3 mi

⌨️ 快捷键说明

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