《USB118a U盘读写51汇编测试程序》由会员分享,可在线阅读,更多相关《USB118a U盘读写51汇编测试程序(10页珍藏版)》请在金锄头文库上搜索。
1、USB118a U 盘读写盘读写 51 汇编测试程序汇编测试程序/* * * * U 盘文件读写模块盘文件读写模块 以字节为单位进行以字节为单位进行 U 盘文件读写。盘文件读写。 * MCS-51 单片机汇编示例程序单片机汇编示例程序 * 硬件连接方式硬件连接方式: 4 线制串口(电源,地,输入,输出)线制串口(电源,地,输入,输出) * * */ /*- 初始化程序初始化程序 -*/ ORG 0000H AJMP MAIN ORG 0100H /*- 主函数主函数 -*/ MAIN: MOV SP, #60H ;设置堆栈指针设置堆栈指针 MOV TMOD,#20H ;计数器计数器 1 工作在
2、方式工作在方式 2 MOV TH1, #0F3H ;晶振频率为晶振频率为 24MHZ,波特率为,波特率为 9600 MOV TL1, #0F3H ;MOV TH1, #0FAH ;晶振频率为晶振频率为 11.0592MHZ,波特率为波特率为 9600 ;MOV TL1, #0FAH MOV PCON,#80H ;smod 为为 1 SETB TR1 ;启动计时启动计时 MOV SCON,#40H /*- 延时是由于本人所用的单片机和延时是由于本人所用的单片机和 USB118A 是同一电源供电,是同一电源供电, 起初上电复位后由于起初上电复位后由于 USB118A 要进行要进行 U 盘检测,延时
3、大约让检测完成即可发送指令盘检测,延时大约让检测完成即可发送指令 -*/ MOV R1,#10H ;闪烁闪烁 10 次次 ML: LCALL DELAY LCALL DELAY ;延时延时 LCALL DELAY LCALL DELAY DJNZ R1,ML /检测检测 U 盘是否连接正常盘是否连接正常 USB_Detect: CLR EA ;关闭中断关闭中断 CLR REN ;关闭接收位关闭接收位 MOV DPTR, #Detect ;检测检测 U 盘命令初址盘命令初址 MOV R7, #66 ;R7 定义为将要发送的字节数定义为将要发送的字节数 LCALL SEND ;调用发送子程序调用发
4、送子程序 SETB REN ;打开接收位打开接收位 JNB RI,$ ;等待接收到数据等待接收到数据 CLR RI MOV A,SBUF ;接收应答码接收应答码 CJNE A,#04H,OUT1 ;04 检测应答码,对则继续执行检测应答码,对则继续执行 判断是否成功执行判断是否成功执行 否则否则 转错误处理转错误处理 JNB RI,$ ;等待接收到数据等待接收到数据 CLR RI MOV A,SBUF ;接收应答信号接收应答信号 CJNE A,#01H,OUT1 ;01 判断是否成功执行,成功则继续执行判断是否成功执行,成功则继续执行 否则转错误处理否则转错误处理 /create file L
5、CALL CRT JNB RI,$ ;等待接收到数据等待接收到数据 CLR RI MOV A,SBUF ;接收应答码接收应答码 CJNE A,#0AH,OUT1 ;0A 检测应答码,对则继续执行检测应答码,对则继续执行 判断是否成功执行判断是否成功执行 否则否则 转错误处理转错误处理 JNB RI,$ ;等待接收到数据等待接收到数据 CLR RI MOV A,SBUF ;接收应答信号接收应答信号 CJNE A,#01H,OUT1 ;01 判断是否成功执行,成功则继续执行判断是否成功执行,成功则继续执行 否则转错误处理否则转错误处理 /open file LCALL OP JNB RI,$ ;等
6、待接收到数据等待接收到数据 CLR RI MOV A,SBUF ;接收应答码接收应答码 CJNE A,#0DH,OUT1 ;0D 检测应答码,对则继续执行检测应答码,对则继续执行 判断是否成功执行判断是否成功执行 否则否则 转错误处理转错误处理 JNB RI,$ ;等待接收到数据等待接收到数据 CLR RI MOV A,SBUF ;接收应答信号接收应答信号 CJNE A,#01H,OUT1 ;01 判断是否成功执行,成功则继续执行判断是否成功执行,成功则继续执行 否则转错误处理否则转错误处理 /write data LCALL WRT SJMP $ MOV IE,#93H RET /*- 函数
7、功能:当为检测到函数功能:当为检测到 U 盘时,从新发送指令检测盘时,从新发送指令检测 -*/ OUT1: MOV R7,#66 ;R7 定义为将要发送的字节数定义为将要发送的字节数 LJMP USB_Detect ;检测到检测到 u 盘未成功,重新检测盘未成功,重新检测 RET /*- 函数功能:函数功能:Create file -*/ CRT: CLR REN ;关闭接收位关闭接收位 LCALL DELAY MOV R7, #66 ;R7 定义为将要发送的字节数定义为将要发送的字节数 MOV DPTR,#Create ;建立文件命令初址建立文件命令初址 LCALL SEND ;调用发送子程
8、序调用发送子程序 NOP NOP NOP SETB REN ;打开接收位打开接收位 RET /*- 函数功能:函数功能:Open file -*/ OP: CLR REN ;关闭接收位关闭接收位 LCALL DELAY MOV R7, #66 ;R7 定义为将要发送的字节数定义为将要发送的字节数 MOV DPTR,#Open ;打开文件命令初址打开文件命令初址 LCALL SEND ;调用发送子程序调用发送子程序 NOP NOP NOP SETB REN ;打开接收位打开接收位 RET /*- 函数功能:函数功能:Write data -*/ WRT: CLR REN ;关闭接收位关闭接收位
9、LCALL DELAY MOV R7,#66 ;R7 定义为将要发送的字节数定义为将要发送的字节数 MOV DPTR,#Write ;写文件命令初址写文件命令初址 LCALL SEND ;发送数据发送数据 MOV R7,#15 ;此处是将要发送的写入数据的字节数此处是将要发送的写入数据的字节数 ON: MOV DPTR,#Date1 ;数据初地址数据初地址 LCALL SEND ;发送数据发送数据 NOP NOP SETB REN ;打开接收位打开接收位 RET /*- 函数功能:函数功能:ReMOVe file -*/ REM: CLR REN ;关闭接收位关闭接收位 LCALL DELAY
10、 MOV DPTR,#Remove ;设置删除命令初址设置删除命令初址 LCALL SEND ;发送命令发送命令 NOP NOP NOP SETB REN ;打开接收位打开接收位 RET /*- 函数功能:设置文件指针函数功能:设置文件指针 -*/ SFP: CLR REN ;关闭接收位关闭接收位 LCALL DELAY MOV R7,#66 MOV DPTR,#SetFilePointer ;设置文件指针命令初址设置文件指针命令初址 LCALL SEND ;发送命令发送命令 NOP NOP NOP SETB REN ;打开接收位打开接收位 RET /*- 函数功能:函数功能:Read file -*/ RAD: CLR REN ;关闭接收位关闭接收位 LCALL DELAY MOV R7,#66 MOV DPTR,#Read ;设置读命令初址设置读命令初址 LCALL SEND ;发送命令发送命令 NOP NOP NOP SETB REN ;打开接收位打开接收位 RET /*-