📄 ch375pcinterface.lst
字号:
C51 COMPILER V7.20 CH375PCINTERFACE 11/11/2005 10:20:32 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE CH375PCINTERFACE
OBJECT MODULE PLACED IN CH375PCInterface.OBJ
COMPILER INVOKED BY: D:\Program Files\C51\BIN\C51.EXE CH375PCInterface.C BROWSE DEBUG OBJECTEXTEND
line level source
1 //=================================================================================================
2 //*************************************************************************************************
3 // Module Name : CH375PCInterface.C
4 // Device object:
5 // Create date : 2005-11-7
6 // Modify date : 2005-11-7
7 // Description : USB 1.1 PC Interface for CH375
8 //
9 // Author : Li yuanzheng
10 // Version : V1.0
11 //*************************************************************************************************
12 //=================================================================================================
13 //
14 //-------------------------------------------------------------------------------------------------
15 // Includes
16 //-------------------------------------------------------------------------------------------------
17
18 /*
19 ****************************************
20 ** USB 1.1 Host Examples for CH375 **
21 ** KC7.0@MCS-51 **
22 ****************************************
23 */
24 /* CH375作为USB主机接口的程序示例 */
25
26
27
28 /* MCS-51单片机C语言的示例程序, U盘数据读写 */
29
30
31
32 #include "common.h"
*** WARNING C318 IN LINE 32 OF CH375PCInterface.C: can't open file 'common.h'
33
34
35
36 unsigned char volatile xdata CH375_CMD_PORT _at_ 0xBDF1; /* CH375命令端口的I/O地址 */
37 unsigned char volatile xdata CH375_DAT_PORT _at_ 0xBCF0; /* CH375数据端口的I/O地址 */
38 extern unsigned char xdata DBUF[BUFFER_LENGTH];
*** ERROR C202 IN LINE 38 OF CH375PCINTERFACE.C: 'BUFFER_LENGTH': undefined identifier
*** ERROR C136 IN LINE 38 OF CH375PCINTERFACE.C: invalid dimension size: [0]
39
40
41
42 //sbit LED_OUT = 0x90^4; /* P1.4 低电平驱动LED显示,用于监控演示程序的进度 */
43 sbit CH375_INT_WIRE = 0xB0^2; /* P3.2, INT0, 连接CH375的INT#引脚,用于查询中断状态 */
44
45
46
47
48 #define mDelay1uS( ) /* 对于MCS51单片机,通常不需要1uS延时 */
49
50
51
52 /* 延时2微秒,请根据单片机速度 */
C51 COMPILER V7.20 CH375PCINTERFACE 11/11/2005 10:20:32 PAGE 2
53 //void mDelay1uS( )
54 //{
55 // unsigned char i;
56 // for ( i = 1; i != 0; i -- );
57 //}
58
59
60
61 /* 延时2微秒,请根据单片机速度 */
62 void mDelay2uS( )
63 {
64 1 unsigned char i;
65 1 for ( i = 2; i != 0; i -- );
66 1 }
67
68
69
70 /* 向CH375命令端口写命令数据 */
71 void CH375_CMD_PORT_d_out( INT8 d_out )
*** ERROR C141 IN LINE 71 OF CH375PCINTERFACE.C: syntax error near 'd_out', expected ')'
72 {
73 1 mDelay1uS( );
74 1 CH375_CMD_PORT=d_out;
*** ERROR C202 IN LINE 74 OF CH375PCINTERFACE.C: 'd_out': undefined identifier
75 1 mDelay2uS( ); /* 至少延时2uS */
76 1 }
77
78
79
80 /* 向CH375数据端口写数据 */
81 void CH375_DAT_PORT_d_out( INT8 d_out )
*** ERROR C141 IN LINE 81 OF CH375PCINTERFACE.C: syntax error near 'd_out', expected ')'
82 {
83 1 CH375_DAT_PORT=d_out;
*** ERROR C202 IN LINE 83 OF CH375PCINTERFACE.C: 'd_out': undefined identifier
84 1 mDelay1uS( );
85 1 }
86
87
88
89 /* 从CH375命令端口读数据 */
90 INT8 CH375_DAT_PORT_in( )
*** ERROR C129 IN LINE 90 OF CH375PCINTERFACE.C: missing ';' before 'CH375_DAT_PORT_in'
91 {
92 mDelay1uS( );
93 return( CH375_DAT_PORT );
94 }
95
96
97
98 /* 延时毫秒,不精确 */
99 void DelayMs(unsigned char nFactor)
100 {
101 unsigned char i;
102 unsigned int j;
103 for(i=0; i<nFactor; i++) for(j=0;j<1000;j++) j=j;
104 }
105
106
107
108 /* 等待CH375中断并获取状态 */
109 unsigned char mWaitInterrupt( )
C51 COMPILER V7.20 CH375PCINTERFACE 11/11/2005 10:20:32 PAGE 3
110 {
111 unsigned char c;
112 while ( CH375_INT_WIRE ); /* 如果CH375的中断引脚输出高电平则等待 */
113 CH375_CMD_PORT_d_out( CMD_GET_STATUS); /* 获取当前中断状态 */
114 c = CH375_DAT_PORT_in(); /* 返回中断状态 */
115 /* if ( c == USB_INT_DISCONNECT ) /* 检测到USB设备断开事件 */
116 /* else if ( c == USB_INT_CONNECT ) /* 检测到USB设备连接事件 */
117 return( c );
118 }
119
120
121
122 /* 设置CH375为USB主机方式 */
123 unsigned char mCH375Init( )
124 {
125 unsigned char i;
126 #ifdef TEST_CH375_PORT
unsigned char c;
CH375_CMD_PORT_d_out(CMD_CHECK_EXIST); /* 测试工作状态 */
CH375_DAT_PORT_d_out( 0x55); /* 测试数据 */
c = CH375_DAT_PORT_in(); /* 返回数据应该是测试数据取反 */
if ( c != 0xaa ) { /* CH375出错 */
for ( i = 100; i != 0; i -- ) { /* 强制数据同步 */
CH375_CMD_PORT_d_out( CMD_RESET_ALL ); /* CH375执行硬件复位 */
c = CH375_DAT_PORT_in(); /* 延时 */
}
DelayMs( 50 ); /* 延时至少30mS */
}
#endif
139 CH375_CMD_PORT_d_out( CMD_SET_USB_MODE); /* 设置USB工作模式 */
140 CH375_DAT_PORT_d_out( 6); /* 模式代码,自动检测USB设备连接 */
141 for ( i = 0xff; i != 0; i -- ) { /* 等待操作成功,通常需要等待10uS-20uS */
142 if ( CH375_DAT_PORT_in() == CMD_RET_SUCCESS ) break; /* 操作成功 */
143 }
144 if ( i != 0 ) return( 0 ); /* 操作成功 */
145 else return( 0xff ); /* CH375出错,例如芯片型号错或者处于串口方式或者不支持 */
146 }
147
148
149 --------------------------------------------------------------------------------
150
151 -- 作者:lxlong
152 -- 发布时间:2004-12-6 12:55:54
153
154 --
155
156 /* 初始化磁盘 */
157 unsigned char mInitDisk( )
158 {
159 unsigned char mIntStatus;
160 CH375_CMD_PORT_d_out( CMD_DISK_INIT); /* 初始化USB存储器 */
161 mIntStatus = mWaitInterrupt( ); /* 等待中断并获取状态 */
162 //if ( mIntStatus == USB_INT_SUCCESS ) return( 0 ); /* U盘已经成功初始化 */
163 return mIntStatus ; /* 出现错误 */
164 }
165
166 unsigned char ReadCapacity(void)
167 {
168 unsigned char *mBufferPoint;
169 unsigned char mIntStatus,mLength;
170 CH375_CMD_PORT_d_out( CMD_DISK_SIZE); /* 读取容量 */
171 mBufferPoint=DBUF;
C51 COMPILER V7.20 CH375PCINTERFACE 11/11/2005 10:20:32 PAGE 4
172 mIntStatus = mWaitInterrupt( );
173 if ( mIntStatus == USB_INT_DISK_READ )
174 { /* USB存储器读数据块,请求数据读出 */
175 CH375_CMD_PORT_d_out( CMD_RD_USB_DATA); /* 从CH375缓冲区读取数据块 */
176 mLength = CH375_DAT_PORT_in(); /* 后续数据的长度 */
177 while ( mLength ) { /* 根据长度读取数据 */
178 *mBufferPoint = CH375_DAT_PORT_in(); /* 读出数据并保存 */
179 mBufferPoint ++;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -