請問:我用串口和375通訊,用375的測試命令#06H,單片機給375發(fā)FFH,但不能接受到00。為什么呢?
我的也是 而且我都能看到返回的數(shù)據(jù)到了單片機的rxd端了呢,就是單片機進不了終端,誰給個解釋吧
我還想問一下,375的A0腳與單片機的哪個腳連接呢?怎么控制A0?
CH375HM_STA# 這與375的哪個管腳有關(guān)系,怎么控制它?
A0是用來控制是命令口還是數(shù)據(jù)口的,隨便你接單片機的通用I/O引腳。 CH375HM_STA#是U盤讀寫模塊上定義的引腳,與375的管腳無關(guān)??梢杂脕硗ㄖK,說明命令包已經(jīng)寫入,請求開始執(zhí)行命;或是中斷應(yīng)答,取消來自模塊的中斷請求,具體你可以看例子程序。
謝謝。但我對CH375HM_STA#的理解還不是很清楚。 另外,A0的功能我是明白了,但我用并口通訊方式時,D0~D7與單片機的P0.0~0.7連接??墒钦{(diào)試的時候,我怎么也不能控制單片機的P0口,我用的是匯編程序,但程序一旦進入主程序,P0口的地址就自動跳到03,無論我用什么指令都不能控制PO口,不知道是為什么?
你的串口調(diào)好了???
串口沒有調(diào)好!因為我的并口不能用,我才用的串口,我是問問為什么并口不能用!
請問你用的是模塊還是375芯片,如果是375芯片的話,就不會有#STA引腳,如果是使用并口的話,只要你用普通的I/O口來模擬出INTER時序就可以了,如果是總線的話,也要符合INTER時序,如果不是就用I/O口來模擬就可以了,還有就是如果是串口通信的話,那么你用的是什么單片機,375工作在串口的話,一般第9位為校驗位
我串口是調(diào)通了,就是并口調(diào)不通,我用的是51單片機,是375芯片!
你用51的話,可以直接掛在總線上的。大體按說明書上的電路接,用總線方式的話,命令口地址和數(shù)據(jù)口地址得按你的接線來設(shè)定,一定不能設(shè)錯。在進行其他操作之前,先做測試命令。 還有一點,用并口的話,TXD要接地,用來在375復(fù)位時選擇并口方式。
那你測試命令發(fā)送的時候返回什么數(shù)據(jù)啊??
我說四個問題: 第一:我的接法是 D0~D7接單片機的P1~P7 ,A0接單片機的P3.4。CS#接地。 不知道這樣接對不對
第二:請問375模塊上的CH375HM_STA 怎么控制?我用的不是模塊是375芯片!這個觸發(fā)信號怎么給?
第三:比如我用串口發(fā)數(shù),一個起始位,8個數(shù)據(jù)位,1個驗證位,1個終止位。但我收回來的數(shù)應(yīng)該是什么格式的,也是和我發(fā)的數(shù)一樣的11位么?
第四:我用并口發(fā)數(shù),隨便一個數(shù),它正常情況下應(yīng)該收到什么格式的數(shù)? 謝謝!
1、你將D0~D7接單片機的P1~P7 ,沒選擇總線方式的話,應(yīng)該選用模擬并口,也就是得把WR#、RD#接到單片機的I/O口,以控制讀寫信號,以模擬并口來寫三個讀寫子程序; 2、模塊上的CH375HM_STA并不是375的引腳,你直接用375的話,和CH375HM_STA無關(guān); 3、串口才用9位數(shù)據(jù)方式的話,收到的也是9位的數(shù)據(jù)(8個數(shù)據(jù)位,1個驗證位); 4、并口的話當然是8位的數(shù)據(jù)了。
哦明白了,不過我現(xiàn)在又遇到一個問題,下面是我的一段測試程序,讓375返回版本號的程序,可是怎么也不能返回正確的數(shù),每次都是01H,請幫我看下! INCLUDE "CH375HM.INC" ;=============================================================== ORG 0000H LJMP MAIN
;================================================================= CH375HM_INDEX XDATA 0BCF0H CH375HM_DATA XDATA 0BDF1H CH375HM_RD EQU 0B7H CH375HM_WR EQU 0B6H CH375HM_INT EQU INT0 CH375HM_A0 EQU 0B4H CH375HM_CS EQU 0B5H DATA_BUF XDATA 00000H MCMDPARAM DATA 20H SECTOR_COUNT DATA 1DH NEW_SIZE_HIGH DATA 1EH NEW_SIZE_LOW DATA 1FH CH375_CHECK EQU 00H P11 EQU 091H P14 EQU 094H ;======================================================================================= MDELAY100MS: MOV R7,#0C8H MDELAY100MS_1: MOV R6,#0C8H MDELAY100MS_2: NOP NOP NOP DJNZ R6,MDELAY100MS_2 DJNZ R7,MDELAY100MS_1 RET
;================================================================================== MAIN: CLR A MOV PSW,A MOV IE,A MOV SP,#60H MOV A,#0FFH MOV P0,A MOV P1,A MOV P2,A MOV P3,A MOV A,#20H MOV TMOD,A MOV SCON,#0D0H MOV TH1,#0FDH MOV TL1,#0FDH CLR PSW.5 SETB ET0 SETB PT0 SETB SM2 SETB EA SETB ES SETB TR1 NOP MAIN_LOOP: CLR EA CLR ES MOV A,#01H MOV P1,A NOP SETB CH375HM_RD SETB CH375HM_A0 CLR CH375HM_WR CLR CH375HM_CS NOP MOV P1,#0FFH SETB CH375HM_CS NOP CLR CH375HM_RD CLR CH375HM_A0 SETB CH375HM_WR CLR CH375HM_CS NOP NOP MOV A,P1 NOP LCALL MDELAY100MS NOP END1: END MAIN END
你的程序有問題啊,測試命令應(yīng)該是這樣做: MOV P1,#0FFH SETB CH375HM_RD SETB CH375HM_WR CLR CH375HM_A0 SETB CH375HM_CS;初始化I/O口 MOV P1,#06H SETB CH375HM_A0 CLR CH375HM_CS CLR CH375HM_WR NOP SETB CH375HM_WR SETB CH375HM_CS;寫命令 CLR CH375HM_A0 MOV P1;#0FFH; NOP MOV P1;#55H; 寫數(shù)據(jù) CLR CH375HM_A0 CLR CH375HM_CS CLR CH375HM_WR NOP NOP SETB CH375HM_WR SETB CH375HM_CS MOV P1,#0FF;寫數(shù)據(jù) NOP NOP CLR CH375HM_A0 CLR CH375HM_CS CLR CH375HM_RD MOV A,P1 NOP NOP SETB CH375HM_RD SETB CH375HM_CS MOV A,#0FFH;讀數(shù)據(jù) 這個是一個測試命令的流程,你可以參考,中間有部分延時需要根據(jù)你的單片機的速度來調(diào)整