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

📄 蜂鸣器唱歌.lst

📁 一些51单片机基础模块的程序
💻 LST
字号:
C51 COMPILER V7.50   蜂胈芲唱歌                                                            04/10/2009 22:39:38 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE 蜂胈芲唱歌
OBJECT MODULE PLACED IN 蜂鸣器唱歌.obj
COMPILER INVOKED BY: E:\Program Files\Keil\C51\BIN\C51.EXE SRC\蜂鸣器唱歌.c BROWSE DEBUG OBJECTEXTEND PRINT(.\蜂鸣器唱歌
                    -.lst) OBJECT(蜂鸣器唱歌.obj)

line level    source

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

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

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


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    161    ----
   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 + -