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

📄 main.lst

📁 FS7805 使用DMA的demo
💻 LST
字号:
C51 COMPILER V7.50   MAIN                                                                  04/17/2007 10:38:49 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN .\OUTPUT\main.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND PRINT(.\OUTPUT\main.lst) OBJECT(.\OUTPUT\m
                    -ain.obj)

line level    source

   1          /*
   2          *********************************************************************************************************
   3          * File:     main.C
   4          * Contents: dma demo code
   5          *
   6          * $Date:    01/12/07    Kevin    v0.1
   7          *
   8          * Copyright (c) 2007 Fameg, Inc. All rights reserved
   9          *********************************************************************************************************
  10          */
  11          
  12          #define ALLOCATE_EXTERN 
  13          #include "fs7805.h"
  14          #include "fs7805regs.h"  
  15          #include "dma.h"
  16          main()
  17          {
  18   1              int i; 
  19   1              
  20   1              McuInit();                              //initialize MCU
  21   1              DmaInit();                              //initialize DMA module 
  22   1               
  23   1              //DMA move data between 512B-external-data memory and FIFOX  (X: A,B,C,D)
  24   1              for(i=0;i<512;i++)                          //initialize 512B on-chip xdata
  25   1                  ((BYTE xdata *)XDATA512B)[i]=i+0; 
  26   1              DmaTrans(FIFOA0_EC00,XDATA512B,512);    //from 512B on-chip xdata to Fifo A0
  27   1              DmaTrans(FIFOA1_EE00,XDATA512B,512);    //from 512B on-chip xdata to Fifo A1 
  28   1                   
  29   1              for(i=0;i<512;i++)                          //rewrite Fifo A0,A1        
  30   1              ((BYTE xdata *)FIFOA0_EC00)[i]=i*2+1; 
  31   1          DmaTrans(XDATA512B,FIFOA0_EC00,512);        //from Fifo A0 to 512B on-chip xdata
  32   1              DmaTrans(XDATA512B,FIFOA1_EE00,512);    //from Fifo A1 to 512B on-chip xdata    
  33   1              
  34   1              //DMA move data between 64KB Off-chip Data memory and FIFOX  (X: A,B,C,D)
  35   1              for(i=0;i<512;i++)                          //initialize 512B off-chip xdata
  36   1                      ((BYTE xdata *)0x4000)[i]=i+1;
  37   1              DmaTrans(FIFOA0_EC00,0x4000,512);       //from 512B off-chip xdata to Fifo A0
  38   1              DmaTrans(FIFOA1_EE00,0x4000,512);       //from 512B off-chip xdata to Fifo A1
  39   1                   
  40   1              for(i=0;i<512;i++)                          //rewrite Fifo A0
  41   1                      ((BYTE xdata *)FIFOA0_EC00)[i]=i*2+1;           
  42   1              DmaTrans(0x4000,FIFOA0_EC00,512);           //from Fifo A0 to 512B off-chip xdata
  43   1              DmaTrans(0x4000,FIFOA1_EE00,512);           //from Fifo A1 to 512B off-chip xdata
  44   1              
  45   1              //DMA move data between 64KB Off-chip Data memory and 512B-external-data memory
  46   1              for(i=0;i<512;i++)                          //initialize 12B off-chip xdata
  47   1                      ((BYTE xdata *)0x4000)[i]=i;
  48   1              DmaTrans(XDATA512B,0x4000,512);         //from 512B off-chip xdata(LSB) to 512B on-chip xdata
  49   1              
  50   1              for(i=0;i<512;i++)                          //rewrite 512B on-chip xdata
  51   1                      ((BYTE xdata *)0xEC00)[i]=i+1;
  52   1              DmaTrans(0x4000,0xEC00,512);            //from 512B on-chip xdata to 512B off-chip xdata        
  53   1                      
  54   1              //DMA move data between FIFOX  (X: A,B,C,D) and FIFOX  (Y: A,B,C,D)
C51 COMPILER V7.50   MAIN                                                                  04/17/2007 10:38:49 PAGE 2   

  55   1              for(i=0;i<512;i++)                          //rewrite Fifo A0
  56   1                      ((BYTE xdata *)FIFOA0_EC00)[i]=i*2+1;   
  57   1              DmaTrans(FIFOA1_EE00,FIFOA0_EC00,512);  //from Fifo A0 to Fifo A1
  58   1              DmaTrans(FIFOB0_F000,FIFOA0_EC00,512);  //from Fifo A0 to Fifo B0       
  59   1          
  60   1              //between 16k SRAM and FIFO
  61   1              for(i=0;i<512;i++)                          //initialize SRAM_2000
  62   1                      ((BYTE xdata *)SRAM_2000)[i]=i*2+1; 
  63   1              DmaTrans(FIFOA0_EC00,SRAM_2000,512);    //from SRAM_2000 to Fifo A0      
  64   1              DmaTrans(FIFOA1_EE00,SRAM_2000,512);    //from SRAM_2000 to Fifo A1
  65   1          
  66   1          for(i=0;i<512;i++)                      //initialize SRAM_2000
  67   1                      ((BYTE xdata *)0x3A00)[i]=0;  
  68   1      
  69   1          for(i=0;i<512;i++)                      //initialize Fifo A0
  70   1                      ((BYTE xdata *)FIFOD0_F800)[i]=i*2+1;           
  71   1              DmaTrans(0x3A00,FIFOD0_F800,512);           //from Fifo A0 to SRAM_2000
  72   1              DmaTrans(SRAM_2000,FIFOA1_EE00,512);    //from Fifo A1 to SRAM_2000
  73   1              
  74   1        
  75   1              //DMA move data between 16K-program memory and 512B data memory
  76   1              for(i=0;i<512;i++)                          //initialize XDATA512B
  77   1                      ((BYTE xdata *)XDATA512B)[i]=i+1;
  78   1      
  79   1              DmaTrans(SRAM_2000,XDATA512B,512);          //from XDATA512B_EC00 to SRAM_2000  
  80   1                  
  81   1          for(i=0;i<512;i++)                      //initialize SRAM_2000
  82   1                      ((BYTE xdata *)SRAM_2000)[i]=i*2+0;             
  83   1              DmaTrans(XDATA512B,SRAM_2000,512);          //from SRAM_2000 to XDATA512B_EC00
  84   1      }
  85          
  86          void McuInit()
  87          {
  88   1              SYS_CFG=SYS_CFG|bmSYS_SW_RST;           //software reset 
  89   1              SYS_CFG=0x02;                           //00:15M,01:40M,02:30M,03:60M
  90   1              SYS_CFG=SYS_CFG|bmPM_AVBLE; 
  91   1              WDTRST=0x2D;                            //stop WDT
  92   1          MEMCON=0x08;                            //8k xdata
  93   1              CKCON=0x07;
  94   1      }
  95          
  96          void DmaInit()
  97          {
  98   1              DmaCtl.Bit.DmaRWCyc             =1;             //0:5,1:2,2:3,3:4.               IS63LV1024 TRC = 12ns  Tpwe = 8ns
  99   1              DmaCtl.Bit.DmaLatency   =0;                 //0:0,1:1,2:2,3:3.
 100   1              DmaCtl.Bit.DmaStallCyc  =0;                 //0:0,1:32,2:64,3:128.
 101   1              DMA_CTL=DmaCtl.Val;     
 102   1              DMA_CTL2=DMA_CTL2|bmCNFLICT_EN; 
 103   1      }
 104          
 105          void DmaTrans(INT16U des,INT16U src,INT16U length)
 106          { 
 107   1              DMA_S_ADDRH=src>>8;
 108   1              DMA_S_ADDRL=src;
 109   1              DMA_D_ADDRH=des>>8;
 110   1              DMA_D_ADDRL=des;
 111   1              DMA_LENH=length>>8;
 112   1              DMA_LENL=length;
 113   1              
 114   1              DMA_CTL= DMA_CTL|bmDMA_START;          //start data transfer
 115   1              while((CHIPINT&bmDMA_INT)==0);         //Wait for DMA finish
 116   1              CHIPINT=CHIPINT&~bmDMA_INT;                //Clear the interrupt bit  
C51 COMPILER V7.50   MAIN                                                                  04/17/2007 10:38:49 PAGE 3   

 117   1      }   


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