采用單片機的多機并行通訊系統(tǒng)方案設計
5.2 通訊協(xié)議的執(zhí)行過程
下面以檢測方式為例說明通訊協(xié)議的執(zhí)行過程。
5.2.1 主機向從機寫數(shù)過程:(主機寫, 從機讀)
主機向74HC646寫數(shù)據(jù),然后通知從機有數(shù)據(jù)來,從機從74HC646中讀取數(shù)據(jù)。
① 主機讀取狀態(tài)位,檢測TFNF*位是否為零。
②若TFNF*=1,主機暫時等待;若TFNF*=0,主機向74HC646寫數(shù)據(jù),使TFNF*=1,同時使TFNE*=0。
③ 從機讀取狀態(tài)位,檢測TFNE*位是否為零。若TFNE*=1,從機暫時等待;若TFNE*=0,從機從74HC646讀數(shù)據(jù),使TFNE*=1,同時使TFNF*=0。
④ 主機再次檢測狀態(tài)位TFNF*是否為零,若為“0”,說明從機已將數(shù)據(jù)從74HC646中取走,主機可發(fā)送下一數(shù)據(jù)。
5.2.2 主機讀從機過程:(從機寫, 主機讀)
從機向74HC646寫數(shù)據(jù),然后通知主機有數(shù)據(jù)來,主機收到信號后,將數(shù)據(jù)從74HC646中取走。
① 從機讀取狀態(tài)位,檢測RFNF*位是否為零。
②若RFNF*=1,從機暫時等待;若RFNF*=0,從機向74HC646寫數(shù)據(jù),使RFNF*=1,同時使RFNE*=0。
③ 主機讀取狀態(tài)位,檢測RFNE*位是否為零。若RFNE*=1,主機暫時等待;若RFNE*=0,主機從74HC646讀數(shù)據(jù),使RFNE*=1,同時使RFNF*=0。
④ 從機再次檢測狀態(tài)位RFNF*是否為零,若為“0”,說明從機已將數(shù)據(jù)從74HC646中取走,主機可發(fā)送下一數(shù)據(jù)。
6 流程圖(檢測方式)
采用檢測方式的程序流程如圖3所示。
本文引用地址:http://butianyuan.cn/article/171986.htm
圖3 采用檢測方式的程序流程圖
若使用中斷方式, 只需對執(zhí)行過程和流程圖稍加修改即可。
評論