全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1307
推到 Plurk!
推到 Facebook!

如何編寫一個準位判斷的程式??

缺席
Tommy0325
一般會員


發表:5
回覆:4
積分:1
註冊:2007-05-04

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-05-19 01:23:19 IP:140.126.xxx.xxx 訂閱
我在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準位給電路---第三筆
}

由於我還是語言程式的新手~~所以來此貴寶地請求高手指導~~可否麻煩大大們~~指導一下~~我該如何寫一個正確的判斷式~~來確保我要傳送的準位有正確的發送出去呢?

麻煩了~~衷心感謝~~謝謝^--^
系統時間:2024-05-19 23:01:44
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!