如何編寫一個準位判斷的程式?? |
缺席
|
Tommy0325
一般會員 發表:5 回覆:4 積分:1 註冊:2007-05-04 發送簡訊給我 |
我在Linux下開發ARM控制器的程式,主要有3根PIN腳來控制我自己做的一個電路!!使用C語言來編寫程式!!
第一根是CLOCK腳位,第二根是Din腳位(輸出~~主要由ARM控制器輸出訊號給我做的電路),第三根是Dout腳位(輸入~~主要是由我做的電路回傳數據給ARM這一顆控制器) 我寫的程式大約如下,內容只有提出疑問的地方: #define CLOCK 0x00060000 #define Din 0x00080000; #define Dout 0x00020000; void trans(); int main() { trans(1); //傳送High準位給電路 trans(0); //傳送Low準位給電路 trans(0); //傳送Low準位給電路 } void trans() { CLOCK=0; //CLOCK輸出Low Din=0; //Din輸出Low Delay(1); //延遲5us CLOCK=1; //CLOCK輸出High Delay(1); //延遲5us Din=1; //Din輸出High } 我將ARM的3支GPIO接腳利用杜邦線接到我所做的電路上~~我一開始要發送這些訊號給我做的電路~~但是我做的這一個電路其中的IC內部有暫存器~~當Dout為1(High)的時候~~代表IC暫存器內有值~~當Dout為0(Low)的時候~~代表IC暫存器內無值!!暫存器的值會隨內部IC管理回復到Low~~所以當這一顆IC的暫存器為Low的時候我由ARM控制器發送的數據才會正確的被IC接收到~~進而一步的資料處理!! 所以我要編寫一個程式來判斷當Dout腳位為High的時候: 這些數據暫時停止發送出去~~等到Dout腳位為Low的時候~~程式才會繼續往下做!!!有可能發送第一筆資料出去Dout還是Low值~~當準備發送第二筆資料出去時~~檢測到Dout的腳位忽然為High~~所以暫時停止發送 等到Dout的腳位再次恢復為Low時~~第二筆資料才會正確的繼續發送出去~~一直往下做!! int main() { trans(1); //傳送High準位給電路---第一筆 trans(0); //傳送Low準位給電路---第二筆 trans(0); //傳送Low準位給電路---第三筆 } 由於我還是語言程式的新手~~所以來此貴寶地請求高手指導~~可否麻煩大大們~~指導一下~~我該如何寫一個正確的判斷式~~來確保我要傳送的準位有正確的發送出去呢? 麻煩了~~衷心感謝~~謝謝^--^ |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |