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

📄 51

📁 51单片机大量源码
💻
字号:
C51 COMPILER V8.02   MAIN                                                                  07/22/2009 13:49:18 PAGE 1   


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

line level    source

   1          /*************************************************************
   2          程序功能:51单片机演奏单音乐曲
   3          硬件接法:P0.0控制交流蜂鸣器,发声频率等于P0.0的方波振荡频率
   4          **************************************************************/
   5          #include "REG52.H"   //包含所选单片机的定义头文件
   6          sbit SPEAKER = P3^6;     //定义音乐输出口
   7          
   8          typedef struct                  //定义音符结构
   9          {       unsigned int mFreq;     //发声频率(对应的定时器初值)
  10                  unsigned int mDelay;    //发声时值
  11          }CNote;
  12          unsigned char ReloadH;         //定义定时器T1重装值
  13          unsigned char ReloadL;
  14          /************************************************************
  15          函数:T1_ISR()
  16          功能:定时器T1中断服务函数,产生音乐振荡频率
  17          *************************************************************/
  18          void T1_ISR() interrupt 3
  19          {       TR1 = 0;
  20   1              TH1 = ReloadH;
  21   1              TL1 = ReloadL;
  22   1              TR1 = 1;
  23   1              SPEAKER = !SPEAKER;  //音乐声频的半个波
  24   1      }
  25          /*************************************************************
  26          函数:Delay()
  27          功能:延时0.001~65.536s
  28          参数:t>0时,延时(t*0.001)s
  29                t=0时,延时65.536s
  30          *************************************************************/
  31          void Delay(unsigned int t)
  32          {       do
  33   1              {       TH0 = 0xFC;                     //定时器赋初值,定时1ms
  34   2                      TL0 = 0x66+17;
  35   2                      TR0 = 1;                        //启动定时器
  36   2                      while ( !TF0 );         //等待定时器溢出
  37   2                      TR0 = 0;                        //关闭定时器
  38   2                      TF0 = 0;                        //清除溢出标志
  39   2              } while ( --t != 0 );   //循环t次
  40   1      }
  41          /***********************************************************
  42          函数:Sound()
  43          功能:演奏一个音符
  44          参数:*note,音符指针,指向要演奏的音符
  45          ***********************************************************/
  46          void Sound(CNote *note)
  47          {            //利用定时器T1发出音符的频率
  48   1              if ( note->mFreq != 0 )
  49   1              {       ReloadH = (unsigned char)(note->mFreq >> 8);
  50   2                      ReloadL = (unsigned char)(note->mFreq);
  51   2                      TH1 = 0xFF;
  52   2                      TL1 = 0xF0;
  53   2                      TR1 = 1;
  54   2              }
  55   1              Delay(note->mDelay);   //发声延时
C51 COMPILER V8.02   MAIN                                                                  07/22/2009 13:49:18 PAGE 2   

  56   1              TR1 = 0;               //停止发声
  57   1              TF1 = 0;
  58   1              SPEAKER = 1;
  59   1              Delay(5);       
  60   1      }
  61          /************************************************************
  62          函数:Play()
  63          功能:演奏一段乐曲
  64          参数:music[],要演奏的乐曲
  65          *************************************************************/
  66          void Play(CNote music[])
  67          {       unsigned int n = 0;
  68   1              for (;;)
  69   1              {       if ( music[n].mDelay == 0 ) break;
  70   2                      Sound(&(music[n]));
  71   2                      n++;
  72   2              }
  73   1      }
  74          
  75          #include "MusicTab.h"   //包含乐曲头文件
  76          void main()     //主程序
  77          {
  78   1              TMOD = 0x11;    //设定时器
  79   1              ET1 = 1;
  80   1              EA = 1;
  81   1              for (;;)
  82   1              {
  83   2                Play(MusicTab);       //演奏第一首乐曲
  84   2                Delay(500);           //等待数秒
  85   2                Play(MusicTab1);      //演奏第二首乐曲
  86   2                Delay(500);           //等待数秒,再循环播放
  87   2      
  88   2              }
  89   1      }
  90          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    187    ----
   CONSTANT SIZE    =    272    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      2       5
   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 + -