📄 u_func_b.lst
字号:
C51 COMPILER V8.02 U_FUNC_B 07/21/2008 09:40:01 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE U_FUNC_B
OBJECT MODULE PLACED IN U_func_b.OBJ
COMPILER INVOKED BY: C:\keil c51\C51\BIN\C51.EXE U_func_b.c LARGE BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<c8051f020.h>
2 #include<intrins.h>
3 #include"lcd.h"
4 #include"read_U.h"
5 #include"read_U_b.h"
6 #include"read_U_a.h"
7 //#include"infrared_receive.h"
8 #include<stdlib.h>
9
10
11 void CH375HM_INDEX_WR_b(index_b)
12 {
13 1
14 1 P5=index_b;
15 1 USB_A0b=1;
16 1 //P74OUT = 0x0C;
17 1 USB_RDb=1;
18 1
19 1 USB_CSb=0;
20 1 USB_WRb=0;
21 1 Delay();
22 1 USB_WRb=1;
23 1 USB_CSb=1;
24 1 USB_A0b=1;
25 1 P5=0xff;
26 1 }
27 void CH375HM_DATA_WR_b(Data)
28 {
29 1 P5=Data;
30 1 //P74OUT = 0x0C;
31 1 USB_A0b=0;
32 1 USB_CSb=0;
33 1 USB_WRb=0;
34 1 Delay();
35 1 USB_WRb=1;
36 1 USB_CSb=1;
37 1 USB_A0b=1;
38 1 P5=0xff;
39 1 }
40
41 unsigned char CH375HM_DATA_RD_b(void)
42 {
43 1 unsigned char m;
44 1 //P74OUT = 0x0C;
45 1 USB_A0b=0;
46 1 USB_CSb=0;
47 1 USB_RDb=0;
48 1 Delay();
49 1 m=P5;
50 1 USB_RDb=1;
51 1 USB_CSb=1;
52 1 USB_A0b=1;
53 1 return (m);
54 1 }
55
C51 COMPILER V8.02 U_FUNC_B 07/21/2008 09:40:01 PAGE 2
56 unsigned char Init_Disk_b()
57 {
58 1 unsigned char sta;
59 1 CH375HM_INDEX_WR_b(DISK_INIT);
60 1 Delay();
61 1 sta=Wait_Int_b();
62 1 while(sta!=0x14);
63 1 sta=USB_INT_DISK_ERR;
64 1 CH375HM_INDEX_WR_b(DISK_READY);
65 1 Delay();
66 1 sta=Wait_Int_b();
67 1 CH375HM_INDEX_WR_b( DISK_R_SENSE ); // 检查USB 存储设备的错误
68 1 sta = Wait_Int_b( ); // 等待中断并获取状态
69 1 CH375HM_INDEX_WR_b(DISK_READY);
70 1 sta=Wait_Int_b();
71 1 return sta;
72 1 }
73
74 unsigned char Set_Mode_b(unsigned char mode)
75 {
76 1 unsigned char temp;
77 1 CH375HM_INDEX_WR_b(SET_USB_MODE);
78 1 CH375HM_DATA_WR_b(mode);
79 1 temp=CH375HM_DATA_RD_b();
80 1 return (temp);
81 1 }
82
83
84
85
86 unsigned char Rd_Sector_b(unsigned long LBA)
87 {
88 1 unsigned char sta,i,j,Next_Num=0;
89 1 unsigned char xdata *pt;
90 1 sta=0x1f;
91 1 pt=Data_Buf;
*** WARNING C182 IN LINE 91 OF U_FUNC_B.C: pointer to different objects
92 1 CH375HM_INDEX_WR_b( DISK_READ ); //从USB存储器读数据块
93 1 CH375HM_DATA_WR_b( (unsigned char)LBA ); //LBA的最低8位
94 1 CH375HM_DATA_WR_b( (unsigned char)( LBA >> 8 ) );
95 1 CH375HM_DATA_WR_b( (unsigned char)( LBA >> 16 ) );
96 1 CH375HM_DATA_WR_b( (unsigned char)( LBA >> 24 ) ); //LBA的最高8位
97 1 CH375HM_DATA_WR_b( 1 ); //扇区数
98 1 Delay();
99 1 for(i=0;i<9;i++)
100 1 {
101 2 sta=Wait_Int_b();
102 2 if(sta==0x1f||sta==0x14) return sta;
103 2 CH375HM_INDEX_WR_b(RD_USB_DATA);
104 2 Next_Num=CH375HM_DATA_RD_b();
105 2 for(j=0;j<Next_Num;j++)
106 2 {
107 3 *pt=CH375HM_DATA_RD_b();
108 3 pt++;
109 3 }
110 2 CH375HM_INDEX_WR_b(DISK_RD_GO);
111 2 }
112 1 return 0xff;
113 1 }
114
115 void Wr_Sector_b(unsigned long LBA)
116 {
C51 COMPILER V8.02 U_FUNC_B 07/21/2008 09:40:01 PAGE 3
117 1 unsigned char sta,i,j;
118 1 unsigned char xdata *pt;
119 1 sta=0x1f;
120 1 pt=Data_Buf;
*** WARNING C182 IN LINE 120 OF U_FUNC_B.C: pointer to different objects
121 1 CH375HM_INDEX_WR_b( DISK_WRITE ); // 写数据块到USB存储器
122 1 CH375HM_DATA_WR_b( (unsigned char)LBA ); // LBA的最低8位
123 1 CH375HM_DATA_WR_b( (unsigned char)( LBA >> 8 ) );
124 1 CH375HM_DATA_WR_b( (unsigned char)( LBA >> 16 ) );
125 1 CH375HM_DATA_WR_b( (unsigned char)( LBA >> 24 ) ); // LBA的最高8位
126 1 CH375HM_DATA_WR_b( 1 ); // 扇区数
127 1 Delay();
128 1 for(i=0;i<9;i++)
129 1 {
130 2 sta=sta=Wait_Int_b();
131 2 if(sta==0x1f||sta==0x14) return;
132 2 CH375HM_INDEX_WR_b(WR_USB_DATA7);
133 2 CH375HM_DATA_WR_b(64);
134 2 for(j=0;j<64;j++)
135 2 {
136 3 CH375HM_DATA_WR_b(*pt);
137 3 pt++;
138 3 }
139 2 CH375HM_INDEX_WR_b(DISK_WR_GO);
140 2 }
141 1 }
142
143
144 unsigned char Wait_Int_b()
145 {
146 1 unsigned sta=0,temp=0;
147 1 while(USB_INTb);
148 1
149 1 CH375HM_INDEX_WR_b(GET_STATUS);
150 1 Delay();
151 1 sta=CH375HM_DATA_RD_b();
152 1 return sta;
153 1 }
154
155 unsigned char Get_Base_b()
156 {
157 1 unsigned char a,b;
158 1 unsigned char xdata *pt;
159 1 Rd_Sector_b(0x00000000);
160 1 pt=Data_Buf;
*** WARNING C182 IN LINE 160 OF U_FUNC_B.C: pointer to different objects
161 1 a=*pt;b=*(pt+1);
162 1 if(a!=0xeb&&b!=0x58)
163 1 {
164 2 hidd_sect_b=*(pt+0x1c6);
165 2 Rd_Sector_b( (unsigned long)hidd_sect_b );
166 2 }
167 1 a=*pt;b=*(pt+1);
168 1 if(a==0xeb&&b==0x58)
169 1 {
170 2 hidd_sect_b=*(pt+0x1c);
171 2 byte_sect_b=*(pt+0x0b)+(*(pt+0x0c)<<8);
172 2 sect_clust_b=*(pt+0x0d);
173 2 resv_sect_b=*(pt+0x0e)+(*(pt+0x0f)<<8);
174 2 sect_fat_b=*(pt+0x24)+(*(pt+0x25)<<8);
175 2 root_b=hidd_sect_b+resv_sect_b+2*sect_fat_b;
176 2 return 0x14;
C51 COMPILER V8.02 U_FUNC_B 07/21/2008 09:40:01 PAGE 4
177 2 }
178 1 else return 0x1f;
179 1 }
180
181
182 void Show_Disk_b()
183 {
184 1 unsigned char i;
185 1 unsigned char *disk_name;
186 1 unsigned char xdata *pt;
187 1 unsigned int data charact;
188 1 Rd_Sector_b(root_b);
189 1 pt=Data_Buf;
*** WARNING C182 IN LINE 189 OF U_FUNC_B.C: pointer to different objects
190 1 for(i=0;i<16;i++)
191 1 {
192 2 // charact=Data_Buf[0x0b+i*32]; //这种也赋不了
193 2 charact=*(pt+0x0b+i*32); //charact不定义为data就赋不了值。???
194 2 if(charact==0x08)
195 2 {
196 3 disk_name=pt+i*32; //disk_name定义成指向xdata也赋不了值。???
197 3 *(disk_name+11)=0;
198 3 LCD_Printf(2,2,disk_name);
199 3 return;
200 3 }
201 2 }
202 1
203 1 }
204
205
206 void Get_Lfat_b()
207 {
208 1 unsigned char xdata *pt;
209 1 unsigned char temp1,temp2,i=0,*na,nai=0;
210 1 unsigned int Temp_Ofst;
211 1 unsigned char which[26]={1,3,5,7,9,14,16,18,20,22,24,28,30}; //确定长文件名储存的地方
212 1 pt=Data_Buf;
*** WARNING C182 IN LINE 212 OF U_FUNC_B.C: pointer to different objects
213 1 na=Fat[Currt_File].name;
214 1 if(St_Ofst_b==0) //若短文件名在扇区的第一个32字节,则指向上一个扇区的最后32字节
215 1 {
216 2 Rd_Sector_b(Rd_Rec.Last_Sect);
217 2 Temp_Ofst=480;
218 2 }
219 1 else Temp_Ofst=St_Ofst_b-32;//若短文件名不在本扇区的第一个32字节,则指向上一个32字节
220 1 do{ //读长文件名
221 2 while(i<13)
222 2 {
223 3 temp1=*(pt+Temp_Ofst+which[i]);
224 3 if(temp1==0x2e)
225 3 {
226 4 *(na+nai)=0;
227 4 break;
228 4 }
229 3 temp2=*(pt+Temp_Ofst+which[i]+1);
230 3 if(temp2!=0)
231 3 {
232 4 *(na+nai)=0x7e;
233 4 *(na+nai+1)=0x31;
234 4 *(na+nai+2)=0;
235 4 break;
236 4 }
C51 COMPILER V8.02 U_FUNC_B 07/21/2008 09:40:01 PAGE 5
237 3 *(na+nai)=temp1;
238 3 nai++;
239 3 i++;
240 3 }
241 2 if(Temp_Ofst==0) //若已在本扇区最开始
242 2 {
243 3 if(*(pt+Temp_Ofst)<0x3f) break; //若是长文件名的最后一段
244 3 else
245 3 {
246 4 Rd_Sector_b(Rd_Rec.Last_Sect);
247 4 Temp_Ofst=512;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -