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

📄 main.lst

📁 基于at89c51单片机的mp3键盘中断实验代码
💻 LST
字号:
C51 COMPILER V7.50   MAIN                                                                  01/15/2006 18:22:14 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE main.c

line level    source

   1          #include "AT89C51SND1_REG.H"
   2          #include "MCU_UART.H"
   3          
   4          #define LED          P3_5
   5          
   6          #define EKB             0x10
   7          
   8          #define SLESONG 1
   9          #define VOLUME  2
  10          #define TONE    3
  11          unsigned char CurrentFun = SLESONG;
  12          unsigned char NowPlaying = 1;
  13          unsigned char RegVolume = 15;
  14          unsigned char RegTone = 15;
  15          
  16          unsigned char flag = 0;
  17          
  18          void KeyBoardInit()
  19          {
  20   1              P1 |= 0x0f;
  21   1              KBCON = 0x00;
  22   1              IEN1 |=EKB;     
  23   1      }
  24          
  25          void Next()
  26          {
  27   1              switch (CurrentFun)
  28   1                      {
  29   2                       case SLESONG: NowPlaying++;
  30   2                                     if(NowPlaying>10)
  31   2                                                    NowPlaying=1;
  32   2                                                 flag=2;
  33   2                                                 break;
  34   2                       case VOLUME : RegVolume++;
  35   2                                     if(RegVolume>31)
  36   2                                                    RegVolume=31;
  37   2                                                 flag=3;
  38   2                                                 break;
  39   2                       case TONE   : RegTone++;
  40   2                                                 if(RegTone>31)
  41   2                                                    RegTone=31;
  42   2                                                 flag=4;
  43   2                                                 break;
  44   2                      }
  45   1      }
  46          
  47          void Prev()
  48          {
  49   1              switch (CurrentFun)
  50   1                      {
  51   2                       case SLESONG: NowPlaying--;
  52   2                                     if(NowPlaying==0)
  53   2                                                    NowPlaying=10;
  54   2                                                 flag=2;
  55   2                                                 break;
C51 COMPILER V7.50   MAIN                                                                  01/15/2006 18:22:14 PAGE 2   

  56   2                       case VOLUME : if(RegVolume!=0)
  57   2                                                    RegVolume--;
  58   2                                                 flag=3;
  59   2                                                 break;
  60   2                       case TONE   : if(RegTone!=0)
  61   2                                                    RegTone--;
  62   2                                                 flag=4;
  63   2                                                 break;
  64   2                      }
  65   1      }
  66          
  67          
  68          void key_interrupt() interrupt 11
  69          {
  70   1              unsigned char i,j,k;
  71   1              k = KBSTA&0x0f;
  72   1              for(i=0;i<50;i++)
  73   1                for(j=0;j<200;j++);
  74   1              if(k==(~P1&0x0f))
  75   1                      switch (k)
  76   1                        {                                                                  
  77   2                              case 1 : CurrentFun++;
  78   2                                       if(CurrentFun>3)
  79   2                                                  CurrentFun=1;
  80   2                                               flag = 1;
  81   2                                               break; 
  82   2                              case 2 : Next(); 
  83   2                                               break;
  84   2                              case 4 : Prev(); 
  85   2                                               break;
  86   2                              case 8 : LED = ~LED; 
  87   2                                               break;
  88   2                              default : break;
  89   2                        }
  90   1          k = KBSTA;
  91   1              return;
  92   1      }
  93          
  94          main()
  95          {
  96   1              KeyBoardInit();
  97   1              EA = 1;
  98   1              init_uart();
  99   1              printu("JMBIE MP3 EXP4: KeyPad Interrupt.\n");
 100   1              printu("Please press the Key on the MP3 Board.\n");
 101   1              while(1)
 102   1              {
 103   2               switch(flag)
 104   2                      {
 105   3                              case 0 : break;
 106   3                              case 1 : printuf("Current Function is 0x%x\n",CurrentFun);
 107   3                                       flag= 0;
 108   3                                               break;
 109   3                              case 2 : printuf("Now play the song No.%d\n",NowPlaying);
 110   3                                       flag= 0;
 111   3                                               break;
 112   3                              case 3 : printuf("The volume is %d\n",RegVolume);
 113   3                                       flag= 0;
 114   3                                               break;
 115   3                              case 4 : printuf("The tone is %d\n",RegTone);
 116   3                                       flag= 0;
 117   3                                               break;
C51 COMPILER V7.50   MAIN                                                                  01/15/2006 18:22:14 PAGE 3   

 118   3                      }       
 119   2              }
 120   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    305    ----
   CONSTANT SIZE    =    160    ----
   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 + -