庫HFA的使用問題

1、使用CH375HFA.LIB庫,不使用內(nèi)部RAM,單片機(jī)內(nèi)部擴(kuò)展1024字節(jié)RAM,其中0000H~01FFH同時作為磁盤數(shù)據(jù)緩沖區(qū)和文件數(shù)據(jù)緩沖區(qū) 2、CH375的CS#為P2.3反向后信號,A0連接P2.0,CMD=#0900H,DAT=#0800H 3、RAM定義如下。不使用外部RAM,外RAM變量區(qū)是否還要定義? DISK_BASE_BUF_ADDR EQU 0000H ;外部RAM的磁盤數(shù)據(jù)緩沖區(qū)的起始地址,從該單元開始的緩沖區(qū)長度為SECTOR_SIZE FILE_DATA_BUF_ADDR EQU 0000H ;外部RAM的文件數(shù)據(jù)緩沖區(qū)的起始地址,緩沖區(qū)長度不小于一次讀寫的數(shù)據(jù)長度 #define FILE_DATA_BUF_LEN FILE_DATA_BUF_LEN FILE_DATA_BUF_LEN EQU 0200H 4、在讀寫外RAM變量時,應(yīng)在RAM區(qū)#0200H~03FFH,此時,CH375片選CS#為高電平,是否有影響? 如: MOV DPTR, #CH375DiskStatus ;地址#0238H MOVX A, @DPTR 5、可否將CH375的CS#端接地?一直處于選通狀態(tài)。

1、“單片機(jī)內(nèi)部擴(kuò)展1024字節(jié)RAM”,其中768字節(jié)是屬于XDATA,只是在單片機(jī)內(nèi)部,無需通過外部總線訪問,與CH375的地址也不沖突 2、可以接地,不過既然掛在總線上了,也不需要這么做 3、把你的程序打包傳上來看看把(點(diǎn)擊右下腳,修改帖子)


單片機(jī)擴(kuò)展的1024字節(jié)都是XDATA,共1280字節(jié)RAM,單片機(jī)為STC12C5A60S2 程序已上傳,謝謝


測試時發(fā)現(xiàn),xQueryInterrupt可以檢測到U盤的連接/斷開,最后將狀態(tài)寫入CH375DiskStatus,但子程序返回后,再讀CH375DiskStatus時,讀到的值就出現(xiàn)錯誤。如果在xQueryInterrupt子程序中寫入CH375DiskStatus后,繼續(xù)讀,不返回RET,讀到的值正確。? 我想調(diào)用CH375DiskConnect錯誤的原因應(yīng)該在這了。 讀CH375DiskStatus的程序: MOV DPTR, #CH375DiskStatus MOVX A, @DPTR

但不知道 為什么 讀出來的數(shù)據(jù)不正確,或者是在寫CH375DiskStatus時,就出了錯誤


MOV DPTR, #CH375DiskStatus MOVX A, @DPTR 是什么意思?讀取數(shù)據(jù)應(yīng)該是讀取CH375的數(shù)據(jù)端口,你怎么寫成這樣了?


讀當(dāng)前U盤是否連接的狀態(tài),就是MOV A,CH375DiskStatus 因?yàn)槲矣玫氖峭獠縍AM,不用內(nèi)部RAM,所以 MOV DPTR, #CH375DiskStatus MOVX A, @DPTR


xQueryInterrupt_1: MOV DPTR,#CH375_CMD_PORT MOV A,#CMD_GET_STATUS MOVX @DPTR,A ; 獲取當(dāng)前中斷狀態(tài) */ LCALL D2US MOV DPTR,#CH375_DAT_PORT MOVX A,@DPTR ; 獲取中斷狀態(tài) */ MOV DPTR,#CH375IntStatus MOVX @DPTR,A MOV DPTR,#CH375DiskStatus CJNE A,#ERR_USB_DISCON,MQUERY_INT_DISCON MOV A,#DISK_DISCONNECT ; 檢測到USB設(shè)備斷開事件 */ MOVX @DPTR,A RET QUERY_INT_DISCON: CJNE A,#ERR_USB_CONNECT,QUERY_INT_CONNECT MOV A,#DISK_CONNECT ; 檢測到USB設(shè)備連接事件 */ MOVX @DPTR,A RET QUERY_INT_CONNECT: RET

LCALL xQueryInterrupt LCALL D20MS MOV DPTR, #CH375DiskStatus ;...在此讀到的值錯誤!! MOVX A, @DPTR CJNE A, #DISK_DISCONNECT, DISK_IN .................................

