我想請教一下,用C8051F340+CH375。

我想請教一下,用C8051F340+CH375,不擴展RAM那個例子最適合? 有那些地方需要改動?謝謝

你可以使用我們的CH375LIB里面的MCS51下面的LIB5是最合適的,只需要修改下頭文件就可以了


需在示例主程序中,作如下修改: (1)若用總線方式,那么需要根據(jù)硬件,定義CH375的命令口、數(shù)據(jù)口地址、中斷線,且在讀寫函數(shù)中直接對地址操作 (2)若用模擬I/O方式,那么需要根據(jù)硬件,定義CH375的CS,WR,RD,A0,D7-DO,INT


我第一次做,向用C0851F340那樣的單片機,一般應(yīng)該選擇總線方式、還是模擬I/O方試,容易成功。還有讀寫的速度會怎么樣。還有像C8051F340這樣的單片機不擴展RAM用那個例子能達到處理文件最快的目的。謝謝


對于C0851F340,總線方式和模擬I/O的配置都比較簡單,我們例程就是模擬I/O,詳細的配置還需要您去看手冊說明,速度當(dāng)然是前者快。下面是C0851F410模擬I/O程序: /* 本例用I/O引腳模擬產(chǎn)生CH375的并口讀寫時序 */ /* 本例中的硬件連接方式如下(實際應(yīng)用電路可以參照修改下述定義及子程序) */ /* 單片機的引腳 CH375芯片的引腳 P1.3: A0 P1.4: WR P1.5: RD P1.6 CS 如果模擬出的并口上只有CH375,那么CS#可以直接接低電平,強制片選 P1.7: INT P2.0-P2.6: D0-D6 P0.7: D7 */ sbit CH375_A0 = P1 ^ 3; sbit CH375_WR = P1 ^ 4; sbit CH375_RD = P1 ^ 5; sbit CH375_CS = P1 ^ 6;

#define CH375_DATA_DAT_OUT(d) { P0 &= 0x7F; \ P2 &= 0x80; \ P0 |= d & 0x80; \ P2 |= d & 0x7F; \ } // 向并口輸出數(shù)據(jù)

#define CH375_DATA_DAT_IN( ) ( (P0 & 0x80) | (P2 & 0x7F) ) // 從并口輸入數(shù)據(jù)

#define CH375_DATA_DIR_OUT( ) { \ P0MDOUT |= 0x80; \ P2MDOUT |= 0x7F; \ } // 設(shè)置并口方向為輸出 #define CH375_DATA_DIR_IN( ) { \ P0MDOUT &= 0x7F; \ P2MDOUT &= 0x80; \ P0 |= 0x80; \ P2 |= 0x7F; \ }

void CH375_PORT_INIT(void) // 由于使用通用I/O模擬并口讀寫時序,所以進行初始化 { //---------------------------------------------------------- // P1口引腳的輸入方式: P1.7-P1.2: 數(shù)字 P1MDIN |= 0xFC; //1111,1100 // P1口引腳的輸出方式: P1.7-P1.2: 推挽輸出 P1MDOUT |= 0xFC; //---------------------------------------------------------- // P2口引腳的輸入方式: P2.6-P2.0: 數(shù)字 P2MDIN |= 0x7F; // P2口引腳的輸出方式: P2.7-P2.0: 推挽輸出 P2MDOUT |= 0x7F; //---------------------------------------------------------- // P0口引腳的輸入方式: P0.7: 數(shù)字 P0MDIN |= 0x80; // P0口引腳的輸出方式: P0.7: 推挽輸出 P0MDOUT |= 0x80; //---------------------------------------------------------- CH375_CS = 1; CH375_WR = 1; CH375_RD = 1; CH375_A0 = 0; CH375_DATA_DIR_IN(); // 設(shè)置并口輸入 }

void Write375Cmd( UINT8 mCmd ) /* 向CH375寫命令 */ { CH375_DATA_DAT_OUT( mCmd ); /* 向CH375的并口輸出數(shù)據(jù) */ CH375_DATA_DIR_OUT( ); /* 設(shè)置并口方向為輸出 */ CH375_A0 = 1; CH375_CS = 0; CH375_WR = 0; /* 輸出有效寫控制信號*/ _nop_(); _nop_(); CH375_WR = 1; /* 輸出無效的控制信號, 完成操作CH375芯片 */ CH375_CS = 1; CH375_A0 = 0; CH375_DATA_DIR_IN( ); /* 禁止數(shù)據(jù)輸出 */ }

static void Write375Data( UINT8 mData ) /* 向CH375寫數(shù)據(jù)*/ { CH375_DATA_DAT_OUT( mData ); /* 向CH375的并口輸出數(shù)據(jù) */ CH375_DATA_DIR_OUT( ); /* 設(shè)置并口方向為輸出 */ CH375_A0 = 0; CH375_CS = 0; CH375_WR = 0; /* 輸出有效寫控制信號, 寫CH375芯片的數(shù)據(jù)端口 */ _nop_(); _nop_(); CH375_WR = 1; /* 輸出無效的控制信號, 完成操作CH375芯片 */ CH375_CS = 1; CH375_DATA_DIR_IN( ); /* 禁止數(shù)據(jù)輸出 */ }

static UINT8 Read375Data( void ) /* 從CH375讀數(shù)據(jù) */ { UINT8 mData; CH375_DATA_DIR_IN( ); /* 設(shè)置并口方向為輸入 */ CH375_A0 = 0; CH375_CS = 0; CH375_RD = 0; /* 輸出有效寫控制信號, 讀CH375芯片的數(shù)據(jù)端口 */ _nop_(); _nop_(); mData = CH375_DATA_DAT_IN( ); /* 從CH375的并口輸入數(shù)據(jù) */ CH375_RD = 1; /* 輸出無效的控制信號, 完成操作CH375芯片 */ CH375_CS = 1; return( mData ); }


如果對速度要求比較高的話推薦使用總線方式,另外讀寫方式采用扇區(qū)方式,對速度都有提高. RAM可以選取16個扇區(qū)的倍數(shù),比如8K,16K,這樣速度會快一點. CH375操作相對簡單.CH374稍微復(fù)雜,庫代碼的占用空間會比375大幾K,但是374的速度快.


我想從U盤讀BMP照片,在從LCD 上顯示出來。用4樓的例子速度可以嗎?


LCD顯示對讀U盤速度有要求么?這個您自己實測一下就知道了


我第一次做,向用C0851F340那樣的單片機,一般應(yīng)該選擇總線方式、還是模擬I/O方試,容易成功。還有讀寫的速度會怎么樣。還有像C8051F340這樣的單片機不擴展RAM用那個例子能達到處理文件最快的目的。謝謝


總線當(dāng)然要比模擬快很多,用51下面的庫,速度都差不多,文件系統(tǒng)處理都是一樣的 ,


我有個問題想問一下,具體的總線模式應(yīng)該如何配置硬件呢? 我的P3口是數(shù)據(jù)口 P3.0~P3.7為D0~D7 P1.1 AO P1.3 CS P1.5 RD P1.7 WR P2.0 INT 請幫忙詳細講一下好么


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

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