測(cè)試不正確,誰(shuí)幫我看看初始化程序啊,謝了

下面是我的初始化程序,就一個(gè)簡(jiǎn)單的硬件測(cè)試指令,不管輸入什么測(cè)試數(shù)據(jù),返回值一直是0xFF,硬件部分的話(huà),晶振工作也正常,不知道還會(huì)是哪里的原因啊 ??? 跟CH375命令端口的I/O地址 相關(guān)嗎,我在CH375HFT.C這個(gè)例程中也是只看到定義,而沒(méi)看到它的應(yīng)用,這個(gè)地方我一直不是很明白,請(qǐng)各位大蝦指教啊 感激不盡

/*****************************************************************************/ #include #include #include #include "CH375HFF.H"

#define CH375_CMD_PORT_ADDR 0xBDF1 /* CH375命令端口的I/O地址 */ #define CH375_DAT_PORT_ADDR 0xBCF0 /* CH375數(shù)據(jù)端口的I/O地址 */

/* 由于MSP430不開(kāi)放系統(tǒng)總線(xiàn),所以用I/O引腳模擬產(chǎn)生CH375的并口讀寫(xiě)時(shí)序 */ /* 本例中的硬件連接方式如下(實(shí)際應(yīng)用電路可以參照修改下述3個(gè)并口讀寫(xiě)子程序) */ /* MSP430單片機(jī)的引腳 CH375芯片的引腳 P1.4 INT# P1.7 A0 P1.6 WR# P1.5 RD# P1.3 CS P4(8位端口) D7-D0 */

void mDelaymS( UINT16 ms ) { UINT16 i; while ( ms -- ) for ( i = 2000; i != 0; i -- ); }

void CH375_PORT_INIT( ) /* 由于使用通用I/O模塊并口讀寫(xiě)時(shí)序,所以進(jìn)行初始化 */ { P1DIR = 0xE8; /* 設(shè)置INT#為輸入,設(shè)置CS,WR,RD,A0為輸出 */ P1OUT =0x68; /* 設(shè)置A0為低電平,CS,WR,RD默認(rèn)為高電平 */ P4DIR = 0; /* 設(shè)置8位并口輸入 */ }

