📄 main.lst
字号:
C51 COMPILER V7.02b MAIN 01/29/2007 09:36:07 PAGE 1
C51 COMPILER V7.02b, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN .\Output\Main.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Main.c LARGE OPTIMIZE(SIZE) BROWSE INCDIR(.\Includes) DEBUG OBJECTEXTEND PR
-INT(.\Output\Main.lst) OBJECT(.\Output\Main.obj)
stmt level source
1 /*
2 *********************************************************************************************************
3 * File: Main.C
4 * Contents:
5 *
6 * $Date: 04/06/06 Kimi v0.1
7 * 01/05/07 kevin v0.2
8 * 01/08/07 kevin v0.3
9 *
10 * Copyright (c) 2007 Fameg, Inc. All rights reserved
11 *********************************************************************************************************
12 */
13
14 #define ALLOCATE_EXTERN // Declare GLOBAL variables and functions
15
16 #include "Include.h"
17 #include "fs7805regs.h"
18 #include "aplif.h"
19 #include "string.h"
20
21 xdata INT8U OutBuffer[512];
22 union FIFODataLen
23 {
24 INT16U Val;
25 INT8U Byte[2];
26 };
27 static union FIFODataLen Length;
28
29
30
31
32
33
34 void main(void)
35 {
36 1 TdInit();
37 1 WriteOutFIFO(0x01); //move data to OutFIFO
38 1 WriteOneSector(0x07); //write data to IDE device
39 1 ReadOneSector(0x07); //read the 7th sector data from IDE device
40 1 while(1);
41 1 }
42
43 void WriteOneSector (INT8U sector)
44 {
45 1 WritePIO8(ATA_DRIVESEL_REG, 0xE0);
46 1 WritePIO8(ATA_SECTOR_COUNT_REG,1); //write sector counter value to IDE register
47 1 WritePIO8(ATA_LBA_LSB_REG, sector); //write address to IDE register
48 1 WritePIO8(ATA_LBA_2SB_REG, 0);
49 1 WritePIO8(ATA_LBA_MSB_REG, 0);
50 1
51 1 init_udma_write(); //initialize UDMA relegated register
52 1 while ((ReadATAPI_STATUS_REG() != 0x50)); //wait for IDE device ready
53 1 WritePIO8 (ATA_COMMAND_REG, 0xCA); //write WRITE command to IDE register
54 1 while ((ReadATAPI_STATUS_REG() & 0x88) != 0x08); //wait for IDE device ready
C51 COMPILER V7.02b MAIN 01/29/2007 09:36:07 PAGE 2
55 1 WriteUDMA(0x200); //FS7805 start write data with APLIF
56 1 while ((ReadATAPI_STATUS_REG() != 0x50));
57 1 }
58
59
60 void ReadOneSector (INT8U sector)
61 {
62 1 WritePIO8(ATA_DRIVESEL_REG, 0xE0);
63 1 WritePIO8(ATA_SECTOR_COUNT_REG,1); //write sector counter value to IDE register
64 1 WritePIO8(ATA_LBA_LSB_REG, sector); //write address to IDE register
65 1 WritePIO8(ATA_LBA_2SB_REG, 0);
66 1 WritePIO8(ATA_LBA_MSB_REG, 0);
67 1
68 1 init_udma_read(); //initialize UDMA relegated register
69 1 WritePIO8(ATA_COMMAND_REG, 0xC8); //write READ command to IDE register
70 1 while ((ReadATAPI_STATUS_REG() & 0x88) != 0x08); //wait for IDE device ready
71 1 ReadUDMA(0x200); //FS7805 start read data with APLIF
72 1 while ((ReadATAPI_STATUS_REG() != 0x50));
73 1
74 1 }
75
76 void WriteOutFIFO (INT8U sector)
77 {
78 1 union
79 1 {
80 1 INT8U Val;
81 1 struct
82 1 {
83 1 INT8U Count0 : 3;
84 1 INT8U : 1;
85 1 INT8U Count1 : 3;
86 1 INT8U : 1;
87 1 } Bit;
88 1 } HighReg;
89 1 INT16U i;
90 1
91 1 for (i = 0; i < BYTES_PER_SECTOR; i++)
92 1 OutBuffer[i] = (i + sector) ;
93 1
94 1 Length.Val = BYTES_PER_SECTOR;
95 1 HighReg.Val = EP1CNTH;
96 1 ParseOut();
97 1 EP1CNT0L = Length.Byte[1]; // Write count low byte
98 1 if (UsbDmaBuffer==DMA_FIFOA0)
99 1 {
100 2 HighReg.Bit.Count0 = Length.Byte[0] & 0x07;
101 2 HighReg.Val = HighReg.Val | bmCNT0HWEN;
102 2 }
103 1 else
104 1 {
105 2 HighReg.Bit.Count1 = Length.Byte[0] & 0x07;
106 2 HighReg.Val = HighReg.Val | bmCNT1HWEN;
107 2 }
108 1 EP1CNTH = HighReg.Val; // Write count high byte
109 1
110 1 memcpy((INT8U xdata *)UsbDmaBuffer, OutBuffer, BYTES_PER_SECTOR);// Copy data
111 1
112 1 if (UsbDmaBuffer==DMA_FIFOA0)
113 1 {
114 2 EPAFIFOCS = 0x44; // Set FULL bit
115 2 SFI_SKIP = 0x01;
116 2 }
C51 COMPILER V7.02b MAIN 01/29/2007 09:36:07 PAGE 3
117 1 else
118 1 {
119 2 EPAFIFOCS = 0x88; // Set FULL bit
120 2 SFI_SKIP = 0x41;
121 2 }
122 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 362 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 516 3
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 + -