求助:關(guān)于CH375的命令端口和數(shù)據(jù)端口的地址的問(wèn)題

我用的單片機(jī)是內(nèi)置的4K的RAM,即集成在片內(nèi)的外部RAM?,F(xiàn)在想用并口方式與CH375相連接。但是CH375的命令端口和數(shù)據(jù)端口的地址問(wèn)題應(yīng)該如何選定呢? 我看CH375模塊的例程上是這么定義的: #define CH375_CMD_PORT_ADDR 0xBDF1 /* CH375命令端口的I/O地址 */ #define CH375_DAT_PORT_ADDR 0xBCF0 /* CH375數(shù)據(jù)端口的I/O地址 */

但是我不需要模塊中外置的32K的RAM,那么我的單片機(jī)應(yīng)該如何給CH375的命令端口和數(shù)據(jù)端口分配地址呢? 例如我目前的硬件接法:我的P2.0至P2.7口接CH375的D0至D7,P3.0接CS,P3.1接A0,RD接RD,WR接WR。先將CS置0,然后我想寫命令時(shí),將A0也置0,然后將命令寫到P2口;想寫數(shù)據(jù)時(shí)再將A0置1,再往P2口上寫數(shù)據(jù)。不知道我這種做法正確么

您是操作CH375芯片,還是模塊呢?前者A0 = 1,是寫命令;A0 = 0,是寫數(shù)據(jù),后者與其正好相反 您的硬件接口是模擬I/O方式,不存在地址,操作時(shí)序參考: /* 本例用I/O引腳模擬產(chǎn)生CH375的并口讀寫時(shí)序 */ /* 本例中的硬件連接方式如下(實(shí)際應(yīng)用電路可以參照修改下述3個(gè)并口讀寫子程序) */ /* 單片機(jī)的引腳 CH375芯片的引腳 P3.2 INT# P1.0 A0 P1.1 CS# 如果模擬出的并口上只有CH375,那么CS#可以直接接低電平,強(qiáng)制片選 P1.2 WR# P1.3 RD# P0(8位端口) D7-D0 */ sbit CH375_A0 = P1^0; sbit CH375_CS = P1^1; sbit CH375_WR = P1^2; sbit CH375_RD = P1^3;

void mDelay1_2uS( ) /* 至少延時(shí)1.2uS,根據(jù)單片機(jī)主頻調(diào)整 */ { return; }

void CH375_PORT_INIT( ) /* 由于使用通用I/O模塊并口讀寫時(shí)序,所以進(jìn)行初始化 */ { CH375_CS = 1; CH375_WR = 1; CH375_RD = 1; CH375_A0 = 0; P0 = 0xFF; /* 并口輸入 */ }

void xWriteCH375Cmd( UINT8 mCmd ) /* 外部定義的被CH375程序庫(kù)調(diào)用的子程序,向CH375寫命令 */ { mDelay1_2uS( ); mDelay1_2uS( ); /* 至少延時(shí)1uS */ P0 = mCmd; /* 向CH375的并口輸出數(shù)據(jù) */ CH375_A0 = 1; CH375_CS = 0; CH375_WR = 0; /* 輸出有效寫控制信號(hào), 寫CH375芯片的命令端口 */ CH375_CS = 0; /* 該操作無(wú)意義,僅作延時(shí),CH375要求讀寫脈沖寬度大于100nS */ CH375_WR = 1; /* 輸出無(wú)效的控制信號(hào), 完成操作CH375芯片 */ CH375_CS = 1; CH375_A0 = 0; P0 = 0xFF; /* 禁止數(shù)據(jù)輸出 */ mDelay1_2uS( ); mDelay1_2uS( ); /* CH375B至少延時(shí)1.6uS */ }

void xWriteCH375Data( UINT8 mData ) /* 外部定義的被CH375程序庫(kù)調(diào)用的子程序,向CH375寫數(shù)據(jù) */ { P0 = mData; /* 向CH375的并口輸出數(shù)據(jù) */ CH375_A0 = 0; CH375_CS = 0; CH375_WR = 0; /* 輸出有效寫控制信號(hào), 寫CH375芯片的數(shù)據(jù)端口 */ CH375_CS = 0; /* 該操作無(wú)意義,僅作延時(shí),CH375要求讀寫脈沖寬度大于100nS */ CH375_WR = 1; /* 輸出無(wú)效的控制信號(hào), 完成操作CH375芯片 */ CH375_CS = 1; P0 = 0xFF; /* 禁止數(shù)據(jù)輸出 */ mDelay1_2uS( ); /* CH37B至少延時(shí)0.6uS */ }

