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

📄 单音音乐.lst

📁 2010年新增TX-1C程序
💻 LST
字号:
C51 COMPILER V8.02   单____乐                                                              06/19/2010 14:29:57 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE 单____乐
OBJECT MODULE PLACED IN 单音音乐.OBJ
COMPILER INVOKED BY: D:\处理软件\keil\C51\BIN\C51.EXE 单音音乐.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <at89x52.h>
   2          #define uchar unsigned char
   3          bit flag; //标志音乐输出脚电平的高低
   4          uchar ptr = 0x00; //取音符
   5          uchar high; //计数器高位
   6          uchar low; //计数器低位
   7          // 本曲谱为 "新年好",前两个十六进制表示发声频率,后一个表示发声时间,0xFF,0xFF 表示休止符
   8          // 0x00 表示结束
   9          // 1 _ 1_ 1 .5
  10          uchar code music[] = {
  11          0xFC,0x44,0x7F, 0xFC,0x44,0x7F, 0xFC,0x44,0xFF, 0xFA,0x68,0xFF,
  12          // 3 _ 3_ 3 1
  13          0xFD,0x23,0x7F, 0xFD,0x23,0x7F, 0xFD,0x23,0xFF, 0xFC,0x44,0xFF,
  14          // 1_ 3_ 5 5
  15          0xFC,0x44,0x7F, 0xFD,0x23,0x7F, 0xFD,0x82,0xFF, 0xFD,0x82,0xFF,
  16          // 4_ 3_ 2 -
  17          0xFD,0x23,0x7F, 0xFD,0x23,0x7F, 0xFC,0xAC,0xFF, 0xFF,0xFF,0xFF,
  18          // 2_ 3_ 4 4
  19          0xFC,0xAC,0x7F, 0xFD,0x23,0x7F, 0xFD,0x34,0xFF, 0xFD,0x34,0xFF,
  20          // 3_ 2_ 3 1
  21          0xFD,0x23,0x7F, 0xFC,0xAC,0x7F, 0xFD,0x23,0xFF, 0xFC,0x44,0xFF,
  22          // 1_ 3_ 2 .5
  23          0xFC,0x44,0x7F, 0xFD,0x23,0x7F, 0xFC,0xAC,0xFF, 0xFA,0x68,0xFF,
  24           // .7_ 2_ 1 -
  25          0xFC,0x0C,0x7F, 0xFC,0xAC,0x7F, 0xFC,0x44,0xFF, 0xFF,0xFF,0xFF,
  26          0x00//结束
  27          
  28                   
  29          
  30          };
  31          void Init(void); //初始化函数
  32          void DelayMs(unsigned int time); //毫秒级延时函数
  33          main()
  34          {
  35   1      uchar time;
  36   1      Init();
  37   1      TH0 = high;
  38   1      TL0 = low;
  39   1      while (1)
  40   1      {
  41   2      if (music[ptr] != 0xFF && music[ptr] != 0x00)//判断是否是正常音符
  42   2      {
  43   3      TR0 = 0;
  44   3      P2_3 = 1;
  45   3      DelayMs(10); //间歇
  46   3      TR0 = 1;
  47   3      high = music[ptr]; //取设置频率数值的高8 位
  48   3      low = music[ptr + 1]; //取设置频率数值的低8 位
  49   3      time = music[ptr + 2]; //取发声时间
  50   3      DelayMs(time);
  51   3      ptr += 3;
  52   3      }
  53   2      else if (music[ptr] == 0xFF) //判断是否是休止符
  54   2      {
  55   3      time = music[ptr + 2];
C51 COMPILER V8.02   单____乐                                                              06/19/2010 14:29:57 PAGE 2   

  56   3      DelayMs(time);
  57   3      ptr += 3;
  58   3      }
  59   2      
  60   2      else //结束符,停止2 秒后继续
  61   2      {
  62   3      TR0 = 0;
  63   3      P2_3 = 1;
  64   3      DelayMs(2000);
  65   3      ptr = 0;
  66   3      }
  67   2      }
  68   1      }
  69          /*********************************************************************************
  70          * 名称:Count1(void) interrupt 1
  71          * 功能:设置计时器0 溢出中断,每中断一次改变P2_3 引脚电平
  72          *********************************************************************************/
  73          void Count1(void) interrupt 1
  74          {
  75   1      TH0 = high;
  76   1      TL0 = low;
  77   1      if (flag == 0) //改变P2_3 引脚电平
  78   1      {
  79   2      P2_3 = 0;
  80   2      flag = 1;
  81   2      }
  82   1      else
  83   1      {
  84   2      P2_3 = 1;
  85   2      flag = 0;
  86   2      }
  87   1      }
  88          /*********************************************************************************
  89          * 名称:Init()
  90          * 功能:设置计数器0 工作方式,16 位计数,溢出中断方式
  91          **********************************************************************************/
  92          void Init()
  93          {
  94   1      TMOD = 0x01; //定时器0 处于计时方式,16 位
  95   1      EA = 1;
  96   1      ET0 = 1; //定时器0 溢出中断
  97   1      }
  98          /*********************************************************************************
  99          * 名称:DelayMs(unsigned int time)
 100          * 功能:延时time * 1ms 时间
 101          *********************************************************************************/
 102          void DelayMs(unsigned int time)
 103          {
 104   1      unsigned int i;
 105   1      unsigned int j;
 106   1      for (j =0; j < time; j++) //每个循环 约 3ms
 107   1      {
 108   2      for (i =0; i < 363; i++)
 109   2      {;}
 110   2      }
 111   1      }
 112          
 113          
 114          
 115          
 116          
 117          
C51 COMPILER V8.02   单____乐                                                              06/19/2010 14:29:57 PAGE 3   

 118          
 119          
 120          
 121          
 122          
 123          
 124          
 125          
 126          
 127          
 128          
 129          
 130          
 131          
 132          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    160    ----
   CONSTANT SIZE    =     97    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      3       1
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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