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

📄 ex5-4.lst

📁 单片机开发液晶显示万年历计算器电子琴电子音乐字母输入
💻 LST
字号:
C51 COMPILER V8.02   EX5_4                                                                 02/27/2009 21:06:12 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE EX5_4
OBJECT MODULE PLACED IN ex5-4.OBJ
COMPILER INVOKED BY: D:\Program Files\keil\C51\BIN\C51.EXE ex5-4.C BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*
   2          标题:范例 5-4
   3          版本:1.0
   4          Target:89S51
   5          程序描述:这个程序利用89S51演奏生日快乐的歌曲 */
   6          /* ***************************************************** */
   7          #include <REGX51.H>
   8          void delay(unsigned char n);     //函数delay()存在 文件delay.c
   9          code unsigned song[]={
  10          0xfc,0xd1,0xc1,0xb1,0xc1,0xd4,0xc1,0xd1,0xf1,0xc1,0xd6,0xc1,0xd1, 0xcc,0x01,0xc1,0xb1,0x91,0x81, 0x94,0x81
             -,0x91,0xb1,0x81,0x98, 
  11          0x86,0x62,0x84,0xb2,0xc2,0xd6,0xc1,0xd1,0xf6,0xd2, 0xc6,0xc2,0x01,0xc2,0xc2,0xb2,0x92,0xb8,0x41,0x51,0x61,
             -0x51,0x61,0x81,0x41,0x51,
  12          0x62,0xd4,0x01,0xd2,0x01,0xd8, 0xc2,0xc1,0xd1,0xd2,0xc2,0xb4,0x92,0x82, 0x66,0x52,0x42,0xb2,0xb2,0x92, 0x8
             -8,0x01,0x81,0x61,0x84,0x01,0x82,
  13          0x92,0xb2,0xb2,0x92,0xb4,0xc1,0xb1,0x91,0x81, 0x62,0x82,0x82,0x81,0x91,0x84,0x42,0x52, 0x62,0x82,0x82,0xb2
             -,0x92,0x82,0x62,0x52, 0x46,0xb2,0x92,0x82,0x61,0x51,0x42,
  14          0x56,0x82,0x82,0x62,0x62,0x52, 0x42,0x42,0x52,0x62,0x86,0x01,0x82, 0x62,0x82,0x82,0xb2,0xb2,0xc2,0xc2,0xc2
             -,0xc1,0xd1, 0xcf,
  15          0xb6,0xc2,0xd4,0xc2,0xb2,0x92,0xb2,0xb2,0x92,0x84,0x64,0x01, 0x66,0x82,0x81,0x91,0x82,0x61,0x51,0x42, 0x5c
             -,0x62,0x82,
  16          0x86,0x92,0x82,0x62,0x84,0x92,0xb2,0xb2,0xc2,0xd8, 0xc6,0x01,0xc2,0xc2,0xc2,0xb2,0x91,0xb1, 0xbf,0x01, 0xb
             -f,0x00};
  17          code int note[]={
  18          0x0000,0xFB03,0xFB8E,0xFC0B,0xFC43,0xFCAB,0xFD08,0xFD32,
  19                                           
  20          0xFD81,0xFDC7,0xFE05,0xFE21,0xFE55,0xFE83,0xFE99,0xFEC0};
  21          unsigned char i=0;
  22          unsigned char hi_note,low_note;
  23          void Delay(unsigned int a)
  24          {
  25   1         unsigned char  i;
  26   1         while(a--)
  27   1         for(i=0;i<125;i++);
  28   1      }
  29          static void timer1_isr(void) interrupt TF1_VECTOR using 2
  30          {
  31   1         TR1=0;
  32   1         TL1=low_note;
  33   1         TH1=hi_note;
  34   1         TR1=1;
  35   1         P0_5=~P0_5;
  36   1      }                                                                                                                                
  37          static void timer1_initialize(void)
  38          {
  39   1         EA=0;
  40   1         TR1=0;
  41   1         TMOD = 0X10;
  42   1         ET1=1;
  43   1         EA=1;
  44   1      }
  45          void singing()
  46          {
  47   1         unsigned int beat,temp;
  48   1         i=0;
C51 COMPILER V8.02   EX5_4                                                                 02/27/2009 21:06:12 PAGE 2   

  49   1         do {
  50   2             temp=song[i];              // 读出乐谱的一个byte
  51   2             if (temp==0) {             // 如果是0就表示音乐结束
  52   3                 TR1=0;                 // 停止计时计数器1
  53   3                 return;                // 返回
  54   3             }
  55   2             beat=temp & 0x0f;          //取出低阶的4位,这是拍子
  56   2             temp=(temp >> 4) & 0x0f;   //取出高阶4位当成音符的频率
  57   2             if (temp==0) TR1=0;        //如果拍子是0就表示休止符
  58   2             else {
  59   3              hi_note=note[temp] >> 8;  //根据音符的频率得到Timer1计数值
  60   3                 low_note=note[temp] & 0x00FF;
  61   3                    TR1=1;              //启动计时计数器1
  62   3             }
  63   2            Delay(140*beat);               // 延迟拍子的时间
  64   2             i++;
  65   2         } while(1); 
  66   1      }    
  67          void main (void)  {
  68   1         timer1_initialize();
  69   1         do {
  70   2              singing();
  71   2         } while (1);                   // 无穷循环
  72   1      }
  73          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    170    ----
   CONSTANT SIZE    =    390    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      3       2
   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 + -