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

📄 audio.lst

📁 单片机C8051F020的音频输出程序
💻 LST
字号:
C51 COMPILER V7.20   AUDIO                                                                 02/28/2006 10:06:01 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE AUDIO
OBJECT MODULE PLACED IN audio.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE audio.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include "C8051F020.h"
   2          
   3          unsigned char m;
   4          unsigned char rti;
   5          unsigned char len;
   6          unsigned char code toneh[14] = {0xfc,0xfc,0xfd,0xfd,0xfd,0xfd,0xfe,
   7                                                  0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xff}; /*音频表:高位. */
   8          unsigned char code tonel[14] = {0x44,0xac,0xba,0x34,0x82,0xc8,0x05,
   9                                                  0x22,0x56,0x84,0x9a,0xc1,0xe4,0x03}; /*音频表:低位  */
  10          //unsigned char code song[]="123112313455345556543256543215111511";
  11          //unsigned char code length[]="444444444444444422224422224444444444";  /*   音谱    */
  12          
  13          //梁祝
  14          unsigned char code    song[]="5321112uytttttu6755676567611656523432111572y1ttty1tttteetty112y1t55166535222
             -2223uytty12e1yyt61tttt335u2y1tt5eetetyu2yyyty6112532321yte311yqytety1tttttt5553tttttttt";
  15          unsigned char code length[]="44442244442422444412442222412222222224244444442422424242412412224412212224242
             -4124441244442122242424124422442211222224242241244422422224222222222424222422442224222";
  16          
  17          //两只蝴蝶
  18          //unsigned char code   song[]="3233232116122321yytt323323211y122321y122";
  19          //unsigned char code length[]="2242222422242222224222422224222422222242";  /*   音谱    */
  20          
  21          
  22          void SysInit()
  23          {
  24   1              int i;               // delay counter
  25   1      
  26   1              WDTCN = 0x07;           // Watchdog Timer Control Register
  27   1              WDTCN = 0xde;             // disable watchdog timer
  28   1              WDTCN = 0xad;
  29   1      
  30   1              OSCXCN = 0x67;              // start external oscillator with 25MHz crystal
  31   1      
  32   1              for (i=0; i < 256; i++) ;           // XTlVlD blanking interval (>1ms)
  33   1      
  34   1              while (!(OSCXCN & 0x80)) ;          // Wait for crystal osc. to settle
  35   1      
  36   1              OSCICN = 0x88;                      // select external oscillator as SYSClK
  37   1              // source and enable missing clock detector
  38   1      
  39   1              //      OSCICN = 0x97;                     // select internal oscillator as SYSClK
  40   1      
  41   1      
  42   1              XBR2    = 0x40;                     // Enable crossbar and weak pull-ups
  43   1              P1MDOUT = 0xFF;
  44   1      }
  45          
  46          void timer0(void) interrupt 1  /*定时器0中断服务程序 */
  47          {
  48   1              P11 = !P11;                            /*   P1口取反        */
  49   1              TH0 = toneh[rti];                      /*   装入音频初值     */
  50   1              TL0 = tonel[rti];
  51   1      }
  52          
  53          void timer1(void) interrupt 3  /*定时器1中断服务程序 */
C51 COMPILER V7.20   AUDIO                                                                 02/28/2006 10:06:01 PAGE 2   

  54          {
  55   1              TH1 = 0x34;                             /*重装定时初值       */
  56   1              TL1 = 0x8c;
  57   1              m++;
  58   1      }
  59          
  60          unsigned char playc(char ch)   /*音符---音频转换程序 */
  61          {
  62   1              unsigned char ti;
  63   1              switch (ch)
  64   1              {
  65   2                      case'q': ti=0; break;
  66   2                      case'w': ti=1; break;
  67   2                      case'e': ti=2; break;
  68   2                      case'r': ti=3; break;
  69   2                      case't': ti=4; break;
  70   2                      case'y': ti=5; break;
  71   2                      case'u': ti=6; break;
  72   2                      case'1': ti=7; break;
  73   2                      case'2': ti=8; break;
  74   2                      case'3': ti=9; break;
  75   2                      case'4': ti=10; break;
  76   2                      case'5': ti=11; break;
  77   2                      case'6': ti=12; break;
  78   2                      case'7': ti=13; break;
  79   2                      case' ': ti=50; break;
  80   2                      default: ti=50; break;
  81   2              }
  82   1              if (ti==50) 
  83   1                      return(100);
  84   1              return(ti);
  85   1      }
  86          
  87          
  88          void main(void)
  89          {
  90   1              unsigned char i;
  91   1              
  92   1              SysInit();
  93   1              
  94   1              m = 0;
  95   1              TMOD = 0x11;                       /* 定时方式1  */
  96   1              P11 = 0;        
  97   1              TH0 = toneh[0];                    /*定时器字置音频初值 */
  98   1              TL0=tonel[0];   
  99   1              TH1=0x34;                        /*定时器置定时25ms初值 */
 100   1              TL1=0x8c;
 101   1              IP=0x08;                         /*定时器1中断优先       */
 102   1              EA=1;                            /*开CPU中断            */
 103   1              ET0=1;                           /*开T/C0中断           */
 104   1              ET1=1;                           /*开T/C1中断           */
 105   1              TR0=1;                            /*启动T/C0            */
 106   1              TR1=1;                            /*启动T/C1            */
 107   1      
 108   1              //for(i=0; i<36; i++)
 109   1              i=0;
 110   1              while(song[i]!='\0')
 111   1              {
 112   2                      rti=playc(song[i]);
 113   2                      len=5*(length[i]-0x30);         
 114   2                      while(m<len) ;
 115   2                      m=0;
C51 COMPILER V7.20   AUDIO                                                                 02/28/2006 10:06:01 PAGE 3   

 116   2                      i++;
 117   2              }
 118   1              TR0=0;                             /*关相关中断           */
 119   1              TR1=0;
 120   1              P11=0;                           /*关PC喇叭             */
 121   1      
 122   1              while(1) ;
 123   1      }
 124          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    312    ----
   CONSTANT SIZE    =    355    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      3       1
   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 + -