?? ata.lst
字號:
C51 COMPILER V7.50 ATA 11/03/2008 13:09:04 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE ATA
OBJECT MODULE PLACED IN ATA.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ATA.C OPTIMIZE(9,SPEED) BROWSE INCDIR(D:\IDE_demo_code\INCLUDE\) DEBUG OBJE
-CTEXTEND PRINT(.\LST\ATA.lst)
line level source
1 #include <reg51.h>
2 #include <intrins.h>
3 #include <stdio.h >
4 #include "include\Typedef.h"
5 #include "include\AT89C51SND.h"
6 #include "include\config.h"
7 #include "include\constant.h"
8 #include "include\global.h"
9 #include "include\macro.h"
10 #include "include\external.h"
11 #include "include\gpio.h"
12
13 /**************************************************************************
14 * C O N S T A N T S
15 *************************************************************************/
16
17 /**************************************************************************
18 * M A C R O S
19 *************************************************************************/
20
21 /**************************************************************************
22 * D A T A T Y P E S
23 *************************************************************************/
24
25 /**************************************************************************
26 * G L O B A L D A T A
27 *************************************************************************/
28
29
30 /**************************************************************************
31 * Function Name:
-
32 *
-
33 * Descriptions:
34 *
35 * Arguments:
36 *
37 * Returns: None
-
38 **************************************************************************/
39 void ATAInit()
40 {
41 1 gATACapacity = 0;
42 1 ATA_RESET();
43 1 msDelay();
44 1 msDelay();
45 1 msDelay();
46 1 WriteReg(DRV_HEAD,0xa0);
47 1
48 1 ATAWaitCardReady();
49 1 gATACapacity = ATACapacity();
50 1 printf("%08lu\n",gATACapacity);
51 1
C51 COMPILER V7.50 ATA 11/03/2008 13:09:04 PAGE 2
52 1 }
53 /**************************************************************************
54 * Function Name:
-
55 *
-
56 * Descriptions:
57 *
58 * Arguments:
59 *
60 * Returns: None
-
61 **************************************************************************/
62 void ATA_RESET(void)
63 {
64 1 P4_5=0;
65 1 msDelay();
66 1 msDelay();
67 1 msDelay();
68 1 P4_5=1;
69 1
70 1 }
71 /**************************************************************************
72 * Function Name:
-
73 *
-
74 * Descriptions:
75 *
76 * Arguments:
77 *
78 * Returns: None
-
79 **************************************************************************/
80 UINT8 ATAWaitDataReady(void)
81 {
82 1 UINT8 temp;
83 1 gTB = 0;
84 1 do { temp=ReadReg(ALT_STATUS);
85 2 if ( (temp & 0x01)||(gTB>=10000) ) return temp;
86 2 } while((temp & 0x89)!=0x08); //[11/08]
87 1 gTB = 0;
88 1 do {
89 2 temp=ReadReg(STATUS);
90 2
91 2 if ( (temp & 0x01)||(gTB>=10000) ) return temp;
92 2 } while((temp & 0x89)!=0x08); //[11/08]
93 1
94 1 return 0;
95 1
96 1 }
97
98 /**************************************************************************
99 * Function Name:
-
100 *
-
101 * Descriptions:
102 *
103 * Arguments:
104 *
105 * Returns: None
C51 COMPILER V7.50 ATA 11/03/2008 13:09:04 PAGE 3
-
106 **************************************************************************/
107 /*wait BSY=0,DRDY=1*/
108 UINT8 ATAWaitCardReady()
109 {
110 1 UINT8 temp;
111 1 do {
112 2 temp=ReadReg(ALT_STATUS);
113 2 } while((temp & 0xC0)!=0x40);
114 1
115 1 do {
116 2 temp=ReadReg(STATUS);
117 2 } while((temp & 0xC0)!=0x40);
118 1
119 1 return 0;
120 1 }
121
122 /**************************************************************************
123 * Function Name:ATAReadID
-
124 *
-
125 * Descriptions:
126 *
127 * Arguments:
128 *
129 * Returns: None
-
130 **************************************************************************/
131
132 void ATAReadID(void)
133 {
134 1 ATAWaitCardReady();
135 1 WriteReg(DRV_HEAD,0XA0);
136 1 WriteReg(COMMAND,0XEC);
137 1 ATAWaitDataReady();
138 1 Read1Sector();
139 1 ATAWaitCardReady();
140 1
141 1 }
142
143 /**************************************************************************
144 * Function Name:ATACapacity
-
145 *
-
146 * Descriptions:
147 *
148 * Arguments:
149 *
150 * Returns: None
-
151 **************************************************************************/
152 UINT32 ATACapacity(void)
153 {
154 1 LongByte lbTotal ;
155 1 ATAReadID() ;
156 1 lbTotal.BYTE.B3=DMA_BUF[123];
157 1 lbTotal.BYTE.B2=DMA_BUF[122];
158 1 lbTotal.BYTE.B1=DMA_BUF[121];
159 1 lbTotal.BYTE.B0=DMA_BUF[120];
160 1 return(lbTotal.ULONG);
C51 COMPILER V7.50 ATA 11/03/2008 13:09:04 PAGE 4
161 1 }
162
163 /**************************************************************************
164 * Function Name:ATAGetCapacity
-
165 *
-
166 * Descriptions:
167 *
168 * Arguments:
169 *
170 * Returns: None
-
171 **************************************************************************/
172 UINT32 ATAGetCapacity(void)
173 {
174 1 return gATACapacity;
175 1 }
176
177 /**************************************************************************
178 * Function Name:ATAMultipleRead
-
179 *
-
180 * Descriptions:
181 *
182 * Arguments:
183 *
184 * Returns: None
-
185 **************************************************************************/
186 UINT8 ATAMultipleRead(UINT32 u32SectorNo)
187 {
188 1 UINT8 i,j,Fcnt;
189 1 UINT16 bcnt=0;
190 1 bit begin_ping_pong=0;
191 1 union
192 1 {
193 1 UINT32 sn;
194 1 UINT8 secno[4];
195 1 } s;
196 1 s.sn=u32SectorNo;
197 1 if (ATAWaitCardReady()) {
198 2
199 2 return 1;
200 2 }
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -