⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mp3.lst

📁 用AVR的MP3代码
💻 LST
📖 第 1 页 / 共 5 页
字号:
__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 + -