UINT8 xReadCH375Data( void ) /* 外部定義的被CH375程序庫(kù)調(diào)用的子程序,從CH375讀數(shù)據(jù) */ { UINT8 mData; mDelay1_2uS( ); /* 至少延時(shí)1.2uS */ P0 = 0xFF; /* 輸入 */ CH375_A0 = 0; CH375_CS = 0; CH375_RD = 0; /* 輸出有效寫控制信號(hào), 讀CH375芯片的數(shù)據(jù)端口 */ CH375_CS = 0; /* 該操作無(wú)意義,僅作延時(shí),CH375要求讀寫脈沖寬度大于100nS */ mData = P0; /* 從CH375的并口輸入數(shù)據(jù) */ CH375_RD = 1; /* 輸出無(wú)效的控制信號(hào), 完成操作CH375芯片 */ CH375_CS = 1; return( mData ); }


為什么我運(yùn)行到mStopIfError( i )時(shí),iError的值總是為0x81呢? 而且在i = CH375LibInit( ) 中這個(gè)函數(shù)的返回值是return( CH375Init( )) 但是CH375Init這個(gè)函數(shù)好像在子程序庫(kù)里,我看不到,但是好像調(diào)用了: void xWriteCH375Cmd( UINT8 mCmd )/* 外部定義的被CH375程序庫(kù)調(diào)用的子程序,向CH375寫命令 */ 和 void xWriteCH375Data( UINT8 mData )/* 外部定義的被CH375程序庫(kù)調(diào)用的子程序,向CH375寫數(shù)據(jù) */ 這兩個(gè)函數(shù),真是看不明白啊?。?!

