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