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

📄 buzzer.lst

📁 单片机实现在的电子琴
💻 LST
字号:
C51 COMPILER V8.02   BUZZER                                                                11/19/2008 06:07:56 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE BUZZER
OBJECT MODULE PLACED IN Buzzer.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Buzzer.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          //************************************************************
   2          //Copyright(C)2008,桂林电子科技大学电子工程学院科技协会
   3          //                       “梦想起航”活动例程 播放音乐(1)
   4          //************************************************************
   5          #include <reg51.h>
   6          #include<intrins.h>
   7          
   8          #define uchar unsigned char 
   9          #define uint  unsigned int 
  10          unsigned char m;   //m为频率常数
  11          unsigned char n=0; //n为节拍常数 
  12          unsigned char i=0;
  13          sbit bell = P0^1;
  14          
  15          //////////////////////
  16          unsigned char code music_tab[] ={         //格式为: 频率常数, 节拍常数, 频率常数, 节拍常数,
  17          0x18, 0x30, 0x1C , 0x10, 
  18          0x20, 0x40, 0x1C , 0x10,
  19          0x18, 0x10, 0x20 , 0x10,
  20          0x1C, 0x10, 0x18 , 0x40,
  21          0x1C, 0x20, 0x20 , 0x20,
  22          0x1C, 0x20, 0x18 , 0x20,
  23          0x20, 0x80, 0xFF , 0x20,
  24          0x30, 0x1C, 0x10 , 0x18,
  25          0x20, 0x15, 0x20 , 0x1C,
  26          0x20, 0x20, 0x20 , 0x26,
  27          0x40, 0x20, 0x20 , 0x2B,
  28          0x20, 0x26, 0x20 , 0x20,
  29          0x20, 0x30, 0x80 , 0xFF,
  30          0x20, 0x20, 0x1C , 0x10,
  31          0x18, 0x10, 0x20 , 0x20,
  32          0x26, 0x20, 0x2B , 0x20,
  33          0x30, 0x20, 0x2B , 0x40,
  34          0x20, 0x20, 0x1C , 0x10,
  35          0x18, 0x10, 0x20 , 0x20,
  36          0x26, 0x20, 0x2B , 0x20,
  37          0x30, 0x20, 0x2B , 0x40,
  38          0x20, 0x30, 0x1C , 0x10,
  39          0x18, 0x20, 0x15 , 0x20,
  40          0x1C, 0x20, 0x20 , 0x20,
  41          0x26, 0x40, 0x20 , 0x20,
  42          0x2B, 0x20, 0x26 , 0x20,
  43          0x20, 0x20, 0x30 , 0x80,
  44          0x20, 0x30, 0x1C , 0x10,
  45          0x20, 0x10, 0x1C , 0x10,
  46          0x20, 0x20, 0x26 , 0x20,
  47          0x2B, 0x20, 0x30 , 0x20,
  48          0x2B, 0x40, 0x20 , 0x15,
  49          0x1F, 0x05, 0x20 , 0x10,
  50          0x1C, 0x10, 0x20 , 0x20,
  51          0x26, 0x20, 0x2B , 0x20,
  52          0x30, 0x20, 0x2B , 0x40,
  53          0x20, 0x30, 0x1C , 0x10,
  54          0x18, 0x20, 0x15 , 0x20,
  55          0x1C, 0x20, 0x20 , 0x20,
C51 COMPILER V8.02   BUZZER                                                                11/19/2008 06:07:56 PAGE 2   

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


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    146    ----
   CONSTANT SIZE    =    191    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      3    ----
   IDATA SIZE       =   ----    ----
C51 COMPILER V8.02   BUZZER                                                                11/19/2008 06:07:56 PAGE 3   

   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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