UINT8 CH375LibInit( void ) /* 初始化CH375程序庫(kù)和CH375芯片,操作成功返回0 */ { if ( SP > 0xEE ) return( 0xFC ); /* 單片機(jī)的堆棧空間不夠,CH375子程序庫(kù)最多可能有7級(jí)子程序,查詢方式最多需要14字節(jié)的堆??臻g,建議提供余量 */ CH375LibConfig = LIB_CFG_VALUE; /* CH375程序庫(kù)配置值 */ if ( CH375GetVer( ) < CH375_LIB_VER ) return( 0xFF ); /* 獲取當(dāng)前子程序庫(kù)的版本號(hào),版本太低則返回錯(cuò)誤 */ #if DISK_BASE_BUF_LEN pDISK_BASE_BUF = & DISK_BASE_BUF[0]; /* 指向外部RAM的磁盤數(shù)據(jù)緩沖區(qū) */ #endif return( CH375Init( ) ); /* 初始化CH375 */ } main( ) { UINT8 i, month, hour; UINT16 date, adc, len; C8051F340_INIT(); CH375_PORT_INIT( ); /* 由于使用通用I/O模塊并口讀寫時(shí)序,所以進(jìn)行初始化 */ LED_OUT_INIT( ); LED_OUT_ACT( ); /* 開機(jī)后LED亮一下以示工作 */ mDelaymS( 100 ); /* 延時(shí)100毫秒 */ LED_OUT_INACT( ); // mInitSTDIO( ); /* 為了讓計(jì)算機(jī)通過(guò)串口監(jiān)控演示過(guò)程 */ // printf( "Start\n" );

i = CH375LibInit( ); /* 初始化CH375程序庫(kù)和CH375芯片,操作成功返回0 */ mStopIfError( i );


0x81錯(cuò)誤主要是硬件連接和接口程序有問(wèn)題,請(qǐng)檢查: (1)硬件連線 (2)如果是模擬I/O,接口程序參考1樓示例,并檢查I/O口配置是否正確


請(qǐng)問(wèn)如果我用的是FILELBC中的EXAM7,其中他說(shuō)也可以用串口的方法,我的程序如下:為什么總是在 i = CH375LibInit( ); /* 初始化CH375程序庫(kù)和CH375芯片,操作成功返回0 */ 這個(gè)程序處進(jìn)入死循環(huán)呢? 停止運(yùn)行后,程序顯示運(yùn)行到:while這一行 UINT8 xReadCH375Data( void ) { while ( RI0 == 0 ); RI0 = 0; return( SBUF0 ); } /* 2004.06.05 **************************************** ** Copyright (C) W.ch 1999-2004 ** ** Web: http://www.winchiphead.com ** **************************************** ** USB Host File Interface for CH375 ** ** TC2.0@PC, KC7.0@MCS51 ** **************************************** */ /* CH375 主機(jī)文件系統(tǒng)接口 */ /* 支持: FAT12/FAT16/FAT32 */

/* MCS-51單片機(jī)C語(yǔ)言的U盤文件讀寫示例程序 */ /* 用于以下情況的MCS51單片機(jī) 1. 高速M(fèi)CS51單片機(jī),機(jī)器周期小于0.3uS,或者在機(jī)器周期為12個(gè)時(shí)鐘時(shí)的時(shí)鐘頻率大于40MHz 2. 非總線MCS51單片機(jī),用普通I/O引腳模擬8位并行總線讀寫,與CH375之間采用并口連接 3. 單片機(jī)與CH375之間采用串口連接 */ /* 本程序用于演示將ADC模數(shù)采集的數(shù)據(jù)保存到U盤文件MY_ADC.TXT中 */ /* CH375的INT#引腳采用查詢方式處理,本例用普通I/O引腳模擬8位并行總線讀寫,同時(shí)提供串口連接示例, 以字節(jié)為單位讀寫U盤文件,讀寫速度較扇區(qū)模式慢,但是由于字節(jié)模式讀寫文件不需要文件數(shù)據(jù)緩沖區(qū)FILE_DATA_BUF, 所以總共只需要600字節(jié)的RAM,適用于單片機(jī)硬件資源有限、數(shù)據(jù)量小并且讀寫速度要求不高的系統(tǒng) */

/* C51 CH375HFT.C */ /* LX51 CH375HFT.OBJ , CH375HFC.LIB */ /* OHX51 CH375HFT */ #include"c8051f340.h"

#include

#define MAX_BYTE_IO 35 /* 以字節(jié)為單位單次讀寫文件時(shí)的最大長(zhǎng)度,默認(rèn)值是29,值大則占用內(nèi)存多,值小則超過(guò)該長(zhǎng)度必須分多次讀寫 */

/* 以下定義的詳細(xì)說(shuō)明請(qǐng)看CH375HFC.H文件 */ #define LIB_CFG_FILE_IO 1 /* 文件讀寫的數(shù)據(jù)的復(fù)制方式,0為"外部子程序",1為"內(nèi)部復(fù)制" */ #define LIB_CFG_INT_EN 0 /* CH375的INT#引腳連接方式,0為"查詢方式",1為"中斷方式" */ /*#define LIB_CFG_UPD_SIZE 1*/ /* 在添加數(shù)據(jù)后是否自動(dòng)更新文件長(zhǎng)度: 0為"不更新",1為"自動(dòng)更新" */ /* 默認(rèn)情況下,如果扇區(qū)數(shù)/字節(jié)數(shù)不為0那么CH375FileWrite/CH375ByteWrite只負(fù)責(zé)寫入數(shù)據(jù)而不修改文件長(zhǎng)度, 如果需要每次寫完數(shù)據(jù)后會(huì)自動(dòng)修改/更新文件長(zhǎng)度,那么可以使全局變量CH375LibConfig的位4為1, 如果長(zhǎng)時(shí)間不寫入數(shù)據(jù)則應(yīng)該更新文件長(zhǎng)度,防止突然斷電后前面寫入的數(shù)據(jù)與文件長(zhǎng)度不相符, 如果確定不會(huì)突然斷電或者后面很快有數(shù)據(jù)不斷寫入則不必更新文件長(zhǎng)度,可以提高速度并減少U盤損耗(U盤內(nèi)部的內(nèi)存壽命有限,不宜頻繁改寫) */

/* 只使用單片機(jī)內(nèi)置的1KB外部RAM: 0000H-01FFH 為磁盤讀寫緩沖區(qū), 以字節(jié)為單位讀寫文件不需要文件數(shù)據(jù)讀寫緩沖區(qū)FILE_DATA_BUF */ #define DISK_BASE_BUF_ADDR 0x0000 /* 外部RAM的磁盤數(shù)據(jù)緩沖區(qū)的起始地址,從該單元開始的緩沖區(qū)長(zhǎng)度為SECTOR_SIZE */ //#define FILE_DATA_BUF_ADDR 0x0000 /* 外部RAM的文件數(shù)據(jù)緩沖區(qū)的起始地址,緩沖區(qū)長(zhǎng)度不小于一次讀寫的數(shù)據(jù)長(zhǎng)度,字節(jié)模式不用該緩沖區(qū) */ /* 由于單片機(jī)內(nèi)置的外部RAM只有1KB, 有些單片機(jī)還要去掉256字節(jié)內(nèi)部RAM, 只剩下768字節(jié)的外部RAM, 其中前512字節(jié)由CH375子程序用于磁盤數(shù)據(jù)緩沖 */ //#define FILE_DATA_BUF_LEN 0x0200 /* 外部RAM的文件數(shù)據(jù)緩沖區(qū),緩沖區(qū)長(zhǎng)度不小于一次讀寫的數(shù)據(jù)長(zhǎng)度,字節(jié)模式不用該緩沖區(qū) */ /* 如果準(zhǔn)備使用雙緩沖區(qū)交替讀寫,那么不要定義FILE_DATA_BUF_LEN,而是在參數(shù)中指定緩沖區(qū)起址,用CH375FileReadX代替CH375FileRead,用CH375FileWriteX代替CH375FileWrite */

#define CH375_INT_WIRE P3^2 /* P3.2, INT0, CH375的中斷線INT#引腳,連接CH375的INT#引腳,用于查詢中斷狀態(tài) */

#define NO_DEFAULT_CH375_F_ENUM 1 /* 未調(diào)用CH375FileEnumer程序故禁止以節(jié)約代碼 */ #define NO_DEFAULT_CH375_F_QUERY 1 /* 未調(diào)用CH375FileQuery程序故禁止以節(jié)約代碼 */

#include "CH375HFC.H"

sbit P2_2 = P2^2; #define LED_OUT_INIT( ) { P2_2 = 0; } /* P1.4 高電平 */ #define LED_OUT_ACT( ) { P2_2 = 1; } /* P1.4 低電平驅(qū)動(dòng)LED顯示 */ #define LED_OUT_INACT( ) { P2_2 = 0; } /* P1.4 低電平驅(qū)動(dòng)LED顯示 */ sbit P2_3 = P2^3; /* 在P1.5連接一個(gè)LED用于監(jiān)控演示程序的進(jìn)度,低電平LED亮,當(dāng)對(duì)U盤操作時(shí)亮 */ #define LED_RUN_ACT( ) { P2_3 = 1; } /* P1.5 低電平驅(qū)動(dòng)LED顯示 */ #define LED_RUN_INACT( ) { P2_3 = 0; } /* P1.5 低電平驅(qū)動(dòng)LED顯示 */

void mDelay1_2uS( ) /* 至少延時(shí)1.2uS,根據(jù)單片機(jī)主頻調(diào)整 */ { return; }

void CH375_PORT_INIT( ) { PCA0MD &= ~0x40; //關(guān)閉看門狗 OSCICN |= 0x03; //使用內(nèi)部12M晶振 mDelay1_2uS( ); //延時(shí) TMOD|=0x20; //定時(shí)器1工作在方式2:自動(dòng)重裝載8位定時(shí)器 CKCON|=0x01; //定時(shí)器1的時(shí)鐘為系統(tǒng)時(shí)鐘的4分頻,即3M頻率 TH1=0X64; //設(shè)置重裝載值,公式為 波特率=(T1clk/2)/(256-T1H)

P0MDIN = 0xFF; P1MDIN = 0xFF; P2MDIN = 0xFF; P2MDOUT = 0xff; P3MDIN = 0xFF; P3MDOUT =0; P3=0XFF; P2_2=0; P2_3=0; XBR0 = 0X01; //把UART的TX0接到P0.4,RX0接到P0.5 P0SKIP=0X30; //交叉開關(guān)跳過(guò)P0.4和P0.5 XBR1 = 0XC0; //使能交叉開關(guān),關(guān)閉弱上拉

SCON0 = 0xD0; //使用UART0的方式1:波特率可編程的9位UART EA=1; //啟動(dòng)中斷 ET1=1; TR1=1; //啟動(dòng)定時(shí)器1 }

void xWriteCH375Cmd( UINT8 mCmd ) { TI0 = 0; TB80 = 1; SBUF0 = mCmd; while ( TI0 == 0 ); }

void xWriteCH375Data( UINT8 mData ) { TI0 = 0; TB80 = 0; SBUF0 = mData; while ( TI0 == 0 ); }

UINT8 xReadCH375Data( void ) { while ( RI0 == 0 ); RI0 = 0; return( SBUF0 ); }

/* 以毫秒為單位延時(shí),不精確,適用于24MHz時(shí)鐘 */ void mDelaymS( UINT8 delay ) { unsigned char i, j, c; for ( i = delay; i != 0; i -- ) { for ( j = 200; j != 0; j -- ) c += 3; /* 在24MHz時(shí)鐘下延時(shí)500uS */ for ( j = 200; j != 0; j -- ) c += 3; /* 在24MHz時(shí)鐘下延時(shí)500uS */ } }

/* 將程序空間的字符串復(fù)制到外部RAM中,返回字符串長(zhǎng)度 */ UINT8 mCopyCodeStringToXRAM( UINT8 xdata *iDestination, UINT8 code *iSource ) { UINT8 i = 0; while ( *iDestination = *iSource ) { iDestination ++; iSource ++; i ++; } return( i ); }

/* 檢查操作狀態(tài),如果錯(cuò)誤則顯示錯(cuò)誤代碼并停機(jī) */ void mStopIfError( UINT8 iError ) { if ( iError == ERR_SUCCESS ) return; /* 操作成功 */ printf( "Error: %02X\n", (UINT16)iError ); /* 顯示錯(cuò)誤 */ while ( 1 ) { LED_OUT_ACT( ); /* LED閃爍 */ mDelaymS( 100 ); LED_OUT_INACT( ); mDelaymS( 100 ); } }

main( ) { UINT8 i, month, hour; UINT16 date, adc, len; CH375_PORT_INIT( ); /* 由于使用通用I/O模塊并口讀寫時(shí)序,所以進(jìn)行初始化 */ LED_OUT_INIT( ); LED_OUT_ACT( ); /* 開機(jī)后LED亮一下以示工作 */ // mDelaymS( 100 ); /* 延時(shí)100毫秒 */ LED_OUT_INACT( );

// printf( "Start\n" );

i = CH375LibInit( ); /* 初始化CH375程序庫(kù)和CH375芯片,操作成功返回0 */ mStopIfError( i ); /* 其它電路初始化 */

while ( 1 ) { printf( "Wait Udisk\n" ); while ( CH375DiskStatus != DISK_CONNECT ) xQueryInterrupt( ); /* 查詢CH375中斷并更新中斷狀態(tài),等待U盤插入 */ LED_OUT_ACT( ); /* LED亮 */ mDelaymS( 200 ); /* 延時(shí),可選操作,有的USB存儲(chǔ)器需要幾十毫秒的延時(shí) */

/* 檢查U盤是否準(zhǔn)備好,有些U盤不需要這一步,但是某些U盤必須要執(zhí)行這一步才能工作 */ for ( i = 0; i < 5; i ++ ) { /* 有的U盤總是返回未準(zhǔn)備好,不過(guò)可以被忽略 */ mDelaymS( 100 ); printf( "Ready ?\n" ); if ( CH375DiskReady( ) == ERR_SUCCESS ) break; /* 查詢磁盤是否準(zhǔn)備好 */ } /* 查詢磁盤物理容量 */ /* printf( "DiskSize\n" ); i = CH375DiskSize( ); mStopIfError( i ); printf( "TotalSize = %d MB \n", (unsigned int)( mCmdParam.DiskSize.mDiskSizeSec >> 11 ) ); 顯示為以MB為單位的容量 */ LED_RUN_ACT( ); /* 開始操作U盤 */

/* 如果MY_ADC.TXT文件已經(jīng)存在則添加數(shù)據(jù)到尾部,如果不存在則新建文件 */ printf( "Open\n" ); mCopyCodeStringToXRAM( mCmdParam.Open.mPathName, "/MY_ADC.TXT" ); /* 文件名,該文件在根目錄下 */ i = CH375FileOpen( ); /* 打開文件 */ if ( i == ERR_SUCCESS ) { /* 文件存在并且已經(jīng)被打開,移動(dòng)文件指針到尾部以便添加數(shù)據(jù) */ // printf( "File size = %ld\n", CH375vFileSize ); /* V1.5以上子程序庫(kù)在成功打開文件后,全局變量CH375vFileSize中是文件當(dāng)前長(zhǎng)度 */ // printf( "Locate tail\n" ); mCmdParam.ByteLocate.mByteOffset = 0xffffffff; /* 移到文件的尾部 */ i = CH375ByteLocate( ); mStopIfError( i ); } else if ( i == ERR_MISS_FILE ) {


(1)CH375默認(rèn)波特率是:9600bps,確認(rèn)程序中串口設(shè)置是否正確 (2)在CH375LibInit之前,先做個(gè)測(cè)試命令,方法參考手冊(cè)


樓上請(qǐng)教一下。我的單片機(jī)是新華龍的C8051F040的程序,想用串口模式。 我的連線如下:?jiǎn)纹瑱C(jī)TXD接375的RXD; 單片機(jī)RXD接375的TXD; P3.2接375的INT# 以及電源和地線。 我是使用FILELBC中的EXAM7的例子改的,我的串口已經(jīng)設(shè)成9600bps了,但是P3.2我是隨便設(shè)的IO口(設(shè)成數(shù)字輸入了),沒(méi)有專門聯(lián)到單片機(jī)的外部中斷處,請(qǐng)問(wèn)這樣可以么。 還有我每次都是初始化不成功,使用檢測(cè)命令后程序也總是停在這里: while這一行: UINT8 xReadCH375Data( void ) { while ( RI0 == 0 ); RI0 = 0; return( SBUF0 ); }


(1)硬件連接沒(méi)問(wèn)題 停在while ( RI0 == 0 );原因可能如下: (2)單片機(jī)沒(méi)能發(fā)出命令,CH375沒(méi)有收到,肯定不會(huì)有數(shù)據(jù)返回,自然會(huì)停在這里 (3)CH375沒(méi)正常工作,如復(fù)位不好,晶振沒(méi)起振,后者用示波器檢測(cè),前者在正常復(fù)位后,26腳為高,25腳為低 先確認(rèn)單片機(jī)和CH375都能正常工作,且硬件連接沒(méi)問(wèn)題,然再確認(rèn)單片機(jī)的串口確實(shí)能正確收發(fā)數(shù)據(jù),若方便的話,可以與計(jì)算機(jī)通信試試


我按照你的辦法測(cè)了一遍,都沒(méi)有問(wèn)題?,F(xiàn)在我發(fā)現(xiàn)一個(gè)問(wèn)題,你們給的程序里,是用MCS-51編的 其中SCON=0xD0,我查了一下相關(guān)的寄存器說(shuō)明,你們是將串口用在方式3,且不允許多機(jī)通訊,那你們的程序里,為什么還要對(duì)TB8操作呢?TB8不是用來(lái)區(qū)分是數(shù)據(jù)還是地址么


(1)TB8就是第9位數(shù)據(jù),在多機(jī)通訊中是用來(lái)區(qū)分是數(shù)據(jù)還是地址,非多機(jī)通訊時(shí),也能作其他用途,如校驗(yàn)位。我們是借用這個(gè)位區(qū)分命令和數(shù)據(jù)。 (2)在主程序中,CH375LibInit之前要等待100mS左右,這是等待CH375上電復(fù)位完成


請(qǐng)您仔細(xì)把SCON這個(gè)給我解釋一下好么,因?yàn)槲矣玫膯纹瑱C(jī)和普通的51有些不一樣,只有方式0和方式1,而且TB8,和RB8的定義也不太一樣。 請(qǐng)您說(shuō)一下 1.當(dāng)串口使用方式3,即波特率可編程的9位UART時(shí),將SM2置0是不是不允許多機(jī)通訊? 2.如果不用多機(jī)通訊的話,如何使用TB8來(lái)區(qū)分發(fā)送的是地址,還是數(shù)據(jù)呢? 謝謝?。?!


串口使用方式3 是11位數(shù)據(jù)通訊.即起始位,8位數(shù)據(jù)位,一位校驗(yàn)位,一位停止位. SM2為0 是禁止使用多機(jī)通訊的 用TB8來(lái)表示發(fā)送的校驗(yàn)位. 當(dāng)TB8置1時(shí) 表示發(fā)送的8位數(shù)據(jù)位作為命令處理 當(dāng)TB8置0時(shí) 表示發(fā)送的8位數(shù)據(jù)位作為數(shù)據(jù)處理.


只有登錄才能回復(fù),可以選擇微信賬號(hào)登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频