請問:
CH372FRM.C 文件中好像沒有 諸如 =P0^0 這樣的語句?
自定義的連線在程序中無法體現(xiàn)。
如何解決? 謝謝!
請問:
CH372FRM.C 文件中好像沒有 諸如 =P0^0 這樣的語句?
自定義的連線在程序中無法體現(xiàn)。
如何解決? 謝謝!
(1)CH372FRM.C中,是通過總線方式操作CH372,程序中定義了2個地址:CH375_CMD_PORT和CH375_DAT_PORT,當(dāng)然不需要定義CS、WR、RD等信號線 (2)您想自定義連線的話,也很簡單,以CS為例:sbit CH372_CS = P0^0;
請問,非總線狀態(tài)下,sbit CH372_CS = P0^0; 定以后,是不是要改動程序的很多部分,比如CH372FRM.C里 的函數(shù)?
需要修改的是接口函數(shù)。具體的做法你可以去參考CH375LIB\MCS51\FILELIBC\EXAM7
謝謝,請問有現(xiàn)成的可以自定義連線的CH372配套的框架嗎?
沒有,模擬I/O方式下,CH372的接口函數(shù)與CH375完全一樣,可以直接參考3樓提供的例程
參考程序: void CH375_WR_CMD_PORT( unsigned char cmd ) { /* 向CH375的命令端口寫入命令,周期不小于4uS,如果單片機較快則延時 */ delay2us(); 強制片選 CH375_D0_D7 = cmd; CH375_A0 = 1; 選擇CH375的命令口 // CH375_D0_D7_DIR = output; 對于標(biāo)準(zhǔn)雙向I/O,請在此設(shè)置為輸出方向 CH375_RD = 1; 如果I/O默認電平是高電平,那么這是可選操作 CH375_CS = 0; CH375_WR = 0; // CH375_CS = 0; 對于高速單片機,該指令用于延時,以便向CH375_WR產(chǎn)生寬度至少為80nS的低電平脈沖 CH375_WR = 1; CH375_CS = 1; CH375_A0 = 0; // CH375_D0_D7_DIR = input; 對于標(biāo)準(zhǔn)雙向I/O,請在此設(shè)置為輸入方向 CH375_D0_D7 = 0xFF; 對于準(zhǔn)雙向I/O,請在此設(shè)置輸出全高電平 delay2us(); }
void CH375_WR_DAT_PORT( unsigned char dat ) { /* 向CH375的數(shù)據(jù)端口寫入數(shù)據(jù),周期不小于1.5uS,如果單片機較快則延時 */
CH375_D0_D7 = dat; // CH375_D0_D7_DIR = output; 對于標(biāo)準(zhǔn)雙向I/O,請在此設(shè)置為輸出方向 CH375_CS = 0; CH375_WR = 0; // CH375_CS = 0; 對于高速單片機,該指令用于延時,以便向CH375_WR產(chǎn)生寬度至少為80nS的低電平脈沖 CH375_WR = 1; CH375_CS = 1; // CH375_D0_D7_DIR = input; 對于標(biāo)準(zhǔn)雙向I/O,請在此設(shè)置為輸入方向 CH375_D0_D7 = 0xFF; 對于準(zhǔn)雙向I/O,請在此設(shè)置輸出全高電平 /******************** */ // delay1us(); /* 因為MCS51單片機較慢所以實際上無需延時 */ }
unsigned char CH375_RD_DAT_PORT( void ) { /* 從CH375的數(shù)據(jù)端口讀出數(shù)據(jù),周期不小于1.5uS,如果單片機較快則延時 */ // delay1us(); /* 因為MCS51單片機較慢所以實際上無需延時 */ /* ******************** 注釋中是用普通I/O引腳模擬8位并口的時序*/ // CH375_D0_D7_DIR = input; 對于標(biāo)準(zhǔn)雙向I/O,請在此設(shè)置為輸入方向 CH375_D0_D7 = 0xFF; 對于準(zhǔn)雙向I/O,請在此設(shè)置輸出全高電平,便于輸入 CH375_CS = 0; CH375_RD = 0; // CH375_CS = 0; 對于高速單片機,該指令用于延時,以便向CH375_RD產(chǎn)生寬度至少為80nS的低電平脈沖 unsigned char dat = CH375_D0_D7; CH375_RD = 1; CH375_CS = 1; CH375_D0_D7 = 0xFF; 對于準(zhǔn)雙向I/O,請在此設(shè)置輸出全高電平 return( dat ); /******************** */ }
那么在物理連接CH372時,CS、WR、RD、INT是不是說不用和單片機相連,可以懸空呢。
CS、WR、RD、INT,A0 要和單片機連接,要不怎么操作372啊 可以采用總線方式,也可以采用模擬并口方式.
控制線盡量不要和數(shù)據(jù)線在同一個IO上,比如CS在P0^0上口而PO有做為數(shù)據(jù)線,這樣的話,需要對數(shù)據(jù)進行鎖存要多加一個芯片.如果你使用的是CH372B的話,INT引腳可以不連接,查詢命令端口最高為為1表示有中斷,但其余的務(wù)必連接.