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

📄 电子琴.lst

📁 基于C51的电子琴设计
💻 LST
字号:
C51 COMPILER V8.02   电子琴                                                                12/04/2008 12:29:48 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE 电子琴
OBJECT MODULE PLACED IN 电子琴.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 电子琴.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include<reg52.h>
   2          
   3          unsigned int code tab[]={64400,
   4          64524,64580,64684,64777,
   5          64820,64898,64968,65030,
   6          65058,65110,65157,65178,65217,65252,65283};
   7          
   8          
   9          
  10          sbit p17=P1^7;
  11          unsigned char pTH0;
  12          unsigned char pTL0;
  13          unsigned char jTH1;
  14          unsigned char jTL1;
  15          unsigned char k;
  16          
  17          void sys_Init()                 //系统初始化
  18          {
  19   1              TMOD = 0x11;            //定时器0 方式1
  20   1              TH0=0xFF;
  21   1              TL0=0xF6;
  22   1              ET0 = 1;                        //允许定时器0中断
  23   1              ET1 = 1;                //允许定时器1中断
  24   1      
  25   1              EX0 = 1;                        //外中断0开启
  26   1              EX1 = 1;
  27   1      
  28   1              IT0 = 1;                        //下降沿触发
  29   1              IT1 = 1;
  30   1      
  31   1              EA = 1;
  32   1      }                                                                 
  33          
  34          void delay1(unsigned char m)
  35          {
  36   1              unsigned char i,j;
  37   1          for(i=0;i<m;i++)
  38   1          for(j=0;j<20;j++);
  39   1      }
  40          
  41          void getch()
  42          {
  43   1              unsigned char X,Y,Z;
  44   1              P2=0xff;         //P2口的所有端口置高电平
  45   1              P2=0x0f;     //行置1
  46   1              if(P2!=0x0f) //可能有键按下
  47   1               {
  48   2                      delay1(10);        //去除按键抖动
  49   2                      if(P2!=0x0f)   //确实有键按下
  50   2                       {
  51   3                              X=P2;       //保存P2的值
  52   3                              P2=0xf0;        //列置1
  53   3                              Y=P2;
  54   3                              Z=X|Y;   //取键盘值
  55   3                              switch(Z)
C51 COMPILER V8.02   电子琴                                                                12/04/2008 12:29:48 PAGE 2   

  56   3                                {
  57   4                                      case 0x77: k=0; break;  
  58   4                                      case 0x7b: k=1; break;  
  59   4                                      case 0x7d: k=2; break;  
  60   4                                      case 0x7e: k=3; break;  
  61   4                                      case 0xb7: k=4; break;  
  62   4                                      case 0xbb: k=5; break;  
  63   4                                      case 0xbd: k=6; break;  
  64   4                                      case 0xbe: k=7; break;  
  65   4                                      case 0xd7: k=8; break;  
  66   4                                      case 0xdb: k=9; break;  
  67   4                                      case 0xdd: k=10;break;                                  
  68   4                                      case 0xde: k=11;break;                                    
  69   4                                      case 0xe7: k=12;break;                  
  70   4                                      case 0xeb: k=13;break;                 
  71   4                                      case 0xed: k=14;break;               
  72   4                                      case 0xee: k=15;break;                                                            
  73   4                                }
  74   3      
  75   3                            pTH0=tab[k]/256;
  76   3                                pTL0=tab[k]%256;
  77   3                                TR0=1; 
  78   3                                      while(P2!=0xf0);TR0=0;p17=1;//检测按键是否弹起
  79   3                                }
  80   2                }
  81   1      }
  82          
  83          void main()
  84          {
  85   1        sys_Init();
  86   1        while(1)
  87   1        {
  88   2           getch();
  89   2        }
  90   1      }
  91          
  92          
  93          void Timer0() interrupt 1 
  94          {
  95   1              TH0=pTH0;
  96   1              TL0=pTL0;
  97   1              p17=~p17;
  98   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    268    ----
   CONSTANT SIZE    =     32    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      5    ----
   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 + -