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

📄 蜂鸣器唱歌.lst

📁 单片机的实用程序代码
💻 LST
字号:
C51 COMPILER V7.50   蜂胈芲唱歌                                                            08/26/2011 10:26:23 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE 蜂胈芲唱歌
OBJECT MODULE PLACED IN 蜂鸣器唱歌.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 蜂鸣器唱歌.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /********************************************************************
   2          * 文件名  : 蜂鸣器唱歌.c
   3          * 描述    :  该程序实现控制蜂鸣器演奏音乐。                              
   4          * 创建人  : 东流,2009年4月9日
   5          * 版本号  : 2.0
   6          ***********************************************************************/
   7          #include<reg52.h>
   8          #define uchar unsigned char
   9          #define uint  unsigned int
  10          uchar Count;
  11          
  12          sbit Speak =P1^2;                                 //蜂鸣器器控制脚  
  13          /*以下数组是音符编码*/
  14          unsigned char code SONG[] ={      //祝你平安
  15          0x26,0x20,0x20,0x20,0x20,0x20,0x26,0x10,0x20,0x10,0x20,0x80,0x26,0x20,0x30,0x20,
  16          0x30,0x20,0x39,0x10,0x30,0x10,0x30,0x80,0x26,0x20,0x20,0x20,0x20,0x20,0x1c,0x20,
  17          0x20,0x80,0x2b,0x20,0x26,0x20,0x20,0x20,0x2b,0x10,0x26,0x10,0x2b,0x80,0x26,0x20,
  18          0x30,0x20,0x30,0x20,0x39,0x10,0x26,0x10,0x26,0x60,0x40,0x10,0x39,0x10,0x26,0x20,
  19          0x30,0x20,0x30,0x20,0x39,0x10,0x26,0x10,0x26,0x80,0x26,0x20,0x2b,0x10,0x2b,0x10,
  20          0x2b,0x20,0x30,0x10,0x39,0x10,0x26,0x10,0x2b,0x10,0x2b,0x20,0x2b,0x40,0x40,0x20,
  21          0x20,0x10,0x20,0x10,0x2b,0x10,0x26,0x30,0x30,0x80,0x18,0x20,0x18,0x20,0x26,0x20,
  22          0x20,0x20,0x20,0x40,0x26,0x20,0x2b,0x20,0x30,0x20,0x30,0x20,0x1c,0x20,0x20,0x20,
  23          0x20,0x80,0x1c,0x20,0x1c,0x20,0x1c,0x20,0x30,0x20,0x30,0x60,0x39,0x10,0x30,0x10,
  24          0x20,0x20,0x2b,0x10,0x26,0x10,0x2b,0x10,0x26,0x10,0x26,0x10,0x2b,0x10,0x2b,0x80,
  25          0x18,0x20,0x18,0x20,0x26,0x20,0x20,0x20,0x20,0x60,0x26,0x10,0x2b,0x20,0x30,0x20,
  26          0x30,0x20,0x1c,0x20,0x20,0x20,0x20,0x80,0x26,0x20,0x30,0x10,0x30,0x10,0x30,0x20,
  27          0x39,0x20,0x26,0x10,0x2b,0x10,0x2b,0x20,0x2b,0x40,0x40,0x10,0x40,0x10,0x20,0x10,
  28          0x20,0x10,0x2b,0x10,0x26,0x30,0x30,0x80,0x00,
  29                                            //路边的野华不要采
  30          0x30,0x1C,0x10,0x20,0x40,0x1C,0x10,0x18,0x10,0x20,0x10,0x1C,0x10,0x18,0x40,0x1C,
  31          0x20,0x20,0x20,0x1C,0x20,0x18,0x20,0x20,0x80,0xFF,0x20,0x30,0x1C,0x10,0x18,0x20,
  32          0x15,0x20,0x1C,0x20,0x20,0x20,0x26,0x40,0x20,0x20,0x2B,0x20,0x26,0x20,0x20,0x20,
  33          0x30,0x80,0xFF,0x20,0x20,0x1C,0x10,0x18,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,
  34          0x20,0x2B,0x40,0x20,0x20,0x1C,0x10,0x18,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,
  35          0x20,0x2B,0x40,0x20,0x30,0x1C,0x10,0x18,0x20,0x15,0x20,0x1C,0x20,0x20,0x20,0x26,
  36          0x40,0x20,0x20,0x2B,0x20,0x26,0x20,0x20,0x20,0x30,0x80,0x20,0x30,0x1C,0x10,0x20,
  37          0x10,0x1C,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,0x20,0x2B,0x40,0x20,0x15,0x1F,
  38          0x05,0x20,0x10,0x1C,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,0x20,0x2B,0x40,0x20,
  39          0x30,0x1C,0x10,0x18,0x20,0x15,0x20,0x1C,0x20,0x20,0x20,0x26,0x40,0x20,0x20,0x2B,
  40          0x20,0x26,0x20,0x20,0x20,0x30,0x30,0x20,0x30,0x1C,0x10,0x18,0x40,0x1C,0x20,0x20,
  41          0x20,0x26,0x40,0x13,0x60,0x18,0x20,0x15,0x40,0x13,0x40,0x18,0x80,0x00,
  42          
  43          };
  44          
  45          /********************************************************************
  46          * 名称 : Time0_Init()
  47          * 功能 : 定时器的初始化,定时时间可用光碟中软件计算,11.0592MZ晶振,10ms
  48          * 输入 : 无
  49          * 输出 : 无
  50          ***********************************************************************/
  51          void Time0_Init()
  52          {
  53   1              TMOD = 0x01;
  54   1              IE       = 0x82;
  55   1              TH0  = 0xDC;
C51 COMPILER V7.50   蜂胈芲唱歌                                                            08/26/2011 10:26:23 PAGE 2   

  56   1              TL0  = 0x00;            
  57   1      }
  58          
  59          /********************************************************************
  60          * 名称 : Time0_Int()
  61          * 功能 : 定时器中断,中断中实现 Count 加一
  62          * 输入 : 无
  63          * 输出 : 无
  64          ***********************************************************************/
  65          void Time0_Int() interrupt 1
  66          {
  67   1              TH0 = 0xDC;
  68   1              TL0 = 0x00;
  69   1              Count++;                        //长度加1
  70   1      }
  71          
  72          /********************************************************************
  73          * 名称 : Delay_xMs()
  74          * 功能 : 延时子程序,经过软件调试,测得延时程序大概为55us.
  75          * 输入 : x 
  76          * 输出 : 无
  77          ***********************************************************************/
  78          void Delay_xMs(uint x)
  79          {
  80   1          uint i,j;
  81   1          for(i=0; i<x; i++)
  82   1          {
  83   2              for(j=0; j<3; j++);
  84   2          }
  85   1      }
  86          
  87          /********************************************************************
  88          * 名称 : Play_Song()
  89          * 功能 : 播放蜂鸣器控制程序
  90          * 输入 : i (选择播放哪首歌曲,0为“祝你平安”,1为“路边的野花你不要采”
  91          * 输出 : 无
  92          ***********************************************************************/
  93          void Play_Song(uchar i)
  94          {
  95   1              uchar Temp1,Temp2;
  96   1              uint Addr;
  97   1              Count = 0;                                              //中断计数器清0
  98   1              Addr = i * 217;
  99   1              while(1)
 100   1              {
 101   2                      Temp1 = SONG[Addr++];
 102   2                  if (Temp1 == 0xFF)          //休止符
 103   2                  {
 104   3                      TR0 = 0;
 105   3                      Delay_xMs(100);
 106   3                  }
 107   2                  else if (Temp1 == 0x00)       //歌曲结束符
 108   2                  {
 109   3                      return;
 110   3                  }
 111   2                  else
 112   2                  {
 113   3                      Temp2 = SONG[Addr++];
 114   3                      TR0 = 1;
 115   3                              while(1)
 116   3                              {
 117   4                              Speak = ~Speak;
C51 COMPILER V7.50   蜂胈芲唱歌                                                            08/26/2011 10:26:23 PAGE 3   

 118   4                              Delay_xMs(Temp1);
 119   4                              if(Temp2 == Count)
 120   4                              {
 121   5                                      Count = 0;
 122   5                                      break;
 123   5                              }
 124   4                      }
 125   3                  }
 126   2              }
 127   1      }
 128          /********************************************************************
 129          * 名称 : Main()
 130          * 功能 : 主函数
 131          * 输入 : 无
 132          * 输出 : 无
 133          ***********************************************************************/
 134          void Main()
 135          {
 136   1              Time0_Init();                   //定时器0中断初始化
 137   1              while(1)
 138   1              {
 139   2                      Play_Song(0);           //Play_Song(0)为祝你平安    Play_Song(1)为路边的野花你不要裁
 140   2              }
 141   1      }
 142             


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    163    ----
   CONSTANT SIZE    =    407    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      1       3
   IDATA SIZE       =   ----    ----
   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 + -