打印

[求助] CH376S寫入方式請教

[复制链接]
1812|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
kenny0531|  楼主 | 2013-9-16 22:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位前輩們好,小弟在使用CH376的時候遇到了一個問題就是使用單晶片發指令建立一個TEST.TXT的文字檔,然後針對這個文字檔進行寫入的動作寫入動作都不成功,可是如果是在電腦上建立一個TEST.TXT檔案在使用單晶片執行OPEN File然後針對這個TEST.TXT的文字檔做寫入的話寫入資料就會成功,目前看到的差異是使用單晶片建立TEST.TXT的時候文字檔裡面會多出一個"1"的字元,請問建立檔案的時候怎樣才不會產生字元或者是說怎麼使用覆蓋的方式來處理這個問題呢?還是說還有其他解決方法呢?請前輩們指教,感謝!
以下昰我的程式碼
    while(1)
    {
        PORTB = 0X00;
        Delay5ms(20);
//Test communication interface and work status
        while(CHECK_EXIST() != 0x00)
              Delay5ms(1);
              PORTBbits.RB0 = 1;
              UART1_RX_Value_Buffer = 0;
//Setting the USB mode
        while(SET_USB_MODE()!= 0x51)
              Delay5ms(1);
              PORTBbits.RB1 = 1;
              UART1_RX_Value_Buffer = 0;
//Initialize the disk and test disk ready
        while(DISK_MOUNT()!=0x14)
              Delay5ms(1);
              PORTBbits.RB2 = 1;
              UART1_RX_Value_Buffer = 0;
//Set to operate on the file name
              Delay5ms(1);
              SET_FILE_NAME();
              PORTBbits.RB3 = 1;
              UART1_RX_Value_Buffer = 0;
//Open the file or directory, enumerate files and directories
         while(FILE_OPEN()!=0x14)
              Delay5ms(1);
              PORTBbits.RB4 = 1;
              UART1_RX_Value_Buffer = 0;
              
         //while(BYTE_LOCATE()!=0x14)
              BYTE_LOCATE();
              Delay5ms(100);
              UART1_RX_Value_Buffer = 0;
//Create documents
//        while(FILE_CREATE()!=0x14)
//              Delay5ms(1);
//              PORTBbits.RB4 = 1;
//              UART1_RX_Value_Buffer = 0;
//===============================================================
//In bytes of the write data block to the current location
              //while(BYTE_WRITE()!=0x1E)
              BYTE_WRITE();
              Delay5ms(1);
              PORTBbits.RB5 = 1;
              UART1_RX_Value_Buffer = 0;
//Specified buffer to the internal write request data blocks
              Delay5ms(1);
              WR_REQ_DATA();
              PORTBbits.RB6 = 1;
              UART1_RX_Value_Buffer = 0;
//Continue byte write
              while(BYTE_WR_GO()!=0x14)
              //BYTE_WR_GO();
              Delay5ms(1);
              BYTE_WR_GO();
              PORTBbits.RB7 = 1;
              UART1_RX_Value_Buffer = 0;
//Closes the currently open file or directory
              while(FILE_CLOSE()!=0x14)
              Delay5ms(1);
              PORTBbits.RB8 = 1;
              UART1_RX_Value_Buffer = 0;
              Delay5ms(200);
//==================================================================
//Test communication interface and work status
unsigned char CHECK_EXIST()
{
    UART1_Send_Value(0x57);
    UART1_Send_Value(0xAB);
    UART1_Send_Value(0x06);
    UART1_Send_Value(0xFF);
    return  UART1_RX_Value_Buffer;
}
////Setting the USB mode
unsigned char SET_USB_MODE()
{
    UART1_Send_Value(0x57);
    UART1_Send_Value(0xAB);
    UART1_Send_Value(0x15);
    UART1_Send_Value(0x03);
    return  UART1_RX_Value_Buffer;
}
//Initialize the disk and test disk ready
unsigned char DISK_MOUNT()
{
    UART1_Send_Value(0x57);
    UART1_Send_Value(0xAB);
    UART1_Send_Value(0x31);
    return  UART1_RX_Value_Buffer;
}
//Set to operate on the file name
unsigned char SET_FILE_NAME()
{
    UART1_Send_Value(0x57);
    UART1_Send_Value(0xAB);
    UART1_Send_Value(0x2F);
    char data[] = "TEST.TXT";
    UART1_Send_String(data);
    //TEST.TXT
    //UART1_Send_Value(0x54);
    //UART1_Send_Value(0x45);
    //UART1_Send_Value(0x53);
    //UART1_Send_Value(0x54);
    //UART1_Send_Value(0x2E);
    //UART1_Send_Value(0x54);
    //UART1_Send_Value(0x58);
    //UART1_Send_Value(0x54);
    return  UART1_RX_Value_Buffer;
}
//Create documents
unsigned char FILE_CREATE()
{
    UART1_Send_Value(0x57);
    UART1_Send_Value(0xAB);
    UART1_Send_Value(0x34);
    return  UART1_RX_Value_Buffer;
}
unsigned char BYTE_WRITE()
{
    UART1_Send_Value(0x57);
    UART1_Send_Value(0xAB);
    UART1_Send_Value(0x3C);
    UART1_Send_Value(0x0A);
    UART1_Send_Value(0x0A>>8);
    return  UART1_RX_Value_Buffer;
}
unsigned char BYTE_READ()
{
    UART1_Send_Value(0x57);
    UART1_Send_Value(0xAB);
    UART1_Send_Value(0x3A);
    return  UART1_RX_Value_Buffer;
}
unsigned char WR_REQ_DATA()
{
    UART1_Send_Value(0x57);
    UART1_Send_Value(0xAB);
    UART1_Send_Value(0x2D);
    UART1_Send_Value(0x31);
    UART1_Send_Value(0x32);
    UART1_Send_Value(0x31);
    UART1_Send_Value(0x32);
    UART1_Send_Value(0x41);
    UART1_Send_Value(0x0D); // \r
    UART1_Send_Value(0x0A); // \n
    UART1_Send_Value(0x45);
    UART1_Send_Value(0x47);
    UART1_Send_Value(0x48);
    return  UART1_RX_Value_Buffer;
}
unsigned char BYTE_WR_GO()
{
    UART1_Send_Value(0x57);
    UART1_Send_Value(0xAB);
    UART1_Send_Value(0x3D);
    return  UART1_RX_Value_Buffer;
}
unsigned char FILE_CLOSE()
{
    UART1_Send_Value(0x57);
    UART1_Send_Value(0xAB);
    UART1_Send_Value(0x36);
    UART1_Send_Value(0x01);
    return  UART1_RX_Value_Buffer;
}
unsigned char FILE_OPEN()
{
    UART1_Send_Value(0x57);
    UART1_Send_Value(0xAB);
    UART1_Send_Value(0x32);
    return  UART1_RX_Value_Buffer;
}
unsigned char WR_OFS_DATA()
{
    UART1_Send_Value(0x57);
    UART1_Send_Value(0xAB);
    UART1_Send_Value(0x2E);
    UART1_Send_Value(0x00);
    UART1_Send_Value(0x05);
    UART1_Send_Value(0x42);
    UART1_Send_Value(0x42);
    UART1_Send_Value(0x42);
    UART1_Send_Value(0x46);
    UART1_Send_Value(0x46);
    return  UART1_RX_Value_Buffer;
}
unsigned char BYTE_LOCATE()
{
    UART1_Send_Value(0x57);
    UART1_Send_Value(0xAB);
    UART1_Send_Value(0x39);
    UART1_Send_Value(0xFF);
    UART1_Send_Value(0xFF);
    UART1_Send_Value(0xFF);
    UART1_Send_Value(0xFF);
}

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

3

帖子

0

粉丝