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

📄 main.lst

📁 QH_MCU_V1.1单片机C源码. 内含实验程序 这是修改版.
💻 LST
字号:
C51 COMPILER V7.07   MAIN                                                                  09/14/2007 13:15:23 PAGE 1   


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

stmt level    source

   1          /************************************************************************
   2          [文件名]  C51音乐程序(八月桂花)
   3          [功能]    通过单片机演奏音乐
   4          
   5          /**********************************************************************/
   6          #include <reg51.h>
   7          #include <intrins.h>
   8          //本例采用89C52, 晶振为11.0592MHZ
   9          //关于如何编制音乐代码, 其实十分简单,各位可以看以下代码.
  10          //频率常数即音乐术语中的音调,而节拍常数即音乐术语中的多少拍;
  11          //所以拿出谱子, 试探编吧!
  12          
  13          sbit onsund = P0^0;
  14          unsigned char n=0;  //n为节拍常数变量
  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 V7.07   MAIN                                                                  09/14/2007 13:15:23 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          unsigned char code music_tab[] =
  68          {
  69          0x26,0x20,0x20,0x20,0x20,0x20,0x26,0x10,0x20,0x10,0x20,0x80,0x26,0x20,0x30,0x20,
  70          0x30,0x20,0x39,0x10,0x30,0x10,0x30,0x80,0x26,0x20,0x20,0x20,0x20,0x20,0x1c,0x20,
  71          0x20,0x80,0x2b,0x20,0x26,0x20,0x20,0x20,0x2b,0x10,0x26,0x10,0x2b,0x80,0x26,0x20,
  72          0x30,0x20,0x30,0x20,0x39,0x10,0x26,0x10,0x26,0x60,0x40,0x10,0x39,0x10,0x26,0x20,
  73          0x30,0x20,0x30,0x20,0x39,0x10,0x26,0x10,0x26,0x80,0x26,0x20,0x2b,0x10,0x2b,0x10,
  74          0x2b,0x20,0x30,0x10,0x39,0x10,0x26,0x10,0x2b,0x10,0x2b,0x20,0x2b,0x40,0x40,0x20,
  75          0x20,0x10,0x20,0x10,0x2b,0x10,0x26,0x30,0x30,0x80,0x18,0x20,0x18,0x20,0x26,0x20,
  76          0x20,0x20,0x20,0x40,0x26,0x20,0x2b,0x20,0x30,0x20,0x30,0x20,0x1c,0x20,0x20,0x20,
  77          0x20,0x80,0x1c,0x20,0x1c,0x20,0x1c,0x20,0x30,0x20,0x30,0x60,0x39,0x10,0x30,0x10,
  78          0x20,0x20,0x2b,0x10,0x26,0x10,0x2b,0x10,0x26,0x10,0x26,0x10,0x2b,0x10,0x2b,0x80,
  79          0x18,0x20,0x18,0x20,0x26,0x20,0x20,0x20,0x20,0x60,0x26,0x10,0x2b,0x20,0x30,0x20,
  80          0x30,0x20,0x1c,0x20,0x20,0x20,0x20,0x80,0x26,0x20,0x30,0x10,0x30,0x10,0x30,0x20,
  81          0x39,0x20,0x26,0x10,0x2b,0x10,0x2b,0x20,0x2b,0x40,0x40,0x10,0x40,0x10,0x20,0x10,
  82          0x20,0x10,0x2b,0x10,0x26,0x30,0x30,0x80,0x00
  83          };*/
  84          unsigned char code music_tab[] =
  85          {
  86          212,212,190,212,159,169,
  87          212,212,190,212,142,159,
  88          212,212,106,126,159,169,190,
  89          119,119,126,159,142,159,
  90          0
  91          };
  92          
  93          void isr_t0()  interrupt 1   //采用中断0 控制节拍
  94          {  TH0 = 0xd8;
  95   1         TL0 = 0xef;
  96   1         n--;
  97   1      }
  98          
  99          void delay (unsigned char m)   //控制频率延时
 100          {
 101   1       unsigned i=m;
 102   1       while(--i);
 103   1      }
 104          
 105          void delayms(unsigned char a)  //豪秒延时子程序
 106          {
 107   1        while(--a);                  //采用while(--a) 不要采用while(a--); 各位可编译一下看看汇编结果就知道了!
 108   1      }
 109          
 110          void main()
 111          { unsigned char tab,m;   //m为频率常数变量
 112   1        unsigned char i = 0;
 113   1        TMOD &= 0x0f;
 114   1        TMOD |= 0x01;
 115   1        TH0 = 0xd8;
 116   1        TL0 = 0xef;
 117   1        IE = 0x82;
C51 COMPILER V7.07   MAIN                                                                  09/14/2007 13:15:23 PAGE 3   

 118   1        EA = 0x01;
 119   1        P2 = 0xf7;
 120   1        P0 = 0xf7;
 121   1        P2 = 0xa7;
 122   1        P0 = 0x00;
 123   1        while(1)
 124   1        {
 125   2           tab=music_tab[i];
 126   2           if(tab==0x00)      
 127   2               { 
 128   3                 i=0;
 129   3             delayms(1000); 
 130   3                 tab=music_tab[i];
 131   3               }     //如果碰到结束符,延时1秒,回到开始再来一遍
 132   2           else if(tab==0xff)  
 133   2               {
 134   3             i=i+1;
 135   3                 delayms(100);
 136   3                 TR0=0; 
 137   3               }  //若碰到休止符,延时100ms,继续取下一音符
 138   2           else         
 139   2               {
 140   3                 m=music_tab[i++];
 141   3             n=music_tab[i++];
 142   3               }  //取频率常数 和 节拍常数
 143   2           TR0=1;                                             //开定时器0
 144   2           while(n!=0) 
 145   2           {
 146   3                 onsund = 0;
 147   3                 delay(m); 
 148   3                 onsund = 1;
 149   3                 delay(m);                         //等待节拍完成
 150   3           }
 151   2           TR0=0;                                             //关定时器0
 152   2        }
 153   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    125    ----
   CONSTANT SIZE    =     26    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      1    ----
   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 + -