DISK_IN: .................................


看了下程序,里面還有其他功能,如果方便的話,想這樣測試一下,做個最簡單的測試程序,測試對U盤的檢測功能,排除其他程序的影響,只要把地址定義修改一下阿。UploadImages/200912716141053.rar


_mCopyStringToIRAM將程序空間的字符串復(fù)制到內(nèi)部RAM中 用HFA庫,不用內(nèi)部RAM,是不是要復(fù)制到外部RAM?

謝謝,我先測試下


這個程序僅測試U盤連接,那么個函數(shù)暫沒用到


1、不能檢測U盤的連接 WAIT_DISK_IN: ; MOV A,CH375DiskStatus ; 查詢CH375中斷并更新中斷狀態(tài),等待U盤插入 */ MOV DPTR,#CH375DiskStatus MOVX A,@DPTR MOV P0, A ;*******************返回值A(chǔ)都是01H XRL A,#DISK_CONNECT JZ DISK_IN_NOW ; U盤已經(jīng)插入 LCALL xQueryInterrupt ; 該調(diào)用僅在有U盤插拔后才會返回,如果希望立即返回,那么請使用CH375DiskConnect代替 CPL P1.6 ;******************U盤連接/斷開時翻轉(zhuǎn) SJMP WAIT_DISK_IN

2、之前測試xQueryInterrupt函數(shù)時,P1.5 P1.6可以正確指示U盤狀態(tài)。不知道MOV DPTR,#CH375DiskStatus的讀寫是否正確?? xQueryInterrupt_1: MOV DPTR,#CH375_CMD_PORT MOV A,#CMD_GET_STATUS MOVX @DPTR,A ; 獲取當(dāng)前中斷狀態(tài) */ LCALL D2US MOV DPTR,#CH375_DAT_PORT MOVX A,@DPTR ; 獲取中斷狀態(tài) */ MOV DPTR,#CH375IntStatus MOVX @DPTR,A MOV DPTR,#CH375DiskStatus CJNE A,#ERR_USB_DISCON,QUERY_INT_DISCON MOV A,#DISK_DISCONNECT ; 檢測到USB設(shè)備斷開事件 */ MOVX @DPTR,A CPL P1.5 RET QUERY_INT_DISCON: CJNE A,#ERR_USB_CONNECT,QUERY_INT_CONNECT MOV A,#DISK_CONNECT ; 檢測到USB設(shè)備連接事件 */ MOVX @DPTR,A CPL P1.6 RET QUERY_INT_CONNECT: RET


如果沒插U盤,那么MOV DPTR,#CH375DiskStatus MOVX A,@DPTR,A=01就是正確的 有沒有插入U(xiǎn)盤呢


插入U(xiǎn)盤了,因?yàn)長CALL xQueryInterrupt有返回,P1.6在U盤連接/端開時會相應(yīng)翻轉(zhuǎn)

不知道MOV DPTR,#CH375DiskStatus的讀寫是否正確??


1、指令沒問題,這個例程我們這邊測試過,可以正常檢測到U盤插拔 2、先前是沒插U盤,CH375DiskStatus=02,即能檢測到U盤連接,現(xiàn)在是插入U(xiǎn)盤,CH375DiskStatus=01,即檢測到U盤斷開,現(xiàn)象怎么前后不一致?這樣吧,電話溝通一下:025-52638368,也直接一點(diǎn)


不好意思,我這里電話不方便.......... 用我之前的程序確實(shí)未插U盤返回2,現(xiàn)在插上U盤也返回1。。但xQueryInterrupt都是正確的 我之前的程序MOV DPTR,#CH375DiskStatus,測得DPTR值好象也不對,是0FFFFH,應(yīng)該是0238H 明天我再用CH375的評估板測試一下,非常感謝您的幫助!謝謝!


1、在xQueryInterrupt子程序中,讀數(shù)據(jù)端口前加延時后,測試程序能正確檢測U盤狀態(tài) 2、將調(diào)用xQueryInterrupt改為LCALL CH375DiskConnect,不能正確檢測 3、使用STC的1T單片機(jī),32MHz,是否LCALL CH375DiskConnect時序不匹配?庫HFA 4、若使用庫HFC,是否可以直接替換?可否提供CH375HFC.INC,我的是匯編程序 5、將晶振換為8M后,LCALL CH375DiskConnect可以。。繼續(xù),CH375DiskReady返回0,但CH375FileOpen返回0x1F??試了三個U盤,都返回0x1F

謝謝解答


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

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