📄 mp3.lst
字号:
__start:
__text_start:
02AF EFCF LDI R28,0xFF
02B0 E1D0 LDI R29,0x10
02B1 BFCD OUT 0x3D,R28
02B2 BFDE OUT 0x3E,R29
02B3 51C0 SUBI R28,0x10
02B4 40D0 SBCI R29,0
02B5 EA0A LDI R16,0xAA
02B6 8308 STD Y+0,R16
02B7 2400 CLR R0
02B8 EEE2 LDI R30,0xE2
02B9 E0F1 LDI R31,1
02BA E016 LDI R17,6
02BB 34E7 CPI R30,0x47
02BC 07F1 CPC R31,R17
02BD F011 BEQ 0x02C0
02BE 9201 ST R0,Z+
02BF CFFB RJMP 0x02BB
02C0 8300 STD Z+0,R16
02C1 E7EC LDI R30,0x7C
02C2 E0F4 LDI R31,4
02C3 E0A0 LDI R26,0
02C4 E0B1 LDI R27,1
02C5 E015 LDI R17,5
02C6 35EE CPI R30,0x5E
02C7 07F1 CPC R31,R17
02C8 F021 BEQ 0x02CD
02C9 95C8 LPM
02CA 9631 ADIW R30,1
02CB 920D ST R0,X+
02CC CFF9 RJMP 0x02C6
02CD 940E034F CALL _main
_exit:
02CF CFFF RJMP _exit
FILE: C:\DOCUME~1\pas\桌面\mp3代码\u盘MP3代码\CH375HFB.H
(0001) /* 2004.06.05, 2004.09.20, 2004.10.22, 2004.11.20, 2004.12.12, 2004.12.28, 2005.01.04, 2005.01.12, 2005.01.26, 2005.03.01, 2005.07.29, 2005.12.28
(0002) ****************************************
(0003) ** Copyright (C) W.ch 1999-2005 **
(0004) ** Web: http://www.winchiphead.com **
(0005) ****************************************
(0006) ** USB Host File Interface for CH375 **
(0007) ** TC2.0@PC, ICCAVR_6.31@AVR **
(0008) ****************************************
(0009) */
(0010) /* CH375 主机文件系统接口 V2.9 */
(0011) /* 支持: FAT12/FAT16/FAT32 */
(0012) /* AVR单片机, 查询方式或者中断方式 */
(0013)
(0014) #ifndef __CH375HF_H__
(0015) #define __CH375HF_H__
(0016)
(0017) #define CH375_LIB_VER 0x29
(0018)
(0019) #ifdef __cplusplus
(0020) extern "C" {
(0021) #endif
(0022)
(0023) /* FILE: CH375INC.H */
(0024)
(0025) /* ********************************************************************************************************************* */
(0026) /* 硬件特性 */
(0027)
(0028) #define CH375_MAX_DATA_LEN 0x40 /* 最大数据包的长度, 内部缓冲区的长度 */
(0029)
(0030) /* ********************************************************************************************************************* */
(0031) /* 命令代码 */
(0032)
(0033) #define CMD_RESET_ALL 0x05 /* 执行硬件复位 */
(0034)
(0035) #define CMD_CHECK_EXIST 0x06 /* 测试工作状态 */
(0036) /* 输入: 任意数据 */
(0037) /* 输出: 输入数据的按位取反 */
(0038)
(0039) #define CMD_SET_USB_ID 0x12 /* 设备方式: 设置USB厂商VID和产品PID */
(0040) /* 输入: 厂商ID低字节, 厂商ID高字节, 产品ID低字节, 产品ID高字节 */
(0041)
(0042) #define CMD_SET_USB_ADDR 0x13 /* 设置USB地址 */
(0043) /* 输入: 地址值 */
(0044)
(0045) #define CMD_SET_USB_MODE 0x15 /* 设置USB工作模式 */
(0046) /* 输入: 模式代码 */
(0047) /* 00H=未启用的设备方式, 01H=已启用的设备方式并且使用外部固件模式, 02H=已启用的设备方式并且使用内置固件模式, 03H=已启用的设备方式并且使用中断端点和内置固件模式 */
(0048) /* 04H=未启用的主机方式, 05H=已启用的主机方式, 06H=已启用的主机方式并且自动产生SOF包, 07H=已启用的主机方式并且复位USB总线 */
(0049) /* 输出: 操作状态( CMD_RET_SUCCESS或CMD_RET_ABORT, 其它值说明操作未完成 ) */
(0050)
(0051) #define CMD_SET_ENDP2 0x18 /* 设备方式: 设置USB端点0的接收器 */
(0052) /* 输入: 工作方式 */
(0053) /* 位7为1则位6为同步触发位, 否则同步触发位不变 */
(0054) /* 位3~位0为事务响应方式: 0000-就绪ACK, 1110-正忙NAK, 1111-错误STALL */
(0055)
(0056) #define CMD_SET_ENDP3 0x19 /* 设备方式: 设置USB端点0的发送器 */
(0057) /* 输入: 工作方式 */
(0058) /* 位7为1则位6为同步触发位, 否则同步触发位不变 */
(0059) /* 位3~位0为事务响应方式: 0000~1000-就绪ACK, 1110-正忙NAK, 1111-错误STALL */
(0060)
(0061) #define CMD_SET_ENDP4 0x1A /* 设备方式: 设置USB端点1的接收器 */
(0062) /* 输入: 工作方式 */
(0063) /* 位7为1则位6为同步触发位, 否则同步触发位不变 */
(0064) /* 位3~位0为事务响应方式: 0000-就绪ACK, 1110-正忙NAK, 1111-错误STALL */
(0065)
(0066) #define CMD_SET_ENDP5 0x1B /* 设备方式: 设置USB端点1的发送器 */
(0067) /* 输入: 工作方式 */
(0068) /* 位7为1则位6为同步触发位, 否则同步触发位不变 */
(0069) /* 位3~位0为事务响应方式: 0000~1000-就绪ACK, 1110-正忙NAK, 1111-错误STALL */
(0070)
(0071) #define CMD_SET_ENDP6 0x1C /* 设置USB端点2/主机端点的接收器 */
(0072) /* 输入: 工作方式 */
(0073) /* 位7为1则位6为同步触发位, 否则同步触发位不变 */
(0074) /* 位3~位0为事务响应方式: 0000-就绪ACK, 1101-就绪但不返回ACK, 1110-正忙NAK, 1111-错误STALL */
(0075)
(0076) #define CMD_SET_ENDP7 0x1D /* 设置USB端点2/主机端点的发送器 */
(0077) /* 输入: 工作方式 */
(0078) /* 位7为1则位6为同步触发位, 否则同步触发位不变 */
(0079) /* 位3~位0为事务响应方式: 0000-就绪ACK, 1101-就绪但无须应答, 1110-正忙NAK, 1111-错误STALL */
(0080)
(0081) #define CMD_GET_TOGGLE 0x0A /* 获取OUT事务的同步状态 */
(0082) /* 输入: 数据1AH */
(0083) /* 输出: 同步状态 */
(0084) /* 位4为1则OUT事务同步, 否则OUT事务不同步 */
(0085)
(0086) #define CMD_GET_STATUS 0x22 /* 获取中断状态并取消中断请求 */
(0087) /* 输出: 中断状态 */
(0088)
(0089) #define CMD_UNLOCK_USB 0x23 /* 设备方式: 释放当前USB缓冲区 */
(0090)
(0091) #define CMD_RD_USB_DATA 0x28 /* 从当前USB中断的端点缓冲区读取数据块, 并释放缓冲区 */
(0092) /* 输出: 长度, 数据流 */
(0093)
(0094) #define CMD_WR_USB_DATA3 0x29 /* 设备方式: 向USB端点0的发送缓冲区写入数据块 */
(0095) /* 输入: 长度, 数据流 */
(0096)
(0097) #define CMD_WR_USB_DATA5 0x2A /* 设备方式: 向USB端点1的发送缓冲区写入数据块 */
(0098) /* 输入: 长度, 数据流 */
(0099)
(0100) #define CMD_WR_USB_DATA7 0x2B /* 向USB端点2的发送缓冲区写入数据块 */
(0101) /* 输入: 长度, 数据流 */
(0102)
(0103) /* ************************************************************************** */
(0104) /* 以下命令用于USB主机方式, 只有CH375支持 */
(0105)
(0106) #define CMD_SET_BAUDRATE 0x02 /* 串口方式: 设置串口通讯波特率 */
(0107) /* 输入: 波特率分频系数, 波特率分频常数 */
(0108) /* 输出: 操作状态( CMD_RET_SUCCESS或CMD_RET_ABORT, 其它值说明操作未完成 ) */
(0109)
(0110) #define CMD_ABORT_NAK 0x17 /* 主机方式: 放弃当前NAK的重试 */
(0111)
(0112) #define CMD_SET_RETRY 0x0B /* 主机方式: 设置USB事务操作的重试次数 */
(0113) /* 输入: 数据25H, 重试次数 */
(0114) /* 位7为1则收到NAK时无限重试, 位3~位0为超时后的重试次数 */
(0115)
(0116) #define CMD_ISSUE_TOKEN 0x4F /* 主机方式: 发出令牌, 执行事务 */
(0117) /* 输入: 事务属性 */
(0118) /* 低4位是令牌, 高4位是端点号 */
(0119) /* 输出中断 */
(0120)
(0121) #define CMD_CLR_STALL 0x41 /* 主机方式: 控制传输-清除端点错误 */
(0122) /* 输入: 端点号 */
(0123) /* 输出中断 */
(0124)
(0125) #define CMD_SET_ADDRESS 0x45 /* 主机方式: 控制传输-设置USB地址 */
(0126) /* 输入: 地址值 */
(0127) /* 输出中断 */
(0128)
(0129) #define CMD_GET_DESCR 0x46 /* 主机方式: 控制传输-获取描述符 */
(0130) /* 输入: 描述符类型 */
(0131) /* 输出中断 */
(0132)
(0133) #define CMD_SET_CONFIG 0x49 /* 主机方式: 控制传输-设置USB配置 */
(0134) /* 输入: 配置值 */
(0135) /* 输出中断 */
(0136)
(0137) #define CMD_DISK_INIT 0x51 /* 主机方式: 初始化USB存储器 */
(0138) /* 输出中断 */
(0139)
(0140) #define CMD_DISK_RESET 0x52 /* 主机方式: 复位USB存储器 */
(0141) /* 输出中断 */
(0142)
(0143) #define CMD_DISK_SIZE 0x53 /* 主机方式: 获取USB存储器的容量 */
(0144) /* 输出中断 */
(0145)
(0146) #define CMD_DISK_READ 0x54 /* 主机方式: 从USB存储器读数据块(以扇区512字节为单位) */
(0147) /* 输入: LBA扇区地址(总长度32位, 低字节在前), 扇区数(01H~FFH) */
(0148) /* 输出中断 */
(0149)
(0150) #define CMD_DISK_RD_GO 0x55 /* 主机方式: 继续执行USB存储器的读操作 */
(0151) /* 输出中断 */
(0152)
(0153) #define CMD_DISK_WRITE 0x56 /* 主机方式: 向USB存储器写数据块(以扇区512字节为单位) */
(0154) /* 输入: LBA扇区地址(总长度32位, 低字节在前), 扇区数(01H~FFH) */
(0155) /* 输出中断 */
(0156)
(0157) #define CMD_DISK_WR_GO 0x57 /* 主机方式: 继续执行USB存储器的写操作 */
(0158) /* 输出中断 */
(0159)
(0160) /* ************************************************************************** */
(0161) /* 以下新增的V2.0命令码, 仅CH372A/CH375A支持 */
(0162)
(0163) #define CMD_GET_IC_VER 0x01 /* 获取芯片及固件版本 */
(0164) /* 输出: 版本号( 位7为1, 位6为0, 位5~位0为版本号 ) */
(0165) /* CH375返回无效值为5FH, CH375A返回版本号的值为0A2H */
(0166)
(0167) #define CMD_ENTER_SLEEP 0x03 /* 进入睡眠状态 */
(0168)
(0169) #define CMD_RD_USB_DATA0 0x27 /* 从当前USB中断的端点缓冲区读取数据块 */
(0170) /* 输出: 长度, 数据流 */
(0171)
(0172) #define CMD_DELAY_100US 0x0F /* 并口方式: 延时100uS */
(0173) /* 输出: 延时期间输出0, 延时结束输出非0 */
(0174)
(0175) #define CMD_CHK_SUSPEND 0x0B /* 设备方式: 设置检查USB总线挂起状态的方式 */
(0176) /* 输入: 数据10H, 检查方式 */
(0177) /* 00H=不检查USB挂起, 04H=以50mS为间隔检查USB挂起, 05H=以10mS为间隔检查USB挂起 */
(0178)
(0179) #define CMD_SET_SYS_FREQ 0x04 /* 设置系统工作频率 */
(0180) /* 输入: 频率 */
(0181) /* 00H=12MHz, 01H=1.5MHz */
(0182)
(0183) /* ************************************************************************** */
(0184) /* 以下改进的V2.0命令码, 用于USB主机方式, 仅CH375A支持 */
(0185)
(0186) /*#define CMD_SET_RETRY 0x0B*/ /* 主机方式: 设置USB事务操作的重试次数 */
(0187) /* 输入: 数据25H, 重试次数 */
(0188) /* 位7为0则收到NAK时不重试, 位7为1位6为0则收到NAK时无限重试, 位7为1位6为1则收到NAK时重试200mS, 位5~位0为超时后的重试次数 */
(0189)
(0190) /* ************************************************************************** */
(0191) /* 以下新增的V2.0命令码, 用于USB主机方式, 仅CH375A支持 */
(0192)
(0193) #define CMD_TEST_CONNECT 0x16 /* 主机方式: 检查USB设备连接状态 */
(0194) /* 输出: 状态( USB_INT_CONNECT或USB_INT_DISCONNECT, 其它值说明操作未完成 ) */
(0195)
(0196) #define CMD_AUTO_SETUP 0x4D /* 主机方式: 自动配置USB设备 */
(0197) /* 输出中断 */
(0198)
(0199) #define CMD_ISSUE_TKN_X 0x4E /* 主机方式: 发出同步令牌, 执行事务 */
(0200) /* 输入: 同步标志, 事务属性 */
(0201) /* 同步标志的位7为主机端点IN的同步触发位, 位6为主机端点OUT的同步触发位, 位5~位0必须为0 */
(0202) /* 事务属性的低4位是令牌, 高4位是端点号 */
(0203) /* 输出中断 */
(0204)
(0205) #define CMD_SET_DISK_LUN 0x0B /* 主机方式: 设置USB存储器的当前逻辑单元号 */
(0206) /* 输入: 数据34H, 新的当前逻辑单元号(00H-0FH) */
(0207)
(0208) #define CMD_DISK_BOC_CMD 0x50 /* 主机方式: 对USB存储器执行BulkOnly传输协议的命令 */
(0209) /* 输出中断 */
(0210)
(0211) #define CMD_DISK_INQUIRY 0x58 /* 主机方式: 查询USB存储器特性 */
(0212) /* 输出中断 */
(0213)
(0214) #define CMD_DISK_READY 0x59 /* 主机方式: 检查USB存储器就绪 */
(0215) /* 输出中断 */
(0216)
(0217) #define CMD_DISK_R_SENSE 0x5A /* 主机方式: 检查USB存储器错误 */
(0218) /* 输出中断 */
(0219)
(0220) #define CMD_DISK_MAX_LUN 0x5D /* 主机方式: 获取USB存储器最大逻辑单元号 */
(0221) /* 输出中断 */
(0222)
(0223) /* ********************************************************************************************************************* */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -