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

📄 yinyue11.lst

📁 利用MCU51控制蜂鸣器播放乐曲
💻 LST
字号:
C51 COMPILER V7.50   YINYUE11                                                              05/22/2008 16:23:47 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE YINYUE11
OBJECT MODULE PLACED IN yinyue11.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE yinyue11.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <reg51.h>
   2          unsigned char m;   //m为频率常数
   3          unsigned char n=0; //n为节拍常数 
   4          unsigned char i=0;
   5          sbit bell=P1^0;
   6          unsigned char code music_tab[] ={
   7          0x18, 0x30, 0x1C , 0x10, //格式为: 频率常数, 节拍常数, 频率常数, 节拍常数,
   8          0x20, 0x40, 0x1C , 0x10,
   9          0x18, 0x10, 0x20 , 0x10,
  10          0x1C, 0x10, 0x18 , 0x40,
  11          0x1C, 0x20, 0x20 , 0x20,
  12          0x1C, 0x20, 0x18 , 0x20,
  13          0x20, 0x80, 0xFF , 0x20,
  14          0x30, 0x1C, 0x10 , 0x18,
  15          0x20, 0x15, 0x20 , 0x1C,
  16          0x20, 0x20, 0x20 , 0x26,
  17          0x40, 0x20, 0x20 , 0x2B,
  18          0x20, 0x26, 0x20 , 0x20,
  19          0x20, 0x30, 0x80 , 0xFF,
  20          0x20, 0x20, 0x1C , 0x10,
  21          0x18, 0x10, 0x20 , 0x20,
  22          0x26, 0x20, 0x2B , 0x20,
  23          0x30, 0x20, 0x2B , 0x40,
  24          0x20, 0x20, 0x1C , 0x10,
  25          0x18, 0x10, 0x20 , 0x20,
  26          0x26, 0x20, 0x2B , 0x20,
  27          0x30, 0x20, 0x2B , 0x40,
  28          0x20, 0x30, 0x1C , 0x10,
  29          0x18, 0x20, 0x15 , 0x20,
  30          0x1C, 0x20, 0x20 , 0x20,
  31          0x26, 0x40, 0x20 , 0x20,
  32          0x2B, 0x20, 0x26 , 0x20,
  33          0x20, 0x20, 0x30 , 0x80,
  34          0x20, 0x30, 0x1C , 0x10,
  35          0x20, 0x10, 0x1C , 0x10,
  36          0x20, 0x20, 0x26 , 0x20,
  37          0x2B, 0x20, 0x30 , 0x20,
  38          0x2B, 0x40, 0x20 , 0x15,
  39          0x1F, 0x05, 0x20 , 0x10,
  40          0x1C, 0x10, 0x20 , 0x20,
  41          0x26, 0x20, 0x2B , 0x20,
  42          0x30, 0x20, 0x2B , 0x40,
  43          0x20, 0x30, 0x1C , 0x10,
  44          0x18, 0x20, 0x15 , 0x20,
  45          0x1C, 0x20, 0x20 , 0x20,
  46          0x26, 0x40, 0x20 , 0x20,
  47          0x2B, 0x20, 0x26 , 0x20,
  48          0x20, 0x20, 0x30 , 0x30,
  49          0x20, 0x30, 0x1C , 0x10,
  50          0x18, 0x40, 0x1C , 0x20,
  51          0x20, 0x20, 0x26 , 0x40,
  52          0x13, 0x60, 0x18 , 0x20,
  53          0x15, 0x40, 0x13 , 0x40,
  54          0x18, 0x80, 0x00
  55          };
C51 COMPILER V7.50   YINYUE11                                                              05/22/2008 16:23:47 PAGE 2   

  56          
  57          void time0(void)  interrupt 1 using 1  //产生10MS精确定时
  58          {  TH0=(65536-10000)/256;
  59   1         TL0=(65536-10000)%256;
  60   1         n--;
  61   1      }
  62          void delayms(unsigned char a)  //微秒延时程序
  63          {
  64   1        while(--a);                  
  65   1      }
  66          void delay(void)   //延迟程序
  67          {
  68   1       int i,j;
  69   1       for(i=50;i--;i>0)
  70   1        for(j=10000;j--;j>0)
  71   1        ;
  72   1      }
  73          
  74          
  75          void main()
  76          { 
  77   1       
  78   1          TMOD=(TMOD&0xf0)|0x01;
  79   1           TH0=(65536-10000)/256;
  80   1           TL0=(65536-10000)%256;
  81   1           EA=1;
  82   1           ET0=1;
  83   1           TR0=0;   
  84   1           while(1)
  85   1           {
  86   2           switch(music_tab[i])
  87   2           {
  88   3              case 0x00:
  89   3                  i=0;delay(); break; // 曲终停顿一定时间
  90   3              case 0xff:
  91   3                  i=i+1;delayms(100);break;  //遇到休止符停顿一定时间100微秒,再取下一个频率
  92   3              default:
  93   3                     m=music_tab[i++];n=music_tab[i++];//取频率到m,取节拍到n
  94   3        
  95   3                       TR0=1;
  96   3                       while(n!=0)
  97   3                        {
  98   4                         P1=bell;
  99   4                        delayms(4*m);//调整产生的频率,可以通过在m前的值来修正音调的高低
 100   4                                 bell=!bell;
 101   4                         }
 102   3          TR0=0;
 103   3            }
 104   2           }
 105   1      }
 106          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    141    ----
   CONSTANT SIZE    =    191    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      3    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.

C51 COMPILER V7.50   YINYUE11                                                              05/22/2008 16:23:47 PAGE 3   


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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