您当前的位置:五五电子网电子知识单片机-工控设备51单片机USB118a U盘读写51汇编测试程序 正文
USB118a U盘读写51汇编测试程序

USB118a U盘读写51汇编测试程序

点击数:7799 次   录入时间:03-04 11:58:51   整理:http://www.55dianzi.com   51单片机
/************************************************************************************************
*
*  U盘文件读写模块 以字节为单位进行U盘文件读写。
*  MCS-51 单片机 汇编示例程序 
*  硬件连接方式: 4线制串口(电源,地,输入,输出) 
*
*************************************************************************************************/

/*--------------------------------
    初始化程序
---------------------------------*/
    ORG 0000H
    AJMP MAIN
    ORG 0100H
/*--------------------------------
主函数
---------------------------------*/
MAIN:
     MOV   SP,  #60H        ;设置堆栈指针
     MOV   TMOD,#20H        ;计数器1工作在方式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盘检测,延时大约让检测完成即可发送指令        
----------------------------------------------------------------------*/
     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            ;调用发送子程序
    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            
    LCALL  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,$         ;等待接收到数据
    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

/*----------------------------------------------
函数功能:当为检测到U盘时,从新发送指令检测
-----------------------------------------------*/
OUT1:                    
     MOV  R7,#66          ;R7定义为将要发送的字节数
    LJMP   USB_Detect ;检测到u盘未成功,重新检测
    RET


/*-----------------------------------------
函数功能:Create file
-------------------------------------------*/
CRT:
       CLR    REN          ;关闭接收位
    LCALL  DELAY
     MOV  R7, #66          ;R7定义为将要发送的字节数

[1] [2] [3] [4]  下一页


本文关键字:程序  51单片机单片机-工控设备 - 51单片机

《USB118a U盘读写51汇编测试程序》相关文章>>>