📄 main.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 + -