用 printer port 產生 pulse 的問題 |
答題得分者是:AJCooer
|
Just4U
初階會員 發表:38 回覆:56 積分:28 註冊:2002-03-27 發送簡訊給我 |
我用 printer port 做 I/O 一直有個問題, 以下程式為按下 button 在 printer port pin DR0 產生 5 個 pulse, 正常狀況下 pulse width = 2 us, 但有時某一個 pulse width = 16 us(差很多), 我也在站上 download 一個 NTPORT v2.3 來替換原來的 I/O, 但情形一樣, 請問有人知道如何解決這種狀況嗎? 謝謝!!! 我的 PC 資料 : WinXP, AMD700MHz, BCB5 void __fastcall TForm1::Button1Click(TObject *Sender)
{
for(int i = 0; i < 5; i )
{
Outport(0x378, 0x01);
Outport(0x378, 0x00);
}
}
|
AJCooer
初階會員 發表:48 回覆:52 積分:25 註冊:2004-02-12 發送簡訊給我 |
你好
你可以抓系統時間來送出pulse.
底下為範例
void dly(DWORD MSecs,int id)
{
LARGE_INTEGER rStart,
rEnd,
rFreq;
char ss[82];
DWORD dw1,dw2;
double db; //{ 取得頻率 }
QueryPerformanceFrequency(&rFreq);
rEnd.QuadPart =( MSecs * rFreq.QuadPart * 1E-3 );
if(id == 1)
rEnd.QuadPart =( MSecs * rFreq.QuadPart * 1E-6 ); //{ 進入迴圈前取得開始計數值 }
QueryPerformanceCounter(&rStart);
rEnd.QuadPart = rStart.QuadPart; //{ 主迴圈 }
//starttime();
while ( rStart.QuadPart < rEnd.QuadPart )
{
QueryPerformanceCounter(&rStart); //{ 取得目前計數值 }
}
} id = 1時計時單位為us
id = 0時計時單位為ms
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |