許多裝置需要通過io通訊互動資料,怎樣才做到速度最快,通訊可靠,所用資源又少呢? 下面介紹乙個我編寫的通訊協議:
它沒有1線,2線那樣節省io資源,但是它的通訊速度絕對最快,無需延時,且不用中斷,還可以對等傳輸.實際情況是在51平台上實現了50us傳輸乙個位元組,折合160kbps左右,晶振 22m。
特點如下:
1)使用3根普通io通訊
2)不使用中斷,雙方都可以主動發起資料通訊,也都可以被動接收資料,即可以對等傳輸.有傳送和接收的檢查等待機制,傳送方知道對方什麼時候收了資料,接收方知道傳送方什麼時候發了資料.無需進行資料延時,最大可能地加快了通訊速度.
3)cpu閒的時候通訊速率可以最快.忙的時候又可以無限等待.保證絕對同步,不會出錯.雙方cpu工作速度可以任意,即使是51和p4通訊,也能保證正確無誤.
ask w1 w2 w3 w4 w5 w6 w7 w8
mclk ┐┌──┐ ┌──┐ ┌──┐ ┌──┐ ┌───
└┘ └──┘ └──┘ └──┘ └──┘
sdt ___┌─┐┌─┐┌─┐┌─┐┌─┐┌─┐┌─┐┌─┐________
└─┘└─┘└─┘└─┘└─┘└─┘└─┘└─┘
sclk ┐ ┌──┐ ┌──┐ ┌──┐ ┌──┐ ┌─
└─┘ └──┘ └──┘ └──┘ └──┘
res r1 r2 r3 r4 r5 r6 r7 r8
1.主機發起通訊申請到從機
主機檢測mclk是否為0,為0的話是對方在申請通訊,退出函式.
主機檢測到mclk=1,表示通訊空閒.
主機將mclk=0,表示申請通訊. 之後檢測sclk是否為0(是否響應通訊)
2.從機響應通訊,從機在閒時檢測mclk是否為0,發現為0則主機向它發起了通訊申請.
從機將sclk=0,表示接受申請,之後檢測mclk是否變為1,如果是1則主機已經發出了第乙個bit的資料.
3.主機發現sclk=0,知道從機已經開始準備接受資料.
4.主機傳送第乙個bit到sda.
5.主機將mclk=1,表示已經傳送第乙個bit到sda.
6.從機發現mclk=1,知道主機已經發出第乙個資料
7.從機收第乙個bit的資料.
8.從機將sclk=1,表示已經收了第乙個bit.之後等待mclk是否變0,如果變0,則主機已經發出了第二個bit
9.主機發現sclk=1,知道從機已經開始準備接受第二個資料.
10.主機傳送第二個bit到sda.
11.主機將mclk=0,表示已經傳送第二個bit到sda.
12.從機發現mclk=0,知道主機已經發出第二個資料
13.從機收第二個bit的資料.
14.從機將sclk=0,表示已經收了第二個bit.之後等待mclk是否變1,如果變1,則主機已經發出了第三個bit
15.再重複3-14,3遍,傳完8bit資料.
16.主機發現sclk=0,知道從機已經收完8位資料
17.主機將mclk=1,準備下一輪通訊
18.從機發現mclk=1,知道主機已經收起mclk
19.從機將sclk=1,準備下一輪通訊
附源**:
sbit mclk=p3^5;
sbit sclk=p3^6;
sbit sda=p3^7;
uchar bdata data;
sbit bit0=data^0;
sbit bit7=data^7;
// 傳送乙個資料
putbytespi(uchar ch)
while(sclk); //檢測從機收完
mclk=1;
while(!sclk);//等待從機準備好
sda=1;
}//接收乙個資料
//呼叫之前最好檢測mclk是否為0(對方是否申請資料通訊)再進入,否則裡面是死等此訊號!
uchar getbytespi()
while(!mclk); //檢測主機發完
sclk=1;
return(data);
}
ln火線零線 ln線哪個是火線零線
我們在接線的時候,首先需要區分零線和火線以及地線,而不同的電線會與不同的介面相連線。在連線插座的時候,上面會有不同的接線柱子,分別有不同的字母表示,比如有l還有n,那麼l和n哪個是火線?哪個又是零線?一 l n線哪個是火線 可以通過兩個不同的字母來區分,l它代表的是live,也就是說是火線的意思。而...
零線火線 powerline
時間限制 1 sec 記憶體限制 128 mb 題目描述 左手抓零線,右手抓火線,卒不卒?某物理老師激情講課 花生 一直很喜歡玩零線和火線。然而大家都知道,玩電線是十分危險的,若同時接觸零線和火線,電流將直接通過心臟,非常危險。所以 花生 一直都帶著橡膠手套玩電線。但是帶著橡膠手套玩起來很沒有手感啊...
火線零線地線
1.三相 三根正弦交流電相位相差120度。通常稱這樣的一根導線為相線 火線 通常電力傳輸是以3相四線的方式 三根相線一根零線。三相電的跟頭稱為相線,三相電的三根尾連線在一起稱為中性線,也叫 零線 因為三相平衡時刻中性線中沒有電流通過了,或者它直接或間接連線到大地了,跟大地電壓也接近0。地線是把裝置或...