防盜用太陽能LED照明系統的開發
而從機只能向主機發送數據,而不能在從機之間交換數據。多機通信的實現需要主,從機對相關的控制位SM2,TB8進行正確的設置。
圖2 單片機多機通信結構圖
為更好的實現多機通信,首先對各從機進行編號,編號作為該機地址,如本系統的:0x00,0x01,0x02等。當主機需要發送指令給特定的從機時,要先發送目標從機的地址信號,這個地址用于從機判斷是否準備接收指令。地址數據和指令可以用第九位來區別。所以主機發送地址幀時,地址/數據標志位TB8應該設置為1,以表示是地址幀。如本系統主機中:SCON=0xd8;//串行口工作在方式3,TB8設置為1,允許接收;此時從機初始化時均設置SM2為1,使其只處于接收地址幀的狀態。如:SCON=0xf0;//串行口工作在方式3,TB8設置為1,允許接收;當從機接收到主機發來的數據后,若第九位為1,進入串口中斷。中斷后將主機發來的地址與本機地址進行比較,如果相同,那么該從機清除其SM2位標志,準備接收即將從主機發來的指令。如果不同,該從機SM2位依然為1,由于主機在發送指令時,TB8為0,不會進入串口中斷,直到新的地址到來。主機在通信過程中以調用子程序的形式發送數據,發送完后執行其他工作。從機在串口中斷程序中接收數據。這樣實現了主機向特定的從機發送數據,也可接收該從機的數據,實現數據交換。
評論