void xWriteCH375Cmd( UINT8 mCmd ) /* 外部定義的被CH375程序庫(kù)調(diào)用的子程序,向CH375寫(xiě)命令 */ { _NOP( ); _NOP( ); _NOP( ); /* 至少延時(shí)2uS,實(shí)際由于模擬I/O較慢而只需少量延時(shí) */ P4OUT = mCmd; /* 向CH375的并口輸出數(shù)據(jù) */ P1OUT |= BIT7; /* 指向CH375芯片的命令端口, A0(P1.7)=1; */ P1OUT &=~BIT3; /*CS=0*/ P4DIR = 0xFF; /* 寫(xiě)操作所以數(shù)據(jù)輸出 */ P1OUT &= ~BIT6; P1OUT |=BIT5; /* 輸出有效寫(xiě)控制信號(hào), 寫(xiě)CH375芯片的命令端口, A0(P1.7)=1; WR=(P1.6)=0; RD(P1.5)=1; */ _NOP( ); /* 該操作無(wú)意義,僅作延時(shí),CH375要求讀寫(xiě)脈沖寬度為100nS */ P1OUT &=~BIT7; P1OUT |=BIT6; P1OUT |=BIT5;P1OUT |=BIT3; /* 輸出無(wú)效的控制信號(hào), 完成操作CH375芯片, A0(P1.3)=0; CS(P1.2)=1; WR=(P1.1)=1; RD(P1.0)=1; */ //P1OUT &= 0x6F; /* 輸出A0(P1.3)=0; 可選操作 */ P4DIR = 0; /* 禁止數(shù)據(jù)輸出 */ _NOP( ); _NOP( ); _NOP( ); _NOP( ); _NOP( ); /* 至少延時(shí)2uS,實(shí)際由于模擬I/O較慢而只需少量延時(shí) */ }

void xWriteCH375Data( UINT8 mData ) /* 外部定義的被CH375程序庫(kù)調(diào)用的子程序,向CH375寫(xiě)數(shù)據(jù) */ { P4OUT = mData; /* 向CH375的并口輸出數(shù)據(jù) */ P4DIR = 0xFF; /* 寫(xiě)操作所以數(shù)據(jù)輸出 */ P1OUT &=~BIT7; P1OUT &=~BIT6; P1OUT |=BIT5;P1OUT &=~BIT3; /* 輸出有效寫(xiě)控制信號(hào), 寫(xiě)CH375芯片的數(shù)據(jù)端口, A0(P1.3)=0; CS(P1.2)=0; WR=(P1.1)=0; RD(P1.0)=1; */ _NOP( ); /* 該操作無(wú)意義,僅作延時(shí),CH375要求讀寫(xiě)脈沖寬度為100nS */ P1OUT &=~BIT7; P1OUT |=BIT6; P1OUT |=BIT5;P1OUT |=BIT3; /* 輸出無(wú)效的控制信號(hào), 完成操作CH375芯片, A0(P1.3)=0; CS(P1.2)=1; WR=(P1.1)=1; RD(P1.0)=1; */ P4DIR = 0; /* 禁止數(shù)據(jù)輸出 */ _NOP( ); /* 至少延時(shí)1uS,實(shí)際由于模擬I/O較慢而不一定有必要 */ }

UINT8 xReadCH375Data( void ) /* 外部定義的被CH375程序庫(kù)調(diào)用的子程序,從CH375讀數(shù)據(jù) */ { UINT8 mData; _NOP( ); /* 至少延時(shí)1uS,實(shí)際由于模擬I/O較慢而不一定有必要 */ P4DIR = 0; /* 讀操作所以數(shù)據(jù)輸入 */ P1OUT &=~BIT7; P1OUT |=BIT6; P1OUT &=~BIT5;P1OUT &=~BIT3; /* 輸出有效讀控制信號(hào), 讀CH375芯片的數(shù)據(jù)端口, A0(P1.7)=0; CS(P1.3)=0; WR=(P1.6)=1; RD(P1.5)=0; */ _NOP( ); /* 該操作無(wú)意義,僅作延時(shí),CH375要求讀寫(xiě)脈沖寬度為100nS */ mData = P4IN; /* 從CH375的并口輸入數(shù)據(jù) */ P1OUT &=~BIT7; P1OUT |=BIT6; P1OUT |=BIT5;P1OUT |=BIT3; /* 輸出無(wú)效的控制信號(hào), 完成操作CH375芯片, A0(P1.7)=0; CS(P1.3)=1; WR=(P1.6)=1; RD(P1.5)=1; */ return( mData ); }

void CH375_INIT() { xWriteCH375Cmd(CMD_CHECK_EXIST);/* 測(cè)試CH375是否正常工作 */ xWriteCH375Data(0x11); xReadCH375Data(); }

void main( ) {

mDelaymS(2); CH375_PORT_INIT(); CH375_INIT(); while (1); /* 以下指令開(kāi)始工作循環(huán),等待PC機(jī)命令進(jìn)行操作 */ }

首先上電后要有50MS的延時(shí)而你只做了2MS,有可能375上電復(fù)位未完成,你測(cè)一下,25,26腳,正常情況下25.26應(yīng)該為低電平和高電平.對(duì)于這個(gè)問(wèn)題昨天帖子里已經(jīng)給你提出,希望你能更正! 你用的是模擬并口的,所以和375的數(shù)據(jù)命令地址無(wú)關(guān)的 你的程序有點(diǎn)問(wèn)題,下面一寫(xiě)命令函數(shù)分析為例, void xWriteCH375Cmd( UINT8 mCmd ) /* 外部定義的被CH375程序庫(kù)調(diào)用的子程序,向CH375寫(xiě)命令 */ { _NOP( ); _NOP( ); _NOP( ); /* 至少延時(shí)2uS,實(shí)際由于模擬I/O較慢而只需少量延時(shí) */ P4OUT = mCmd; /* 向CH375的并口輸出數(shù)據(jù) */ P1OUT |= BIT7; /* 指向CH375芯片的命令端口, A0(P1.7)=1; */ P1OUT &=~BIT3; /*CS=0*/ P4DIR = 0xFF; /* 寫(xiě)操作所以數(shù)據(jù)輸出 */ P1OUT &= ~BIT6; P1OUT |=BIT5; /* 輸出有效寫(xiě)控制信號(hào), 寫(xiě)CH375芯片的命令端口, A0(P1.7)=1; WR=(P1.6)=0; RD(P1.5)=1; */ _NOP( ); /* 該操作無(wú)意義,僅作延時(shí),CH375要求讀寫(xiě)脈沖寬度為100nS */ P1OUT |=BIT6; P1OUT |=BIT5;P1OUT |=BIT3;P1OUT &=~BIT7; /* 輸出無(wú)效的控制信號(hào), 完成操作CH375芯片, A0(P1.3)=0; CS(P1.2)=1; WR=(P1.1)=1; RD(P1.0)=1; */ //P1OUT &= 0x6F; /* 輸出A0(P1.3)=0; 可選操作 */ P4DIR = 0; /* 禁止數(shù)據(jù)輸出 */ _NOP( ); _NOP( ); _NOP( ); _NOP( ); _NOP( ); /* 至少延時(shí)2uS,實(shí)際由于模擬I/O較慢而只需少量延時(shí) */ } 程序中P1OUT &=~BIT7;應(yīng)該去掉或者放在后面,否則在寫(xiě)命令的時(shí)候就切換到寫(xiě)數(shù)據(jù)的端口了,而你的WR的上升沿在P1OUT &=~BIT7后面才產(chǎn)生的,這就會(huì)導(dǎo)致你寫(xiě)命令不成功. 因?yàn)榭床坏侥愕挠布B接的定義,所以簡(jiǎn)單分析一下,希望對(duì)你有幫助!其余函數(shù)自己檢查一下!


我用的是MSP430單片機(jī)的低頻震蕩時(shí)鐘,只有32.768KHz,所以延時(shí)50ms還是有的,另外,上電后我也檢查了25,26腳,正常,晶振也正常,就是結(jié)果不對(duì),我在仿真器里單步執(zhí)行看了下,在讀數(shù)據(jù)函數(shù)xReadCH375Data()里,只要執(zhí)行指令:P4DIR = 0; /* 讀操作所以數(shù)據(jù)輸入 */ ,讀出的結(jié)果P4IN就為0xFF了,把P4DIR = 0指令去掉后,P4IN又和輸入的測(cè)試數(shù)據(jù)一樣了,就是不得正確結(jié)果 另外,我曾忽略掉硬件測(cè)試指令,直接寫(xiě)CH375工作模式2,計(jì)算機(jī)提示找到新硬件,我剛興奮了下,拔掉電源,再上電復(fù)位后,計(jì)算機(jī)又沒(méi)有反應(yīng)了,是什么原因啊 ,CH375我給的工作的電壓是3.3V,會(huì)不會(huì)是產(chǎn)生的UD+上的電壓相應(yīng)的比較低,計(jì)算機(jī)識(shí)別困難呢 謝謝 急啊 好幾天了 連個(gè)測(cè)試都沒(méi)搞定。


如果計(jì)算機(jī)確實(shí)提示找到新硬件,那么說(shuō)設(shè)置模式是成功的,寫(xiě)命令,寫(xiě)數(shù)據(jù)的時(shí)序不會(huì)有太大問(wèn)題,測(cè)試命令失敗,有可能是讀數(shù)據(jù)時(shí)序有問(wèn)題,把讀數(shù)據(jù)時(shí)序修改一下試試: UINT8 xReadCH375Data( void ) /* 外部定義的被CH375程序庫(kù)調(diào)用的子程序,從CH375讀數(shù)據(jù) */ { UINT8 mData; _NOP( ); /* 至少延時(shí)1uS,實(shí)際由于模擬I/O較慢而不一定有必要 */ P4DIR = 0; /* 讀操作所以數(shù)據(jù)輸入 */ P1OUT |= BIT6; P1OUT &= ~BIT7; /*A0 = 0*/ P1OUT &= ~BIT3;/* 輸出有效讀控制信號(hào), 讀CH375芯片的數(shù)據(jù)端口, A0(P1.7)=0; CS(P1.3)=0; WR=(P1.6)=1; RD(P1.5)=0; */ P1OUT &= ~BIT5; _NOP( ); /* 該操作無(wú)意義,僅作延時(shí),CH375要求讀寫(xiě)脈沖寬度為100nS */ mData = P4IN; /* 從CH375的并口輸入數(shù)據(jù) */ P1OUT |= BIT5; P1OUT |= BIT3; /* 輸出無(wú)效的控制信號(hào), 完成操作CH375芯片, A0(P1.7)=0; CS(P1.3)=1; WR=(P1.6)=1; RD(P1.5)=1; */ return( mData ); }


驅(qū)動(dòng)安裝成功了,謝謝樓上的,確實(shí)是程序的問(wèn)題


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

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