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

📄 musicbox.lst

📁 基于STC89C52单片机的3音阶电子琴 带自动播放
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.05a   MUSICBOX                                                             03/30/2009 13:25:08 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE MUSICBOX
OBJECT MODULE PLACED IN MusicBox.OBJ
COMPILER INVOKED BY: C:\Program Files\Keil\C51\BIN\C51.EXE MusicBox.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #define uchar unsigned char //定义一下方便使用
   2          #define uint unsigned int
   3          #define ulong unsigned long
   4          #include <reg52.h> //包括一个52标准内核的头文件
   5          
   6          char code dx516[3] _at_ 0x003b;//这是为了仿真设置的
   7          sbit BEEP=P2^0; //喇叭输出脚
   8          sbit K0= P1^0;
   9          
  10          sbit LED1= P0^0;
  11          sbit LED2= P0^1;
  12          sbit LED3= P0^2;
  13          sbit LED4= P0^3;
  14          sbit LED5= P0^4;
  15          sbit LED6= P0^5;
  16          sbit LED7= P0^6;
  17          
  18          sbit K1= P3^1;
  19          sbit K2= P3^2;
  20          sbit K3= P3^3;
  21          sbit K4= P3^4;
  22          sbit K5= P3^5;
  23          sbit K6= P3^6;
  24          sbit K7= P3^7;
  25          
  26          sbit K8= P1^1;
  27          sbit K9= P1^2;
  28          sbit K10= P1^3;
  29          sbit K11= P1^4;
  30          sbit K12= P1^5;
  31          sbit K13= P1^6;
  32          sbit K14= P1^7;
  33          
  34          sbit K15= P2^1; 
  35          sbit K16= P2^2;
  36          sbit K17= P2^3;
  37          sbit K18= P2^4;
  38          sbit K19= P2^5;
  39          sbit K20= P2^6;
  40          sbit K21= P2^7;
  41          
  42          
  43          uchar th0_f; //在中断中装载的T0的值高8位
  44          uchar tl0_f; //在中断中装载的T0的值低8位
  45          //T0的值,及输出频率对照表
  46          uchar code freq[36*2]={
  47          0xA9,0xEF,//00220HZ ,1 //0
  48          0x93,0xF0,//00233HZ ,1#//1
  49          0x73,0xF1,//00247HZ ,2 //2
  50          0x49,0xF2,//00262HZ ,2#//3
  51          0x07,0xF3,//00277HZ ,3 //4
  52          0xC8,0xF3,//00294HZ ,4 //5
  53          0x73,0xF4,//00311HZ ,4#//6
  54          0x1E,0xF5,//00330HZ ,5 //7
  55          0xB6,0xF5,//00349HZ ,5#//8
C51 COMPILER V8.05a   MUSICBOX                                                             03/30/2009 13:25:08 PAGE 2   

  56          0x4C,0xF6,//00370HZ ,6 //9
  57          0xD7,0xF6,//00392HZ ,6#//10
  58          0x5A,0xF7,//00415HZ ,7 //11
  59          0xD8,0xF7,//00440HZ 1  //12
  60          0x4D,0xF8,//00466HZ 1# //13
  61          0xBD,0xF8,//00494HZ 2  //14
  62          0x24,0xF9,//00523HZ 2# //15
  63          0x87,0xF9,//00554HZ 3  //16
  64          0xE4,0xF9,//00587HZ 4  //17
  65          0x3D,0xFA,//00622HZ 4# //18
  66          0x90,0xFA,//00659HZ 5  //19
  67          0xDE,0xFA,//00698HZ 5# //20
  68          0x29,0xFB,//00740HZ 6  //21
  69          0x6F,0xFB,//00784HZ 6# //22
  70          0xB1,0xFB,//00831HZ 7  //23
  71          0xEF,0xFB,//00880HZ `1 //24
  72          0x2A,0xFC,//00932HZ `1#//25
  73          0x62,0xFC,//00988HZ `2 //26
  74          0x95,0xFC,//01046HZ `2#//27
  75          0xC7,0xFC,//01109HZ `3 //28
  76          0xF6,0xFC,//01175HZ `4 //29
  77          0x22,0xFD,//01244HZ `4#//30
  78          0x4B,0xFD,//01318HZ `5 //31
  79          0x73,0xFD,//01397HZ `5#//32
  80          0x98,0xFD,//01480HZ `6 //33
  81          0xBB,0xFD,//01568HZ `6#//34
  82          0xDC,0xFD,//01661HZ `7 //35
  83          };
  84          //定时中断0,用于产生唱歌频率
  85          timer0() interrupt 1
  86          {
  87   1      TL0=tl0_f;TH0=th0_f; //调入预定时值
  88   1      BEEP=~BEEP; //取反音乐输出IO
  89   1      }
  90          
  91          //按键控制音阶声音输出(电子琴)
  92          void main(void) // 主程序
  93          {
  94   1      ulong n;
  95   1      uchar code jie8[21]={0,2,4,5,7,9,11,12,14,16,17,19,21,23,24,26,28,29,31,33,35};//1234567`1八个音符在频率表
             -中的位置
  96   1      TMOD = 0x01; //使用定时器0的16位工作模式
  97   1      TR0 = 0;
  98   1      ET0 = 1;
  99   1      EA = 1;
 100   1      while(1)
 101   1      {
 102   2      
 103   2      
 104   2      if(!K0)
 105   2      {
 106   3      tl0_f=freq[jie8[16]*2]; //置一个音符的值
 107   3      th0_f=freq[jie8[16]*2+1];
 108   3      TR0 = 1;
 109   3      if(K0) goto     tanzou;
 110   3      for(n=0;n<12000;n++); //延时
 111   3      tl0_f=freq[jie8[19]*2]; //置一个音符的值
 112   3      th0_f=freq[jie8[19]*2+1];
 113   3      TR0 = 1;
 114   3      if(K0) goto     tanzou;
 115   3      for(n=0;n<12000;n++); //延时
 116   3      tl0_f=freq[jie8[16]*2]; //置一个音符的值
C51 COMPILER V8.05a   MUSICBOX                                                             03/30/2009 13:25:08 PAGE 3   

 117   3      th0_f=freq[jie8[16]*2+1];
 118   3      TR0 = 1;
 119   3      if(K0) goto     tanzou;
 120   3      for(n=0;n<12000;n++); //延时
 121   3      tl0_f=freq[jie8[14]*2]; //置一个音符的值
 122   3      th0_f=freq[jie8[14]*2+1];
 123   3      TR0 = 1;
 124   3      if(K0) goto     tanzou;
 125   3      for(n=0;n<12000;n++); //延时
 126   3      tl0_f=freq[jie8[16]*2]; //置一个音符的值
 127   3      th0_f=freq[jie8[16]*2+1];
 128   3      TR0 = 1;
 129   3      if(K0) goto     tanzou;
 130   3      for(n=0;n<12000;n++); //延时
 131   3      tl0_f=freq[jie8[14]*2]; //置一个音符的值
 132   3      th0_f=freq[jie8[14]*2+1];
 133   3      TR0 = 1;
 134   3      if(K0) goto     tanzou;
 135   3      for(n=0;n<12000;n++); //延时
 136   3      tl0_f=freq[jie8[16]*2]; //置一个音符的值
 137   3      th0_f=freq[jie8[16]*2+1];
 138   3      TR0 = 1;
 139   3      if(K0) goto     tanzou;
 140   3      for(n=0;n<24000;n++); //延时
 141   3      TR0 =0;
 142   3      for(n=0;n<10000;n++);
 143   3      
 144   3      tl0_f=freq[jie8[16]*2]; //置一个音符的值
 145   3      th0_f=freq[jie8[16]*2+1];
 146   3      TR0 = 1;
 147   3      if(K0) goto     tanzou;
 148   3      for(n=0;n<18000;n++); //延时
 149   3      tl0_f=freq[jie8[14]*2]; //置一个音符的值
 150   3      th0_f=freq[jie8[14]*2+1];
 151   3      TR0 = 1;
 152   3      if(K0) goto     tanzou;
 153   3      for(n=0;n<6000;n++); //延时
 154   3      tl0_f=freq[jie8[9]*2]; //置一个音符的值
 155   3      th0_f=freq[jie8[9]*2+1];
 156   3      TR0 = 1;
 157   3      if(K0) goto     tanzou;
 158   3      for(n=0;n<12000;n++); //延时
 159   3      tl0_f=freq[jie8[12]*2]; //置一个音符的值
 160   3      th0_f=freq[jie8[12]*2+1];
 161   3      TR0 = 1;
 162   3      if(K0) goto     tanzou;
 163   3      for(n=0;n<12000;n++); //延时
 164   3      tl0_f=freq[jie8[16]*2]; //置一个音符的值
 165   3      th0_f=freq[jie8[16]*2+1];
 166   3      TR0 = 1;
 167   3      if(K0) goto     tanzou;
 168   3      for(n=0;n<12000;n++); //延时
 169   3      tl0_f=freq[jie8[14]*2]; //置一个音符的值
 170   3      th0_f=freq[jie8[14]*2+1];
 171   3      TR0 = 1;
 172   3      if(K0) goto     tanzou;
 173   3      for(n=0;n<30000;n++); //延时
 174   3      TR0 =0;
 175   3      for(n=0;n<10000;n++);
 176   3      
 177   3      tl0_f=freq[jie8[14]*2]; //置一个音符的值
 178   3      th0_f=freq[jie8[14]*2+1];
C51 COMPILER V8.05a   MUSICBOX                                                             03/30/2009 13:25:08 PAGE 4   

 179   3      TR0 = 1;
 180   3      if(K0) goto     tanzou;
 181   3      for(n=0;n<12000;n++); //延时
 182   3      tl0_f=freq[jie8[12]*2]; //置一个音符的值
 183   3      th0_f=freq[jie8[12]*2+1];
 184   3      TR0 = 1;
 185   3      if(K0) goto     tanzou;
 186   3      for(n=0;n<12000;n++); //延时
 187   3      tl0_f=freq[jie8[9]*2]; //置一个音符的值
 188   3      th0_f=freq[jie8[9]*2+1];
 189   3      TR0 = 1;
 190   3      if(K0) goto     tanzou;
 191   3      for(n=0;n<12000;n++); //延时
 192   3      tl0_f=freq[jie8[12]*2]; //置一个音符的值
 193   3      th0_f=freq[jie8[12]*2+1];
 194   3      TR0 = 1;
 195   3      if(K0) goto     tanzou;
 196   3      for(n=0;n<12000;n++); //延时
 197   3      tl0_f=freq[jie8[14]*2]; //置一个音符的值
 198   3      th0_f=freq[jie8[14]*2+1];
 199   3      TR0 = 1;
 200   3      if(K0) goto     tanzou;
 201   3      for(n=0;n<12000;n++); //延时
 202   3      tl0_f=freq[jie8[16]*2]; //置一个音符的值
 203   3      th0_f=freq[jie8[16]*2+1];
 204   3      TR0 = 1;
 205   3      if(K0) goto     tanzou;
 206   3      for(n=0;n<12000;n++); //延时
 207   3      tl0_f=freq[jie8[19]*2]; //置一个音符的值
 208   3      th0_f=freq[jie8[19]*2+1];
 209   3      TR0 = 1;
 210   3      if(K0) goto     tanzou;
 211   3      for(n=0;n<12000;n++); //延时
 212   3      tl0_f=freq[jie8[14]*2]; //置一个音符的值
 213   3      th0_f=freq[jie8[14]*2+1];
 214   3      TR0 = 1;
 215   3      if(K0) goto     tanzou;
 216   3      for(n=0;n<12000;n++); //延时
 217   3      TR0 =0;
 218   3      for(n=0;n<10000;n++);
 219   3      
 220   3      TR0 = 1;
 221   3      for(n=0;n<12000;n++); //延时
 222   3      tl0_f=freq[jie8[16]*2]; //置一个音符的值
 223   3      th0_f=freq[jie8[16]*2+1];
 224   3      TR0 = 1;
 225   3      if(K0) goto     tanzou;
 226   3      for(n=0;n<12000;n++); //延时
 227   3      tl0_f=freq[jie8[21]*2]; //置一个音符的值
 228   3      th0_f=freq[jie8[21]*2+1];
 229   3      TR0 = 1;
 230   3      if(K0) goto     tanzou;
 231   3      for(n=0;n<12000;n++); //延时
 232   3      tl0_f=freq[jie8[19]*2]; //置一个音符的值
 233   3      th0_f=freq[jie8[19]*2+1];
 234   3      TR0 = 1;
 235   3      if(K0) goto     tanzou;
 236   3      for(n=0;n<12000;n++); //延时
 237   3      tl0_f=freq[jie8[7]*2]; //置一个音符的值
 238   3      th0_f=freq[jie8[7]*2+1];
 239   3      TR0 = 1;
 240   3      if(K0) goto     tanzou;
C51 COMPILER V8.05a   MUSICBOX                                                             03/30/2009 13:25:08 PAGE 5   

 241   3      for(n=0;n<12000;n++); //延时
 242   3      tl0_f=freq[jie8[14]*2]; //置一个音符的值
 243   3      th0_f=freq[jie8[14]*2+1];
 244   3      TR0 = 1;
 245   3      if(K0) goto     tanzou;
 246   3      for(n=0;n<12000;n++); //延时
 247   3      tl0_f=freq[jie8[12]*2]; //置一个音符的值
 248   3      th0_f=freq[jie8[12]*2+1];
 249   3      TR0 = 1;
 250   3      if(K0) goto     tanzou;
 251   3      for(n=0;n<30000;n++); //延时
 252   3      TR0 =0;
 253   3      for(n=0;n<10000;n++);
 254   3      
 255   3      tl0_f=freq[jie8[14]*2]; //置一个音符的值
 256   3      th0_f=freq[jie8[14]*2+1];
 257   3      TR0 = 1;
 258   3      if(K0) goto     tanzou;
 259   3      for(n=0;n<12000;n++); //延时
 260   3      tl0_f=freq[jie8[16]*2]; //置一个音符的值
 261   3      th0_f=freq[jie8[16]*2+1];
 262   3      TR0 = 1;
 263   3      if(K0) goto     tanzou;
 264   3      for(n=0;n<12000;n++); //延时
 265   3      tl0_f=freq[jie8[14]*2]; //置一个音符的值
 266   3      th0_f=freq[jie8[14]*2+1];
 267   3      TR0 = 1;
 268   3      if(K0) goto     tanzou;
 269   3      for(n=0;n<12000;n++); //延时
 270   3      tl0_f=freq[jie8[12]*2]; //置一个音符的值
 271   3      th0_f=freq[jie8[12]*2+1];
 272   3      TR0 = 1;
 273   3      if(K0) goto     tanzou;
 274   3      for(n=0;n<12000;n++); //延时
 275   3      tl0_f=freq[jie8[19]*2]; //置一个音符的值
 276   3      th0_f=freq[jie8[19]*2+1];
 277   3      TR0 = 1;
 278   3      if(K0) goto     tanzou;
 279   3      for(n=0;n<18000;n++); //延时
 280   3      tl0_f=freq[jie8[21]*2]; //置一个音符的值
 281   3      th0_f=freq[jie8[21]*2+1];
 282   3      TR0 = 1;
 283   3      if(K0) goto     tanzou;
 284   3      for(n=0;n<6000;n++); //延时
 285   3      tl0_f=freq[jie8[16]*2]; //置一个音符的值
 286   3      th0_f=freq[jie8[16]*2+1];
 287   3      TR0 = 1;
 288   3      if(K0) goto     tanzou;
 289   3      for(n=0;n<24000;n++); //延时
 290   3      TR0 =0;
 291   3      for(n=0;n<10000;n++);
 292   3      
 293   3      tl0_f=freq[jie8[9]*2]; //置一个音符的值
 294   3      th0_f=freq[jie8[9]*2+1];
 295   3      TR0 = 1;
 296   3      if(K0) goto     tanzou;
 297   3      for(n=0;n<12000;n++); //延时
 298   3      tl0_f=freq[jie8[16]*2]; //置一个音符的值
 299   3      th0_f=freq[jie8[16]*2+1];
 300   3      TR0 = 1;
 301   3      if(K0) goto     tanzou;
 302   3      for(n=0;n<12000;n++); //延时
C51 COMPILER V8.05a   MUSICBOX                                                             03/30/2009 13:25:08 PAGE 6   

 303   3      tl0_f=freq[jie8[14]*2]; //置一个音符的值
 304   3      th0_f=freq[jie8[14]*2+1];
 305   3      TR0 = 1;
 306   3      if(K0) goto     tanzou;
 307   3      TR0 =0;
 308   3      for(n=0;n<3000;n++);
 309   3      for(n=0;n<12000;n++); //延时
 310   3      tl0_f=freq[jie8[14]*2]; //置一个音符的值
 311   3      th0_f=freq[jie8[14]*2+1];
 312   3      TR0 = 1;
 313   3      if(K0) goto     tanzou;
 314   3      TR0 =0;

⌨️ 快捷键说明

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