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

📄 main1.lst

📁 这个程序能实现单片机发出两只老虎的音乐
💻 LST
字号:
C51 COMPILER V7.06   MAIN1                                                                 01/28/2008 19:57:21 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE MAIN1
OBJECT MODULE PLACED IN main1.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main1.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          /************************************************************************************
   2          *  Copyright (c) 2008,重庆优易特电子
   3          *            All rights reserved.
   4          
   5          * 摘 要:   播放音乐:两只老虎
   6          
   7          * 文件名称: main.c
   8          * CPU芯片:  STC89C51RC
   9          * 学习板型: Easy51-B 
  10          *  
  11          * 当前版本: 2.0
  12          * 作 者:        cache
  13          * 完成日期: 2008年1月23日
  14          *
  15          *************************************************************************************/
  16                                  #include <reg52.h>
  17                                  #include <intrins.h>
  18          
  19                      #define  FREQ 11059200
  20                  
  21                      unsigned char code music_tab[]={    //两只老虎,高4位为音乐节拍,低4位为音符
  22                                  0x31,0x32,0x33,0x31,0x31,0x32,0x33,0x31,0x33,0x34,0x45,0x33,0x34,0x45,
  23                                  0x25,0x16,0x25,0x14,0x33,0x31,0x25,0x16,0x25,0x14,0x33,0x31,
  24                                  0x31,0x35,0x41,0x31,0x35,0x41,
  25                                  0
  26                      };
  27                      unsigned char code music_l_tab[8]={0,1,2,3,4,6,8,16};//节拍延时单位       
  28                      unsigned char code music_freq_tab[16]={           
  29                          0xff,0xea,                                      //0 休止符
  30                          255-FREQ/24/1049/256,        //1 do 高字节 //255-FREQ/24/x/256
  31                          255-FREQ/24/1049%256,        //1 do 低字节 //256-FREQ/24/x%256
  32                          255-FREQ/24/1178/256,256-FREQ/24/1178%256,        //2 re
  33                          255-FREQ/24/1322/256,256-FREQ/24/1322%256,        //3 mi
  34                          255-FREQ/24/1400/256,256-FREQ/24/1400%256,        //4 fa
  35                          255-FREQ/24/1572/256,256-FREQ/24/1572%256,        //5 suo
  36                          255-FREQ/24/1665/256,256-FREQ/24/1665%256,        //6 la
  37                          255-FREQ/24/1869/256,256-FREQ/24/1869%256,        //7 xi               
  38                      };
  39          
  40                      unsigned char temp_TH1;
  41                      unsigned char temp_TL1;
  42          
  43                      sbit PIN_MSC=P1^4;                   //  音乐输出端口  //
  44                      
  45                      void music_delay(unsigned char x);   //音乐节拍延时
  46                      void music_play(unsigned char *msc); //播放音乐子程序
  47                      
  48                      //---------------------------------------------------------------------------//
  49                      void music_int_t1 (void) interrupt 3 using 1    //定时中断1//
  50                          {
  51   1                      PIN_MSC=~PIN_MSC;
  52   1                      TH1=temp_TH1;
  53   1                      TL1=temp_TL1;
  54   1                  }
  55                      //---------------------------------------------------------------------------//
C51 COMPILER V7.06   MAIN1                                                                 01/28/2008 19:57:21 PAGE 2   

  56                      void music_delay(unsigned char n)     //延时 125*n 毫秒
  57                          {
  58   1                      unsigned char i=125,j;
  59   1                      do {
  60   2                          do {
  61   3                              for (j=0; j<230; j++) _nop_(); 
  62   3                          }while(--i);
  63   2                      }while(--n);
  64   1                  }
  65                      //---------------------------------------------------------------------------//
  66                      void music_play(unsigned char *msc)   //音乐
  67                          {
  68   1                      unsigned char music_long;         //节拍
  69   1                      unsigned char music_data=0;       //音符数据
  70   1                      temp_TH1=0xff;
  71   1                      temp_TL1=0xea;                    //关输出(输出超声波)   
  72   1                      TH1=temp_TH1;
  73   1                      TL1=temp_TL1;
  74   1                                      TR1=1;                            //开T1定时器中断
  75   1                                      
  76   1                  //---------------------------------------------------------
  77   1                      while (*msc != 0x00)
  78   1                          {
  79   2                          music_data=*msc & 0x07;
  80   2                          music_long=*msc>>4;
  81   2                          //---------------------------------------------------------
  82   2                          if (music_long != 0)          //是音符
  83   2                              {
  84   3                              temp_TH1=music_freq_tab[music_data*2];                                          
  85   3                              temp_TL1=music_freq_tab[music_data*2+1];
  86   3                                                      music_delay(music_l_tab[music_long&0x07]); 
  87   3                               }          
  88   2                          msc++;
  89   2                      }
  90   1                      TR1=0;                           //播放结束
  91   1                      PIN_MSC=1;                       //关输出
  92   1                  }
  93                      //---------------------------------------------------------------------------//
  94                      void main(void)                      //示例
  95                      {
  96   1                      TMOD   =  0x11;         // TMOD: 定时器1:模式1:16位;定时器2:模式1:16位   
  97   1                              TR1=0;
  98   1                                      ET1=1;
  99   1                                      EA=1;
 100   1                      while(1)
 101   1                                      {                  
 102   2                                        music_delay(10);      //延时
 103   2                                        music_play(music_tab);//播放音乐
 104   2                      }
 105   1                  }
 106                      //---------------------------------------------------------------------------// 


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    135    ----
   CONSTANT SIZE    =     57    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      2    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.

C51 COMPILER V7.06   MAIN1                                                                 01/28/2008 19:57:21 PAGE 3   


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

⌨️ 快捷键说明

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