📄 ch375hf4.lst
字号:
C51 COMPILER V7.20 CH375HF4 11/10/2005 21:58:36 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE CH375HF4
OBJECT MODULE PLACED IN CH375HF4.OBJ
COMPILER INVOKED BY: C:\Program Files\Keil Uvision V7.20\C51\BIN\C51.EXE CH375HF4.C BROWSE DEBUG OBJECTEXTEND
line level source
1 //=================================================================================================
2 //*************************************************************************************************
3 // Module Name : CH375HF4.C
4 // Device object:
5 // Create date : 2005-11-10
6 // Modify date : 2005-11-10
7 // Description : USB 1.1 Host for CH375
8 // USB 2.0 Host for CH375A
9 // Author : Li yuanzheng
10 // Version : V1.0
11 //*************************************************************************************************
12 //=================================================================================================
13 //
14 //-------------------------------------------------------------------------------------------------
15 // Includes
16 //-------------------------------------------------------------------------------------------------
17
18 #include <regx52.h> // SFR declarations
19 //#include <string.h>
20 //#include <stdio.h>
21 //#include <intrins.h>
22 #include "CH375HF4.H"
*** ERROR C202 IN LINE 1069 OF CH375HF4.H: 'CH375_CMD_PORT_ADDR': undefined identifier
*** ERROR C202 IN LINE 1070 OF CH375HF4.H: 'CH375_DAT_PORT_ADDR': undefined identifier
23
24 //-------------------------------------------------------------------------------------------------
25 //
26
27
28 //=================================================================================================
29 //=================================================================================================
30 //
31 //=================================================================================================
32 //=================================================================================================
33 //
34 //-------------------------------------------------------------------------------------------------
35 // 中断状态查询处理程序
36 //-------------------------------------------------------------------------------------------------
37 //
38 #ifndef NO_DEFAULT_CH375_INT
39 // 在应用程序中定义 NO_DEFAULT_CH375_INT 可以禁止默认的中断处理程序,然后用自行编写的程序代替它
40 //-------------------------------------------------------------------------------------------------
41 //-------------------------------------------------------------------------------------------------
42 #if LIB_CFG_INT_EN == 0
43 // CH375的INT#引脚连接方式为"查询方式"
44 //-------------------------------------------------------------------------------------------------
45 // 查询 CH375 中断并更新中断状态
46 void xQueryInterrupt( void )
47 {
48 1 //while ( CH375_INT_WIRE ); // 如果CH375的中断引脚输出高电平则等待
49 1 if( !CH375_INT_WIRE ) // 中断请求
*** ERROR C202 IN LINE 49 OF CH375HF4.C: 'CH375_INT_WIRE': undefined identifier
50 1 {
51 2 CH375_CMD_PORT = CMD_GET_STATUS; // 获取当前中断状态
52 2 CH375IntStatus &= 0x80; if ( CH375IntStatus ) CH375IntStatus = 0; // 操作无意义,用于至少延时2uS
C51 COMPILER V7.20 CH375HF4 11/10/2005 21:58:36 PAGE 2
53 2 CH375IntStatus = CH375_DAT_PORT; // 获取中断状态
54 2 if ( CH375IntStatus == USB_INT_DISCONNECT ) CH375DiskStatus = DISK_DISCONNECT; // 检测到USB设备断开事件
-
55 2 else if ( CH375IntStatus == USB_INT_CONNECT ) CH375DiskStatus = DISK_CONNECT; // 检测到USB设备连接事件
56 2 }
57 1 }
58
59 //-------------------------------------------------------------------------------------------------
60 #else
// LIB_CFG_INT_EN != 0, CH375的INT#引脚连接方式为"中断方式"
//-------------------------------------------------------------------------------------------------
// 查询中断状态,等待硬件中断
void xQueryInterrupt( void )
{
; // 该操作无意义,只是避免出现警告信息
}
// CH375中断服务程序,由CH375的INT#的低电平或者下降沿触发单片机中断
void CH375Interrupt( void ) interrupt CH375_INT_NO
{
CH375_CMD_PORT = CMD_GET_STATUS; // 获取中断状态并取消中断请求
CH375IntStatus &= 0x80; if ( CH375IntStatus ) CH375IntStatus = 0; // 操作无意义,用于至少延时2uS
CH375IntStatus = CH375_DAT_PORT; // 获取中断状态
if ( CH375IntStatus == USB_INT_DISCONNECT ) CH375DiskStatus = DISK_DISCONNECT; // 检测到USB设备断开事件
else if ( CH375IntStatus == USB_INT_CONNECT ) CH375DiskStatus = DISK_CONNECT; // 检测到USB设备连接事件
}
#endif
79
80 //-------------------------------------------------------------------------------------------------
81 #endif
82
83 //-------------------------------------------------------------------------------------------------
84 //-------------------------------------------------------------------------------------------------
85 //
86 #if LIB_CFG_FILE_IO == 0
// 文件读写的数据的复制方式为"外部子程序"
//-------------------------------------------------------------------------------------------------
//
//#ifdef LIB_CFG_FILE_IO_DEFAULT
// 如果应用程序中定义该值则使用默认"外部子程序",否则应该自行编写程序代替
//-------------------------------------------------------------------------------------------------
//
unsigned char xdata *current_buffer; // 保存文件数据读写时的缓冲区的当前指针,由应用程序在调用CH375FileRead
-X和CH375FileWriteX子程序前设置初值
// 该子程序由CH375的子程序库调用,用于从CH375读取文件数据到外部缓冲区,被CH375FileReadX调用
void xWriteToExtBuf( UINT8 mLength )
{
// if ( (UINT16)current_buffer + mLength >= (UINT16)&FILE_DATA_BUF + sizeof( FILE_DATA_BUF ) ) return; //
- 防止缓冲区溢出
if ( mLength )
{
do // 根据长度读取数据,实际上长度总是CH375_MAX_DATA_LEN,也就是64
{
*current_buffer = CH375_DAT_PORT; // 读出数据并保存,可以用这种方式将文件数据保存到单片机的各种串行存储
-器中
current_buffer ++;
} while ( -- mLength );
} // 复制上述数据的总时间不得超过2mS
else // 重试,恢复缓冲区起址,如果将文件数据读写的缓冲区的当前指针放在mCmdParam.ReadX.mDataBuffer中则会被自
-动恢复,无需下面的两行程序
{
C51 COMPILER V7.20 CH375HF4 11/10/2005 21:58:36 PAGE 3
current_buffer += (UINT16)mCmdParam.ReadX.mDataBuffer; // mDataBuffer中为负值
mCmdParam.ReadX.mDataBuffer = 0; // 为了支持重试,在调用CH375FileReadX之前也应该清0
}
}
#ifdef EN_DISK_WRITE
//-------------------------------------------------------------------------------------------------
// 该子程序由CH375的子程序库调用,用于从外部缓冲区读取文件数据到CH375,被CH375FileWriteX调用
void xReadFromExtBuf( UINT8 mLength )
{
if ( mLength )
{
do // 根据长度写入数据,实际上长度总是CH375_MAX_DATA_LEN,也就是64
{
CH375_DAT_PORT = *current_buffer; // 将数据写入,可以用这种方式从单片机的各种串行存储器中取出文件数据
current_buffer ++;
} while ( -- mLength );
} // 复制上述数据的总时间不得超过2mS
else // 重试,恢复缓冲区起址,如果将文件数据读写的缓冲区的当前指针放在mCmdParam.WriteX.mDataBuffer中则会被
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -