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

📄 _main.lst

📁 f340的MP3程序,通过SD卡读入解码器
💻 LST
字号:
C51 COMPILER V8.09   _MAIN                                                                 05/19/2011 23:29:38 PAGE 1   


C51 COMPILER V8.09, COMPILATION OF MODULE _MAIN
OBJECT MODULE PLACED IN _main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE _main.c LARGE BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include "c8051f340.h"
   2          #include "uart0_f340.h"
   3          #include "Delay.h"
   4          #include "znFAT.h"      
   5          #include "sd.h" 
   6          #include "string.h"
   7          
   8          #include "test_mp3.h"
   9          /*********************/
  10          #include<f340_init.h>
  11          #include<intrins.h>
  12          
  13          sbit yy=P2^4;
  14          sbit Tt=P0^1;
  15          sbit ki=P0^2;
  16          static k;
  17          unsigned int Xx,Z,time;
  18          /****************************/
  19          unsigned long i,h,AddrTemp,sector,fla;
  20          unsigned char Dev_No;  //设备号
  21          struct znFAT_Init_Arg *pArg; //用于指针文件系统参数集合的指针
  22          struct znFAT_Init_Arg Init_Arg_SDCARD; //文件系统参数集合,用于记录文件系统的重要参数
  23          struct FileInfoStruct FileInfo;
  24          uchar buffer[512];
  25          /******************************************************/
  26           unsigned  int  code num[]={100,106,112,118,124,130,136,142,148,153,
  27                                                   158,163,168,172,177,180,184,187,190,192,
  28                                                   195,196,198,199,199,200,199,199,198,196,
  29                                                   195,192,190,187,184,180,177,172,168,163,
  30                                                   158,153,148,142,136,130,124,118,112,106,
  31                                                   100,93,87,81,75,69,63,57,51,46,41,36,31,
  32                                                   27,22,19,15,12,9,7,4,3,1,
  33                                                   0,0,0,0,0,1,3,4,7,9,
  34                                                   12,15,19,22,27,31,36,41,46,51,
  35                                                   57,63,69,75,81,87,93,99
  36                              };
  37          void main()
  38          {
  39   1              
  40   1               h=0;
  41   1               fla=1;
  42   1              f340_io_osc_init();
  43   1         OSCICN=0x83;  //内部高频振荡器控制寄存器
  44   1       
  45   1       
  46   1        /*******************************/
  47   1       Init_Device();//oscilator,IO口,uart初始化,uart为高优先级
  48   1       znFAT_Device_Init(); //存储设备初始化,即SD卡初始化,SD卡复位
  49   1       pArg=&Init_Arg_SDCARD; //指针指向SD卡文件系统参数集合,znFAT将从这个集合中获取参数
  50   1       Dev_No=SDCARD; //设备号为SDCARD,znFAT依照此设备号选择存储设备驱动
  51   1       znFAT_Init(); //文件系统初始化
  52   1       UART_Put_Inf("总存储容量:(字节)",pArg->Total_Size);   //从串口输出各种参数信息
  53   1       UART_Put_Inf("每扇区字节:(个)",pArg->BytesPerSector);
  54   1       UART_Put_Inf("每簇扇区:(个)",pArg->SectorsPerClust);
  55   1       
C51 COMPILER V8.09   _MAIN                                                                 05/19/2011 23:29:38 PAGE 2   

  56   1        
  57   1                                                       //"\\解脱-~1."\\飘雪-8~1.WAV"
  58   1                                                                                                               //     "\\*.wav"
  59   1      if(!znFAT_Open_File(&FileInfo,"\\*.WAV",0,1)) //打开SD卡根目录下的test.txt文件
  60   1       { 
  61   2        UART_Send_Str("打开文件成功\n"); //从串口输出文件参数信息
  62   2        UART_Send_Str("文件名为:");
  63   2        UART_Send_Str(FileInfo.FileName);
  64   2        UART_Send_Enter();
  65   2        UART_Put_Inf("文件大小(字节):",FileInfo.FileSize);
  66   2        k=FileInfo.FileSize/512;//文件大小/512
  67   2        UART_Put_Num(k);
  68   2        UART_Put_Inf("文件在当前扇区位置:",FileInfo.FileCurPos);
  69   2        UART_Put_Inf("文件当前扇区:",FileInfo.FileCurSector);
  70   2        AddrTemp=FileInfo.FileCurSector;//文件的当前扇区
  71   2        UART_Put_Num(AddrTemp);
  72   2        UART_Put_Inf("文件当前偏移量(字节):",FileInfo.FileCurOffset);
  73   2        UART_Send_Str("文件创建时间:\n");
  74   2        UART_Put_Num(FileInfo.FileCreateDate.year);UART_Send_Str("年");
  75   2        UART_Put_Num(FileInfo.FileCreateDate.month);UART_Send_Str("月");
  76   2        UART_Put_Num(FileInfo.FileCreateDate.day);UART_Send_Str("日");
  77   2        UART_Put_Num(FileInfo.FileCreateTime.hour);UART_Send_Str("时");
  78   2        UART_Put_Num(FileInfo.FileCreateTime.min);UART_Send_Str("分");
  79   2        UART_Put_Num(FileInfo.FileCreateTime.sec);UART_Send_Str("秒");
  80   2        UART_Send_Enter();
  81   2       }
  82   1       else
  83   1       {
  84   2        UART_Send_Str("打开文件失败\n");
  85   2       }
  86   1       
  87   1       /******************************/
  88   1        TMR2H=0xfa;    //定时器2附初值,定时50ms,进入中断
  89   1        TMR2L=0x24;
  90   1        TMR2RLH=0Xfa; //重载寄存器
  91   1        TMR2RLL=0x24;
  92   1        ET2=1;//开定时器2中断
  93   1        EA=1; //开总中断
  94   1        TR2=1; //开定时器2   
  95   1       /*******************************************************/
  96   1       if(yy==1) {
  97   2              TH1=(65536-Xx)/256;
  98   2              TL0=(65536-Xx)%256;
  99   2              yy=0;}
 100   1        else { TH1=(64036+Xx)/256;
 101   2        TL1=(64036+Xx)%256;
 102   2        yy=1;}
 103   1        TMOD=0X10;
 104   1        CKCON=0X08;
 105   1        ET1=1;
 106   1        EA=1;
 107   1        TR1=1;
 108   1              
 109   1      
 110   1       while(1)
 111   1       { if(sector==k)sector=0;
 112   2        if(fla==1 && sector<k  )
 113   2                      { 
 114   3                         fla=0;
 115   3                         SD_Read_Sector(AddrTemp+sector,buffer);
 116   3                         sector++;
 117   3                              
C51 COMPILER V8.09   _MAIN                                                                 05/19/2011 23:29:38 PAGE 3   

 118   3                        }  
 119   2          }
 120   1      
 121   1       } 
 122          /*while(1)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
             -                                                                                                                                                                                                                                                                                                                                                                                                    
 123           {Tt=0;//if(time==2)TR1=0;
 124           }*/
 125           
 126           /***************************************************/
 127            void time1() interrupt 3
 128            {     Tt=0; if(yy==1) {TH1=(65536-Xx)/256;TL1=(65536-Xx)%256;yy=0;}
 129   1           else { TH1=(64036+Xx)/256;TL1=(64036+Xx)%256;yy=1;}                                                                                                                                                                                                                                                                                                                                                                                                                
             -                                                                                                                                                                                                                                                                                                                                                               
             -                                                                                    
 130   1              
 131   1        }
 132           /*******************************************/
 133                    void time2(void) interrupt 5
 134            {     ki=0;
 135   1                                                                                                                                                                                                                       
             -                                                                                                                        
             -                                                                                                                        
             -                                                                                             
 136   1          TF2H=0;//清定时器高字节溢出标志位
 137   1                      
 138   1              if(time==0)
 139   1               {Z=220;time++;
 140   2                Xx=buffer[Z];
 141   2               }
 142   1               else
 143   1               { Xx=buffer[Z];
 144   2                 }
 145   1                 Z++;
 146   1                if(Z>511){Z=0;fla=1;}
 147   1              /* Xx=num[Z];
 148   1               Z++;
 149   1               if(Z>99)Z=0;
 150   1               */
 151   1        
 152   1        } 


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1279    ----
   CONSTANT SIZE    =  30409    ----
   XDATA SIZE       =    636    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   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 + -