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

📄 mp3play.lst

📁 mega128+VS1003做的mp3的程序 可以用WINAVR编译
💻 LST
📖 第 1 页 / 共 5 页
字号:
    2D99 DFCA      RCALL	_USART_Transmit
    2D9A 940E7CD3  CALL	pop_gset2
    2D9C 9508      RET
_Print_int:
  temp                 --> R20
  data                 --> R22
    2D9D 940E7CF6  CALL	push_gset2
    2D9F 01B8      MOVW	R22,R16
(0044) }
(0045) void Print_int(unsigned int data)
(0046) {
(0047)  unsigned char temp;
(0048)  temp = data >> 8;
    2DA0 01AB      MOVW	R20,R22
    2DA1 2F45      MOV	R20,R21
    2DA2 2755      CLR	R21
(0049)  Print_val(temp);
    2DA3 2F04      MOV	R16,R20
    2DA4 DFD6      RCALL	_Print_val
(0050)  temp = data;
    2DA5 2F46      MOV	R20,R22
(0051)  Print_val(temp); 
    2DA6 2F04      MOV	R16,R20
    2DA7 DFD3      RCALL	_Print_val
    2DA8 940E7CD3  CALL	pop_gset2
    2DAA 9508      RET
_Print_size:
  data                 --> R22
  temp                 --> R20
  ii                   --> R20
    2DAB 940E7CF6  CALL	push_gset2
    2DAD 01A8      MOVW	R20,R16
(0052) }
(0053) 
(0054) void Print_size(unsigned int ii)
(0055) {
(0056)  unsigned char temp;
(0057)  unsigned int data;
(0058)  data = ii;
    2DAE 01BA      MOVW	R22,R20
(0059)  temp = data/10000; 
    2DAF E120      LDI	R18,0x10
    2DB0 E237      LDI	R19,0x27
    2DB1 018B      MOVW	R16,R22
    2DB2 940E7BF0  CALL	div16u
(0060)  USART_Transmit(temp+'0');
    2DB4 5D00      SUBI	R16,0xD0
    2DB5 DFAE      RCALL	_USART_Transmit
(0061)  
(0062)  data %= 10000;
    2DB6 E120      LDI	R18,0x10
    2DB7 E237      LDI	R19,0x27
    2DB8 018B      MOVW	R16,R22
    2DB9 940E7BEE  CALL	mod16u
    2DBB 01B8      MOVW	R22,R16
(0063)  temp = data/1000;
    2DBC EE28      LDI	R18,0xE8
    2DBD E033      LDI	R19,3
    2DBE 940E7BF0  CALL	div16u
(0064)  USART_Transmit(temp+'0');
    2DC0 5D00      SUBI	R16,0xD0
    2DC1 DFA2      RCALL	_USART_Transmit
(0065)  
(0066)  data %= 1000;
    2DC2 EE28      LDI	R18,0xE8
    2DC3 E033      LDI	R19,3
    2DC4 018B      MOVW	R16,R22
    2DC5 940E7BEE  CALL	mod16u
    2DC7 01B8      MOVW	R22,R16
(0067)  temp = data/100;
    2DC8 E624      LDI	R18,0x64
    2DC9 E030      LDI	R19,0
    2DCA 940E7BF0  CALL	div16u
(0068)  USART_Transmit(temp+'0');
    2DCC 5D00      SUBI	R16,0xD0
    2DCD DF96      RCALL	_USART_Transmit
(0069)  
(0070)  data %= 100;
    2DCE E624      LDI	R18,0x64
    2DCF E030      LDI	R19,0
    2DD0 018B      MOVW	R16,R22
    2DD1 940E7BEE  CALL	mod16u
    2DD3 01B8      MOVW	R22,R16
(0071)  temp = data/10;
    2DD4 E02A      LDI	R18,0xA
    2DD5 E030      LDI	R19,0
    2DD6 940E7BF0  CALL	div16u
(0072)  USART_Transmit(temp+'0');
    2DD8 5D00      SUBI	R16,0xD0
    2DD9 DF8A      RCALL	_USART_Transmit
(0073)  
(0074)  temp = data%10;
    2DDA E02A      LDI	R18,0xA
    2DDB E030      LDI	R19,0
    2DDC 018B      MOVW	R16,R22
    2DDD 940E7BEE  CALL	mod16u
    2DDF 2F40      MOV	R20,R16
(0075)  USART_Transmit(temp+'0');
    2DE0 5D00      SUBI	R16,0xD0
    2DE1 DF82      RCALL	_USART_Transmit
    2DE2 940E7CD3  CALL	pop_gset2
    2DE4 9508      RET
FILE: E:\software\MP3程序\Play\..\Ch375b\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) 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -