Linux PC和51系列單片機串行通信的設計
初始化后,就可以進行數據的收發了,接受數據之前必須保證接收數據就緒,這可以通過0x2fd的D0來判斷,發送數據之前必須保證發送寄存器為空,這可以通過0x2fd的D5來判斷,代碼如下:
3 結語
實驗表明,此系統采用的2種方法都完全實現了LinuxPC機與單片機之間點對點的通信,方法簡單可靠,基本上在需要用到PC機與單片機串行通信的場合均可采用此種方法。隨著近年來Linux在國內應用范圍的日益壯大,在工業控制、數據采集等領域也必將越來越多的采用Linux,本文可以算作是一個有益的嘗試。當然在實際應用中還需要考慮一些問題,比如進行出錯處理的問題,可以在一個要發送的字符串后再發送一個校驗和,當收到返回的校驗和與發送的校驗和不一致時再進行重發,再比如所采用的RS232C傳輸距離很短,并且抗干擾能力很差,這時需要將總線轉換成差分傳輸的RS485/RS422。另外,稍加改進,就可實現PC機與多片51單片機的串行通信,這時由于共用一條總線,必須給每個單片機分配一個地址,然后由PC機對總線進行仲裁,只有獲得總線使用權的單片機才能與上位機進行通信,這里不再贅述。
總之,本文只是為Linux PC和單片機串行通信提供了一個典型的范例,要應用到實際的項目中去,還需要根據實際的情況具體考慮,靈活應用,最終才能形成一個可靠的基于Linux平臺的系統。
參考文獻
[1] PhiCornes.Linux從入門到精通[M].童壽彬譯.北京:電子工業出版社,1998.
[2]Peter Baumann H . Linux Serial - programming - HOWTO中文版[M].曾元佑譯.
[3]萬福君,潘松峰.單片微機原理系統設計與應用[M].合肥:中國科學技術大學出版社,2001.
[4][美]安格斯生.串行端口大全[M].精英科技譯.北京:中國電力出版社,2001.
評論