📄 usbhost.lst
字号:
C51 COMPILER V8.01 USBHOST 03/28/2006 09:49:40 PAGE 1
C51 COMPILER V8.01, COMPILATION OF MODULE USBHOST
OBJECT MODULE PLACED IN UsbHost.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE UsbHost.c LARGE OPTIMIZE(9,SIZE) BROWSE DEBUG OBJECTEXTEND CODE
line level source
1 /*
2 * Copyright (c) 2004,成都港顺科技发展有限公司
3 * All rights reserved.
4 *
5 * 编 译 器:Keil:C Compiler:7.20;Assembler:7.10
6 * 工程名称:POS-Test.UV2
7 * 文件名称:Windows.C
8 * 摘 要:窗体显示
9 *
10 * 单 片 机:uPSD3254
11 * 当前版本:0.4
12 * 作 者:范小飞
13 * 完成日期:2004-12-7 14:45
14 */
15
16 #include "Main.h"
17 #include "CH375HFC.H"
18 #define LIB_CFG_FILE_IO 1 /* 文件读写的数据的复制方式,0为"外部子程序",1为"内部复制" */
19 #define LIB_CFG_INT_EN 0 /* CH375的INT#引脚连接方式,0为"查询方式",1为"中断方式" */
20 #define DISK_BASE_BUF_ADDR 0x7000 /* 外部RAM的磁盘数据缓冲区的起始地址,从该单元开始的缓冲区长度为SECTOR_S
-IZE */
21 #define FILE_DATA_BUF_ADDR 0x5000 /* 外部RAM的文件数据缓冲区的起始地址,缓冲区长度不小于一次读写的数据长度
-,字节模式不用该缓冲区 */
22
23
24
25
26 #define USBA0COM 0xe800
27 #define USBA0DAT 0xe000
28
29
30
31 void mDelay100mS( ) //延时
32 {
33 1 UINT8 i, j, c;
34 1 for ( i = 200; i != 0; i -- ) for ( j = 200; j != 0; j -- ) c+=3;
35 1 }
36 void mDelay1_2uS( )
37 {
38 1 return;
39 1 }
40 void xWriteCH375Cmd( UINT8 mCmd ) //写命令函数
41 {
42 1
43 1 XBYTE[USBA0COM]=mCmd;
44 1
45 1 }
46
47 void xWriteCH375Data( UINT8 mData ) //写数据函数
48 {
49 1
50 1 XBYTE[USBA0DAT]=mData;
51 1
52 1 }
53 UINT8 xReadCH375Data( void ) //读数据函数
C51 COMPILER V8.01 USBHOST 03/28/2006 09:49:40 PAGE 2
54 {
55 1 UINT8 i;
56 1 i=XBYTE[USBA0DAT];
57 1 return i;
58 1 }
59 void CH375_PORT_INIT( ) //端口初始化
60 {
61 1 xWriteCH375Cmd(0x05);
62 1 }
63
64
65
66 /* 将程序空间的字符串复制到内部RAM中,返回字符串长度 */
67 UINT8 mCopyCodeStringToXRAM( UINT8 xdata *iDestination, UINT8 code *iSource )
68 {
69 1 UINT8 i = 0;
70 1 while ( *iDestination = *iSource )
71 1 {
72 2 iDestination ++;
73 2 iSource ++;
74 2 i ++;
75 2 }
76 1 return( i );
77 1 }
78
79
80 /* 检查操作状态,如果错误则显示错误代码并停机 */
81 void mStopIfError( UINT8 iError )
82 {
83 1 if ( iError == ERR_SUCCESS ) return; /* 操作成功 */
84 1 else
85 1 {
86 2 //显示错误代码 iError
87 2 mDelay100mS( );
88 2 while(1);
89 2 }
90 1 }
91
92 void UsbByteWrite(UINT8 *filesname, uchar len,uchar *str) //U盘写字节写函数
93 {
94 1 UINT8 i;
95 1 // uchar j,c;
96 1 // ulong k;
97 1 uint l,m,n;
98 1 CH375_PORT_INIT( );
99 1 mDelay100mS( );
100 1 i=CH375LibInit(); //初始化文件库
101 1 mStopIfError(i);
102 1
103 1 while(1)
104 1 {
105 2
106 2 while(CH375DiskStatus !=DISK_CONNECT)xQueryInterrupt(); //检查U盘是否己连接,如果己连接则断续,如果未连
-接则等待
107 2 mDelay100mS(); //延时
108 2 mDelay100mS(); //延时
109 2 for ( i = 0; i < 10; i ++ ) //检查U盘是否准备好
110 2 {
111 3 mDelay100mS( );
112 3 if ( CH375DiskReady( ) == ERR_SUCCESS ) break; //如果U盘准备好则继续下一步操作
113 3 }
114 2 mCopyCodeStringToXRAM( mCmdParam.Open.mPathName, filesname ); //对文件名进行操作
C51 COMPILER V8.01 USBHOST 03/28/2006 09:49:40 PAGE 3
115 2 i = CH375FileOpen( ); //打开文件
116 2 if ( i == ERR_SUCCESS || i == ERR_MISS_FILE ) //如果文件打开成功或者文件名不存在则进行下一步
-操作
117 2 {
118 3 if(i==ERR_MISS_FILE) //如果是文件名不存在则新建文件
119 3 {
120 4 i = CH375FileCreate( ); //按给定的文件名建立文件
121 4 mStopIfError( i ); //判断返回状态是否有错:这里指新建文件是否成功
122 4 }
123 3 mCmdParam.ByteLocate.mByteOffset = 0xffffffff; /* 移到文件的尾部 */
124 3 i = CH375ByteLocate( );
125 3 mStopIfError( i );
126 3
127 3 if(len>30)
128 3 {
129 4 l=len/30;
130 4 m=len%30;
131 4 n=0;
132 4
133 4 while(l)
134 4 {
135 5 for(i=0;i<30;i++)
136 5 {
137 6 mCmdParam.ByteWrite.mByteBuffer[i]=*str;
138 6 str++;
139 6 }
140 5 mCmdParam.ByteWrite.mByteCount = 30;
141 5 i = CH375ByteWrite( ); /* 以字节为单位向文件写入数据,单次读写的长度不能超过MAX_BYTE_IO */
142 5 mStopIfError( i );
143 5 l--;
144 5 }
145 4 if(m)
146 4 {
147 5 while(m)
148 5 {
149 6 mCmdParam.ByteWrite.mByteBuffer[i]=*str;
150 6 str++;
151 6 m--;
152 6 }
153 5 mCmdParam.ByteWrite.mByteCount = m;
154 5 i = CH375ByteWrite( );
155 5 mStopIfError( i );
156 5
157 5 }
158 4 else
159 4 {
160 5 mCmdParam.Close.mUpdateLen = 1; //文件长度更新
161 5 i = CH375FileClose( ); //写文件完成,关闭文件
162 5 mStopIfError( i );
163 5 break;
164 5
165 5 }
166 4 }
167 3 else
168 3 {
169 4 for(i=0;i<len;i++)
170 4 {
171 5
172 5 mCmdParam.ByteWrite.mByteBuffer[i]=*str;
173 5 str++;
174 5
175 5 }
C51 COMPILER V8.01 USBHOST 03/28/2006 09:49:40 PAGE 4
176 4 mCmdParam.ByteWrite.mByteCount = len;
177 4 i = CH375ByteWrite( ); /* 以字节为单位向文件写入数据,单次读写的长度不能超过MAX_BYTE_IO */
178 4 mStopIfError( i );
179 4 }
180 3 mCmdParam.Close.mUpdateLen = 1; //文件长度更新
181 3 i = CH375FileClose( ); //写文件完成,关闭文件
182 3 mStopIfError( i );
183 3 break;
184 3 }
185 2 else mStopIfError( i );
186 2 }
187 1 //判断返回状态是否有错:这里指关闭文件是否成功
188 1 }
189
190 void UsbFilesWrite(UINT8 *filesname,ulong Sectorlen ,uchar *str) //U盘写字节写函数
191 {
192 1 UINT8 i;
193 1 uint c,b;
194 1 CH375_PORT_INIT( );
195 1 mDelay100mS( ); //端口初始化:这里指初始化串口
196 1 i=CH375LibInit(); //初始化文件库
197 1 mStopIfError(i);
198 1 while(1)
199 1 {
200 2 while(CH375DiskStatus !=DISK_CONNECT)xQueryInterrupt(); //检查U盘是否己连接,如果己连接则断续,如果未连
-接则等待
201 2
202 2 for ( i = 0; i < 2; i ++ ) //检查U盘是否准备好
203 2 {
204 3 if ( CH375DiskReady( ) == ERR_SUCCESS ) break; //如果U盘准备好则继续下一步操作
205 3 }
206 2 mCopyCodeStringToXRAM( mCmdParam.Open.mPathName, filesname ); //对文件名进行操作
207 2 i = CH375FileOpen( ); //打开文件
208 2 if ( i == ERR_SUCCESS || i == ERR_MISS_FILE ) //如果文件打开成功或者文件名不存在则进行下一步
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -