貼上讀寫(xiě)函數(shù) /* 單片機(jī)的引腳 CH374芯片的引腳 PINE.4 INT# PORTE.2 A0 PORTE.3 CS# PORTE.5 WR# PORTE.6 RD# PORTF(8位端口) D7-D0 */
void CH374_PORT_INIT( ) /* 由于使用通用I/O模擬并口讀寫(xiě)時(shí)序,所以進(jìn)行初始化 */ { DDRF = 0x00; /* 設(shè)置8位并口為輸入 */ PORTE = 0x68; /* 設(shè)置CS,WR,RD默認(rèn)為高電平 */ DDRE = 0xEF; /* 設(shè)置CS,WR,RD,A0為輸出,設(shè)置INT#為輸入 */ } void Write374Index( UINT8 mCmd ) /* 向索引端口寫(xiě)入索引地址 */ { PORTE |= 0x04; /* 輸出A0=1 */ PORTF = mCmd; /* 向CH374的并口輸出數(shù)據(jù) */ DDRF = 0xFF; /* 并口D0-D7輸出 */ PORTE &= 0xD4; /* 輸出有效寫(xiě)控制信號(hào), 寫(xiě)CH374芯片的命令端口, A0=1; CS=0; WR=0; RD=1; */ DDRF = 0xFF; /* 該操作無(wú)意義,僅作延時(shí),CH374要求讀寫(xiě)脈沖寬度大于100nS */ PORTE |= 0xFF; /* 輸出無(wú)效的控制信號(hào), 完成操作CH374芯片, A0=1; CS=1; WR=1; RD=1; */ DDRF = 0x00; /* 禁止數(shù)據(jù)輸出 */ PORTE &= 0xF3; /* 輸出A0=0; 可選操作 */ } void Write374Data( UINT8 mData ) /* 向數(shù)據(jù)端口寫(xiě)入數(shù)據(jù),索引地址自動(dòng)加1 */ { PORTF = mData; /* 向CH374的并口輸出數(shù)據(jù) */ DDRF = 0xFF; /* 并口D0-D7輸出 */ PORTE &= 0x40; /* 輸出有效寫(xiě)控制信號(hào), 寫(xiě)CH374芯片的數(shù)據(jù)端口, A0=0; CS=0; WR=0; RD=1; */ DDRF = 0xFF; /* 該操作無(wú)意義,僅作延時(shí),CH374要求讀寫(xiě)脈沖寬度大于100nS */ PORTE |= 0xFF; /* 輸出無(wú)效的控制信號(hào), 完成操作CH374芯片, A0=0; CS=1; WR=1; RD=1; */ DDRF = 0x00; /* 禁止數(shù)據(jù)輸出 */ } UINT8 Read374Data( void ) /* 從數(shù)據(jù)端口讀出數(shù)據(jù),索引地址自動(dòng)加1 */ { UINT8 mData;
DDRF = 0x00; /* 數(shù)據(jù)輸入 */ PORTE &= 0x20; /* 輸出有效讀控制信號(hào), 讀CH374芯片的數(shù)據(jù)端口, A0=0; CS=0; WR=1; RD=0; */ DDRF = 0x00; /* 該操作無(wú)意義,僅作延時(shí),CH374要求讀寫(xiě)脈沖寬度大于100nS */ mData = PINF; /* 從CH374的并口PA輸入數(shù)據(jù) */ PORTE |= 0x6B; /* 輸出無(wú)效的控制信號(hào), 完成操作CH374芯片, A0=0; CS=1; WR=1; RD=1; */ return( mData ); } 讀寫(xiě)寄存器,寫(xiě)索引和讀數(shù)據(jù)都測(cè)試過(guò),正常,但是寫(xiě)數(shù)據(jù)函數(shù)不對(duì),寫(xiě)數(shù)據(jù)到40H~45H再讀出來(lái)一只都是0xFD,求救.