我現(xiàn)在的一個(gè)項(xiàng)目里,原來(lái)的單片機(jī)程序已經(jīng)有54K了,現(xiàn)在想在上面添加一個(gè)CH375,將CH375HF6.LIB文件添加進(jìn)去后,按小模式編譯,程序可以控制在62k多,但是估計(jì)是由于data空間占用太多溢出的緣故,提示一堆錯(cuò)誤; 例如: *** ERROR L107: ADDRESS SPACE OVERFLOW SPACE: DATA SEGMENT: _DATA_GROUP_ LENGTH: 002FH *** WARNING L1: UNRESOLVED EXTERNAL SYMBOL SYMBOL: CH375FILEWRITE MODULE: .\pro\main.obj (MAIN) *** WARNING L1: UNRESOLVED EXTERNAL SYMBOL SYMBOL: CH375LIBINIT MODULE: .\pro\main.obj (MAIN) *** WARNING L1: UNRESOLVED EXTERNAL SYMBOL SYMBOL: FILE_DATA_BUF MODULE: .\pro\main.obj (MAIN) *** WARNING L1: UNRESOLVED EXTERNAL SYMBOL SYMBOL: XQUERYINTERRUPT MODULE: .\pro\main.obj (MAIN) *** WARNING L1: UNRESOLVED EXTERNAL SYMBOL SYMBOL: MCMDPARAM MODULE: .\pro\main.obj (MAIN) *** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL SYMBOL: CH375LIBINIT MODULE: .\pro\main.obj (MAIN) ADDRESS: C846H *** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL SYMBOL: XQUERYINTERRUPT MODULE: .\pro\main.obj (MAIN) ADDRESS: C876H *** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL SYMBOL: MCMDPARAM MODULE: .\pro\main.obj (MAIN) ADDRESS: C8CEH 以上只節(jié)選了一部分警告信息,按照壓縮模式編譯的話(huà),又提示編譯模式不兼容,請(qǐng)問(wèn)有沒(méi)有什么辦法能夠解決?。繎┱?qǐng)各位指教。
是否添加了另外一個(gè)庫(kù)C51DPTR1.LIB,或則C51DPTR2.LIB,或則C51P2R0.LIB 根據(jù)你的方式選擇其中一個(gè)添加進(jìn)去,編譯.
這幾個(gè)文件在哪里下?。空?qǐng)賜教
在我們公司網(wǎng)站上,在線(xiàn)下載,搜索CH374LIB,下載完畢后解壓,在CH374LIB/MCS51/LIB6中
多謝了,我添加進(jìn)去后,進(jìn)行編譯,還是出現(xiàn)一樣的提示啊,不知道是什么原因?是不是我這樣使用有問(wèn)題啊
C51P2R0.LIB是針對(duì)374芯片的子程序庫(kù),應(yīng)刪掉。
不好意思!我看成374了.抱歉! 不知道你要寫(xiě)的數(shù)據(jù)多不多,對(duì)速度有什么要求,如果速度要求不塊,數(shù)據(jù)量少的話(huà)建議你用字節(jié)模式,這樣節(jié)省空間.總之把你的要求寫(xiě)一下,方面我們提供技術(shù)支持!
多謝各位的熱心幫忙,我剛才將程序修改了下,現(xiàn)在我如果按照壓縮模式進(jìn)行編譯的話(huà),可以正常編譯,但提示編譯模式不兼容,如果采用小模式編譯的話(huà),則提示DATA空間溢出,我的應(yīng)用很簡(jiǎn)單,只是簡(jiǎn)單的對(duì)外接的U盤(pán)進(jìn)行識(shí)別后建立兩級(jí)目錄,然后新建一個(gè)文件,對(duì)其寫(xiě)入,每個(gè)文件2048個(gè)字節(jié),所以想采用扇區(qū)寫(xiě)的模式對(duì)其進(jìn)行操作,這樣速度可能會(huì)快些。不知道貴公司有沒(méi)有提供按照壓縮模式進(jìn)行編譯的庫(kù)呢,或者有沒(méi)有什么別的辦法解決,以下是我按照壓縮模式進(jìn)行編譯的輸出信息,請(qǐng)賜教:
你把不份內(nèi)部的變量定義到外部RAM去就應(yīng)該可以了
我自己程序里能定義到外部去的變量都已經(jīng)修改過(guò)了,現(xiàn)在我的程序里占用DATA空間的主要是一些全局變量和函數(shù)調(diào)用值,CH375提供的庫(kù)文件里的變量沒(méi)有辦法更改啊
首先一個(gè)就是你用的單片機(jī)的內(nèi)部RAM需要是256字節(jié)的才可以,否則的話(huà)編譯就會(huì)出錯(cuò)的,其次你可以這樣,直接拿我們的例子程序加我們的庫(kù),你看下編譯可以不可以通過(guò)。
我用的是新茂的片子,內(nèi)部256字節(jié),直接拿你們的例子+庫(kù)可以通過(guò),按照我的使用要求,貴公司的庫(kù)是否可以通過(guò)修改哪里,減少對(duì)DATA空間的占用呢
那你用FILELIBC,該庫(kù)基本不用內(nèi)部RAM。 該庫(kù)是模擬IO的,若要使用總線(xiàn)操作,只要把三個(gè)讀寫(xiě)子函數(shù)中的模擬時(shí)序替換為總線(xiàn)操作即可
大家好: 對(duì)里面的 CH375FileCreate( ); CH375FileErase( ); 刪除文件并關(guān)閉 這些子程序是不是要自己去編,不能調(diào)用的嗎?? 怎么新建不起來(lái)TXT文檔呢??而且編譯說(shuō)沒(méi)有定義這兩個(gè)子程序,什么原因呢,給的U盤(pán)文件級(jí)子程序 怎么也找不到這兩個(gè)子程序呢,
庫(kù)里有這兩個(gè)子程序。 你的編譯錯(cuò)誤是什么?