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

📄 1.lst

📁 基于单片机的电子琴设计
💻 LST
字号:
C51 COMPILER V8.08   1                                                                     05/06/2009 22:53:04 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE 1
OBJECT MODULE PLACED IN 1.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE 1.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          void delay(uint z);
   8          
   9          sbit BEEP=P1^4; //喇叭输出脚 
  10          sbit K1= P2^0; 
  11          sbit K2= P2^1; 
  12          sbit K3= P2^2; 
  13          sbit K4= P2^3; 
  14          
  15          uchar th0_f; //在中断中装载的 T0 的值高 8 位 
  16          uchar tl0_f; //在中断中装载的 T0 的值低 8 位 
  17          
  18          //T0 的值,及输出频率对照表 
  19          uchar code freq[36*2]={ 
  20          0xA9,0xEF,//00220HZ ,1 //0 
  21          0x93,0xF0,//00233HZ ,1# 
  22          0x73,0xF1,//00247HZ ,2 
  23          0x49,0xF2,//00262HZ ,2# 
  24          0x07,0xF3,//00277HZ ,3 
  25          0xC8,0xF3,//00294HZ ,4 
  26          0x73,0xF4,//00311HZ ,4# 
  27          0x1E,0xF5,//00330HZ ,5 
  28          0xB6,0xF5,//00349HZ ,5# 
  29          0x4C,0xF6,//00370HZ ,6 
  30          0xD7,0xF6,//00392HZ ,6# 
  31          0x5A,0xF7,//00415HZ ,7 
  32          0xD8,0xF7,//00440HZ 1 //12 
  33          0x4D,0xF8,//00466HZ 1# //13 
  34          0xBD,0xF8,//00494HZ 2 //14 
  35          0x24,0xF9,//00523HZ 2# //15 
  36          0x87,0xF9,//00554HZ 3 //16 
  37          0xE4,0xF9,//00587HZ 4 //17 
  38          0x3D,0xFA,//00622HZ 4# //18 
  39          0x90,0xFA,//00659HZ 5 //19 
  40          0xDE,0xFA,//00698HZ 5# //20 
  41          0x29,0xFB,//00740HZ 6 //21 
  42          0x6F,0xFB,//00784HZ 6# //22 
  43          0xB1,0xFB,//00831HZ 7 //23 
  44          0xEF,0xFB,//00880HZ `1 
  45          0x2A,0xFC,//00932HZ `1# 
  46          0x62,0xFC,//00988HZ `2 
  47          0x95,0xFC,//01046HZ `2# 
  48          0xC7,0xFC,//01109HZ `3 
  49          0xF6,0xFC,//01175HZ `4 
  50          0x22,0xFD,//01244HZ `4# 
  51          0x4B,0xFD,//01318HZ `5 
  52          0x73,0xFD,//01397HZ `5# 
  53          0x98,0xFD,//01480HZ `6 
  54          0xBB,0xFD,//01568HZ `6# 
  55          0xDC,0xFD,//01661HZ `7 //35 
C51 COMPILER V8.08   1                                                                     05/06/2009 22:53:04 PAGE 2   

  56          }; 
  57          
  58          //定时中断 0,用于产生唱歌频率 
  59          timer0() interrupt 1 
  60          { 
  61   1      TL0=tl0_f;TH0=th0_f; //调入预定时值 
  62   1      BEEP=~BEEP; //取反音乐输出 IO 
  63   1      } 
  64          
  65          //按键控制音阶声音输出(电子琴) 
  66          void main(void) // 主程序 
  67          { 
  68   1      ulong n; 
  69   1      uchar code jie8[8]={12,14,16,17,19,21,23,24};//1234567`1 八个音符在频率表中的位置 
  70   1      
  71   1      
  72   1      
  73   1      TMOD = 0x01; //使用定时器 0 的 16 位工作模式 
  74   1      TR0 = 0; 
  75   1      ET0 = 1; 
  76   1      EA = 1; 
  77   1      
  78   1      while(1) 
  79   1      { 
  80   2              P2=0xef;
  81   2      
  82   2              if(!K1) 
  83   2              {
  84   3              delay(5);
  85   3                      if(!K1) 
  86   3              {       
  87   4              tl0_f=freq[jie8[0]*2]; //置一个音符的值 
  88   4              th0_f=freq[jie8[0]*2+1]; 
  89   4              TR0 = 1; 
  90   4              for(n=0;n<10000;n++); //延时 
  91   4              BEEP=1;
  92   4              }
  93   3              }
  94   2      
  95   2              if(!K2) 
  96   2              {
  97   3                      if(!K2) 
  98   3                  {
  99   4                      delay(5);
 100   4                      tl0_f=freq[jie8[1]*2]; //置一个音符的值 
 101   4                      th0_f=freq[jie8[1]*2+1]; 
 102   4                      TR0 = 1; 
 103   4                      for(n=0;n<10000;n++); //延时 
 104   4                      }
 105   3                      BEEP=1;
 106   3              }
 107   2      
 108   2      
 109   2              if(!K3) 
 110   2              {
 111   3                      if(!K3) 
 112   3              {
 113   4              delay(5);
 114   4              tl0_f=freq[jie8[2]*2]; //置一个音符的值 
 115   4              th0_f=freq[jie8[2]*2+1]; 
 116   4              TR0 = 1; 
 117   4              for(n=0;n<10000;n++); //延时 
C51 COMPILER V8.08   1                                                                     05/06/2009 22:53:04 PAGE 3   

 118   4              }
 119   3              BEEP=1;
 120   3              }
 121   2      
 122   2               if(!K4)
 123   2               {
 124   3                      if(!K4)
 125   3               {
 126   4               delay(5);
 127   4              tl0_f=freq[jie8[3]*2]; //置一个音符的值 
 128   4              th0_f=freq[jie8[3]*2+1]; 
 129   4              TR0 = 1; 
 130   4              for(n=0;n<10000;n++); //延时 
 131   4              }
 132   3              BEEP=1;
 133   3              }
 134   2              
 135   2              P2=0xdf ;
 136   2      
 137   2              if(!K1) 
 138   2              {       
 139   3              tl0_f=freq[jie8[4]*2]; //置一个音符的值 
 140   3              th0_f=freq[jie8[4]*2+1]; 
 141   3              TR0 = 1; 
 142   3              for(n=0;n<10000;n++); //延时 
 143   3              BEEP=1;
 144   3              }
 145   2      
 146   2      
 147   2              if(!K2) 
 148   2              {
 149   3              tl0_f=freq[jie8[5]*2]; //置一个音符的值 
 150   3              th0_f=freq[jie8[5]*2+1]; 
 151   3              TR0 = 1; 
 152   3              for(n=0;n<10000;n++); //延时 
 153   3              BEEP=1;
 154   3              }
 155   2      
 156   2      
 157   2              if(!K3) 
 158   2              {
 159   3              tl0_f=freq[jie8[6]*2]; //置一个音符的值 
 160   3              th0_f=freq[jie8[6]*2+1]; 
 161   3              TR0 = 1; 
 162   3              for(n=0;n<10000;n++); //延时 
 163   3              BEEP=1;
 164   3              }
 165   2      
 166   2      
 167   2               if(!K4)
 168   2               {
 169   3              tl0_f=freq[jie8[7]*2]; //置一个音符的值 
 170   3              th0_f=freq[jie8[7]*2+1]; 
 171   3              TR0 = 1; 
 172   3              for(n=0;n<10000;n++); //延时 
 173   3              BEEP=1;
 174   3              }
 175   2      
 176   2      
 177   2      TR0 =0; 
 178   2      } 
 179   1      }
C51 COMPILER V8.08   1                                                                     05/06/2009 22:53:04 PAGE 4   

 180          
 181          void delay(uint z)
 182          {
 183   1              int a,b;
 184   1              for (a=z;a>0;a--)
 185   1                      for(b=110;b>0;b--);
 186   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    865    ----
   CONSTANT SIZE    =     80    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      2       4
   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 + -