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