我在寫中斷服務(wù)程序的時候是按照下面步驟寫的,請幫我看看對不對,謝謝! 1)在D3上接上跳線,將59引腳設(shè)定為中斷請求輸入引腳! 2)在芯片狀態(tài)寄存器中開啟中斷(這步是否可以不要?)。 3)在程序中直接使用CH365SetIntRoutine函數(shù)設(shè)定中斷服務(wù)程序。這樣做對嗎? 另外我在讀取存儲器時每次讀出來的值都是00,為什么?感謝高手們的解答!
您可以參考CH365EVT.zip\PUB\WIN_SW\里的程序
您用的是365的評估板吧! 你把上面的那個16v8去掉再試試讀取存儲器. 在芯片狀態(tài)寄存器中開啟中斷這步不要。
謝謝回答!我還想請教以下,用中斷的時候是否要接上J1的跳線?
yes
呵呵,十分感謝!能幫我看看下面這段中斷程序嗎? void TestInt() {...}; CH365SetIntLine(mCH365_INT_LINE_AUTO); if ( CH365GetIntLine(Device_Number, &mIntLine ) == FALSE ) printf( " ERROR " ); else { CH365ReadConfig(&mIoBase->mCh365IoCtrl,&mByte); CH365WriteConfig(&mIoBase->mCh365IoCtrl,mByte|mBitIntAction); CH365SetIntRoutine(TestInt); } 這樣寫對嗎?另外我還想請教一下,在評估板附帶的測試程序DEMO365中是使用中斷命令來實現(xiàn)中斷的,那樣是否就可以不用CH365WriteConfig(&mIoBase->mCh365IoCtrl,mByte|mBitIntAction)這步了? 謝謝,幫我解答一下可以嗎?
應(yīng)該這樣寫 else { CH365ReadIoByte(&mIoBase->mCh365IoCtrl,&mByte); CH365WriteIoByte(&mIoBase->mCh365IoCtrl,mByte|mBitIntAction); CH365SetIntRoutine(TestInt); } 另外一般這一步是不需要用的.只有在調(diào)試時用比較方便.硬件給它低電平中斷的時候,芯片內(nèi)部激活位就會自動置高.