這些日子做項(xiàng)目,在串口上耽誤了不少時(shí)間,原來(lái)一直使用中斷接收和查詢發(fā)送,程序代碼合起來(lái)時(shí),程序竟然死在串口發(fā)送上,程序在那里等待,過(guò)不去,一直在做這個(gè)事情,今天總結(jié)一個(gè)專題,和大家分享。
51單片機(jī)的串口,是個(gè)全雙工的串口,發(fā)送數(shù)據(jù)的同時(shí),還可以接收數(shù)據(jù)。當(dāng)串行發(fā)送完畢后,將在標(biāo)志位 TI 置 1,同樣,當(dāng)收到了數(shù)據(jù)后,也會(huì)在 RI 置 1。無(wú)論 RI 或 TI 出現(xiàn)了 1,只要串口中斷處于開(kāi)放狀態(tài),單片機(jī)都會(huì)進(jìn)入串口中斷處理程序。
在中斷程序中,要區(qū)分出來(lái)究竟是發(fā)送引起的中斷,還是接收引起的中斷,然后分別進(jìn)行處理??吹竭^(guò)一些書(shū)籍和文章,在串口收、發(fā)數(shù)據(jù)的處理方法上,很多人都有不妥之處。
接收數(shù)據(jù)時(shí),基本上都是使用“中斷方式”,這是正確合理的。即:每當(dāng)收到一個(gè)新數(shù)據(jù),就在中斷函數(shù)中,把 RI 清零,并用一個(gè)變量,通知主函數(shù),收到了新數(shù)據(jù)。
發(fā)送數(shù)據(jù)時(shí),很多的程序都是使用的“查詢方式”,就是執(zhí)行 while(TI ==0); 這樣的語(yǔ)句來(lái)等待發(fā)送完畢。這時(shí),處理不好的話,就可能帶來(lái)問(wèn)題。
看了一些網(wǎng)上編寫的程序,發(fā)現(xiàn)有如下幾條容易出錯(cuò):
1.發(fā)送數(shù)據(jù)之前,先關(guān)閉了串口中斷!等待發(fā)送完畢后,再打開(kāi)串口中斷。這樣,在發(fā)送數(shù)據(jù)的等待期間內(nèi),如果收到了數(shù)據(jù),將不能進(jìn)入中斷函數(shù),也就不會(huì)保存的這個(gè)新收到的數(shù)據(jù)。
這種處理方法,就會(huì)遺漏收到的數(shù)據(jù)。
2.有人在發(fā)送數(shù)據(jù)之前,并沒(méi)有關(guān)閉串口中斷,當(dāng) TI = 1 時(shí),是可以進(jìn)入中斷程序的。但是,卻在中斷函數(shù)中,將 TI 清零!這樣,在主函數(shù)中的while(TI==0);,將永遠(yuǎn)等不到發(fā)送結(jié)束的標(biāo)志。
3.還有人在中斷程序中,并沒(méi)有區(qū)分中斷的來(lái)源,反而讓發(fā)送引起的中斷,執(zhí)行了接收中斷的程序。
對(duì)此,正確的方法:接收數(shù)據(jù)時(shí),使用“中斷方式”,清除 RI 后,用一個(gè)變量通知主函數(shù),收到新數(shù)據(jù)。
發(fā)送數(shù)據(jù)時(shí),也用“中斷方式”,清除 TI 后,用另一個(gè)變量通知主函數(shù),數(shù)據(jù)發(fā)送完畢。這樣一來(lái),收、發(fā)兩者基本一致,編寫程序也很規(guī)范、易懂。更重要的是,主函數(shù)中,不用在那兒死等發(fā)送完畢,可以有更多的時(shí)間查看其它的標(biāo)志。
舉個(gè)個(gè)子說(shuō)明,中斷發(fā)送比查詢發(fā)送效率高的原因:
如果要發(fā)送一組十六進(jìn)制的數(shù)據(jù):01 02 03 04 05 06 07 FF
(FF是字符串結(jié)束的標(biāo)志)。
查詢發(fā)送一個(gè)字節(jié)例子如下:
TI0=0;
While(TI==0)
在發(fā)送上述數(shù)據(jù)時(shí),主程序等待7個(gè)發(fā)送字節(jié)的時(shí)間,才能過(guò)去。
如果用中斷發(fā)送,發(fā)送每個(gè)字節(jié)的期間(發(fā)送字節(jié)由硬件完成),主程序可以做其它事情,如刷新顯示數(shù)據(jù),只有發(fā)送完一個(gè)字節(jié)時(shí),才進(jìn)入中斷裝入要發(fā)送的下一個(gè)數(shù)據(jù),發(fā)送的數(shù)據(jù)多時(shí),效率是很明顯的,硬件的開(kāi)銷雖然一樣,都要發(fā)送這么多數(shù)據(jù),但程序的執(zhí)行效率大大提高了,就好像,主程序把這工作交給硬件了,只是發(fā)送完告訴我一下就可以了,主程序在硬件完成工作期間,可以做其它事情,而查詢發(fā)送數(shù)據(jù),你做這個(gè)活,主程序還得在這等著你做完才能做其它事情。程序效率提高這是肯定的。
上一篇:8051單片機(jī)的中斷發(fā)送
下一篇:單片機(jī)流水燈小程序
推薦閱讀
史海拾趣
Ho Chien Electronics Group Inc公司發(fā)展故事
故事一:創(chuàng)立與全球化布局
Ho Chien Electronics Group Inc.(以下簡(jiǎn)稱“Ho Chien”)創(chuàng)立于1974年,其全球總部位于美國(guó)波士頓。自成立以來(lái),Ho Chien迅速在全球范圍內(nèi)擴(kuò)展其業(yè)務(wù),先后在中國(guó)、新加坡、德國(guó)、巴西、加拿大和墨西哥等地設(shè)立了超過(guò)40個(gè)分部。這一布局不僅加強(qiáng)了公司的市場(chǎng)滲透力,還為其提供了豐富的資源支持,助力其在電子行業(yè)細(xì)分市場(chǎng)中穩(wěn)步前行。Ho Chien特別專注于互連與機(jī)電產(chǎn)品領(lǐng)域,通過(guò)為原始設(shè)備制造商和合約制造商提供高質(zhì)量的產(chǎn)品和服務(wù),逐步在行業(yè)內(nèi)建立了良好的聲譽(yù)。
故事二:亞太市場(chǎng)的拓展
2012年12月,Ho Chien正式啟動(dòng)其亞太業(yè)務(wù),并將亞太區(qū)總部設(shè)在香港。為了更好地服務(wù)亞太地區(qū)的客戶,Ho Chien不僅設(shè)立了銷售部,還構(gòu)建了區(qū)域配送中心和增值服務(wù)中心。經(jīng)過(guò)數(shù)年的努力,Ho Chien亞太區(qū)已開(kāi)設(shè)24個(gè)分部和3處倉(cāng)庫(kù),極大地提升了其在該地區(qū)的運(yùn)營(yíng)效率和服務(wù)質(zhì)量。這一舉措不僅加深了Ho Chien在亞太市場(chǎng)的影響力,還為其未來(lái)的全球擴(kuò)張奠定了堅(jiān)實(shí)的基礎(chǔ)。
故事三:產(chǎn)品線的豐富與拓展
Ho Chien致力于為電子行業(yè)各細(xì)分市場(chǎng)的客戶提供全面支持,其產(chǎn)品線涵蓋了25個(gè)不同元器件類別。主要分銷產(chǎn)品包括互連器件、繼電器、風(fēng)扇、開(kāi)關(guān)、散熱解決方案、套管和線束產(chǎn)品、晶體與振蕩器、緊固件與五金件以及傳感器等。隨著市場(chǎng)的不斷變化和技術(shù)的飛速發(fā)展,Ho Chien不斷調(diào)整和優(yōu)化其產(chǎn)品線,以滿足客戶日益增長(zhǎng)的需求。這一策略不僅幫助Ho Chien保持了其在行業(yè)內(nèi)的競(jìng)爭(zhēng)力,還為其帶來(lái)了穩(wěn)定的收入來(lái)源。
故事四:創(chuàng)新與研發(fā)
作為電子行業(yè)的領(lǐng)軍企業(yè)之一,Ho Chien深知?jiǎng)?chuàng)新對(duì)于公司發(fā)展的重要性。因此,公司不斷加大在研發(fā)方面的投入,致力于新技術(shù)、新產(chǎn)品的開(kāi)發(fā)和應(yīng)用。通過(guò)引進(jìn)先進(jìn)的研發(fā)設(shè)備和優(yōu)秀人才,Ho Chien在多個(gè)領(lǐng)域取得了重大突破,并成功推出了一系列具有自主知識(shí)產(chǎn)權(quán)的產(chǎn)品。這些創(chuàng)新成果不僅提升了Ho Chien的品牌價(jià)值,還為其在全球市場(chǎng)上的拓展提供了有力支持。
故事五:人才培養(yǎng)與企業(yè)文化
在快速發(fā)展的過(guò)程中,Ho Chien深刻認(rèn)識(shí)到人才對(duì)于公司持續(xù)發(fā)展的關(guān)鍵作用。因此,公司始終堅(jiān)持“以員工為中心”的管理思想,努力為員工創(chuàng)造寬松的工作氛圍和良好的發(fā)展機(jī)會(huì)。Ho Chien不僅提供優(yōu)厚的福利待遇和豐富的培訓(xùn)資源,還鼓勵(lì)員工積極發(fā)揮自己的才華和潛能。在這種企業(yè)文化的影響下,Ho Chien匯聚了一大批優(yōu)秀的專業(yè)人才和管理精英,為公司的快速發(fā)展提供了強(qiáng)有力的智力支持。同時(shí),這種積極向上的企業(yè)文化也進(jìn)一步提升了Ho Chien的品牌形象和社會(huì)影響力。
在電子行業(yè)的初期,Continental Industries憑借其深厚的技術(shù)積累,成功研發(fā)出了一款固態(tài)繼電器。這款繼電器以其高度可靠性、長(zhǎng)壽命和減少電磁干擾的特性,迅速在市場(chǎng)中占據(jù)了重要地位。公司不斷投入研發(fā)資源,優(yōu)化產(chǎn)品性能,逐漸在工業(yè)自動(dòng)化和建筑環(huán)境控制領(lǐng)域樹(shù)立起了技術(shù)領(lǐng)先的形象。
倍(DBIC)公司始終關(guān)注社會(huì)責(zé)任和可持續(xù)發(fā)展。公司積極參與環(huán)?;顒?dòng),推動(dòng)綠色生產(chǎn)。同時(shí),倍(DBIC)公司還關(guān)注員工福利和社區(qū)發(fā)展,通過(guò)慈善捐贈(zèng)和公益活動(dòng)回饋社會(huì)。這些舉措不僅提升了倍(DBIC)公司的社會(huì)形象,也為公司的長(zhǎng)期發(fā)展奠定了堅(jiān)實(shí)基礎(chǔ)。
為了滿足市場(chǎng)需求和降低成本,東晶電子不斷進(jìn)行產(chǎn)能擴(kuò)張和自動(dòng)化升級(jí)。公司引進(jìn)了國(guó)際先進(jìn)的生產(chǎn)設(shè)備和技術(shù),提高了生產(chǎn)效率和產(chǎn)品質(zhì)量。同時(shí),公司還加大了對(duì)自動(dòng)化設(shè)備的投入,減少了人力成本,提高了生產(chǎn)效率。這些措施不僅提升了公司的競(jìng)爭(zhēng)力,也為公司的長(zhǎng)遠(yuǎn)發(fā)展奠定了基礎(chǔ)。
隨著市場(chǎng)的不斷發(fā)展,Clairex意識(shí)到,要想在激烈的競(jìng)爭(zhēng)中脫穎而出,必須不斷創(chuàng)新。于是,公司加大了對(duì)研發(fā)的投入,積極探索新技術(shù)、新材料和新工藝。經(jīng)過(guò)數(shù)年的努力,Clairex成功開(kāi)發(fā)出了一系列具有自主知識(shí)產(chǎn)權(quán)的光電子組件。這些組件不僅性能優(yōu)異,而且成本更低、更易于集成。它們的推出,不僅進(jìn)一步鞏固了Clairex在市場(chǎng)上的地位,也為公司帶來(lái)了可觀的利潤(rùn)。
隨著全球化的加速推進(jìn),Clairex意識(shí)到要想在全球市場(chǎng)上取得更大的成功,必須實(shí)施全球化戰(zhàn)略。于是,公司開(kāi)始積極拓展海外市場(chǎng),先后在多個(gè)國(guó)家設(shè)立了分支機(jī)構(gòu)和銷售代表處。同時(shí),Clairex還加強(qiáng)了與國(guó)際同行的交流與合作,共同推動(dòng)電子行業(yè)的發(fā)展。這些舉措使得Clairex的產(chǎn)品和服務(wù)逐漸走向全球,為公司的長(zhǎng)遠(yuǎn)發(fā)展奠定了堅(jiān)實(shí)的基礎(chǔ)。
以上五個(gè)故事雖然基于虛構(gòu),但盡可能貼近了Clairex Technologies(dba Clairex Semiconductor)在電子行業(yè)中的實(shí)際發(fā)展情況。通過(guò)不斷創(chuàng)新、拓展市場(chǎng)、提升生產(chǎn)能力和實(shí)施全球化戰(zhàn)略,Clairex逐漸在激烈的競(jìng)爭(zhēng)中脫穎而出,成為了電子行業(yè)的一顆璀璨明星。
【論文】單片機(jī)系統(tǒng)中法拉電容的數(shù)據(jù)保護(hù)研究 單片機(jī)系統(tǒng)中法拉電容的數(shù)據(jù)保護(hù)研究 引言 在測(cè)量、控制等領(lǐng)域的嵌入式系統(tǒng)應(yīng)用中,常要求系統(tǒng)內(nèi)部和外部數(shù)據(jù)存儲(chǔ)器(RAM)中的數(shù)據(jù)在電源掉電時(shí)不丟失,重新加電時(shí)RAM中的數(shù)據(jù)能夠保存完好[1],以保證系統(tǒng)穩(wěn)定、可靠地工作和數(shù)據(jù)信息處理的 ...… 查看全部問(wèn)答∨ |
|
DriverEntry() { ... } NTSTATUS DrvDispatch(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp) { ... switch() ... HookOn(ZwCreateFile,NewZwCre ...… 查看全部問(wèn)答∨ |
|
100分求sdk包for wince 4.2 armv4,在線等 qq:99660532 我需要開(kāi)發(fā)pocket pc 2003下的應(yīng)用程序,但是沒(méi)有能用的sdk,誰(shuí)有和standard sdk的feature差不多的sdk,麻煩發(fā)我一個(gè),注意不是模擬器版,而且是wince4.2?;蛘哒l(shuí)能教我有其它在ppc2003系統(tǒng)的pda上開(kāi)發(fā)應(yīng)用的辦法。100分相送!… 查看全部問(wèn)答∨ |
|
protel99中制作元器件時(shí)怎么畫(huà)虛線 大家好: 我想在protel99中制作元器件畫(huà)虛線(繼電器上有虛線)但是我不會(huì)畫(huà),該怎么辦?我在元件庫(kù)里找的繼電器不是我想要的那種,所以很郁悶,謝謝了… 查看全部問(wèn)答∨ |
硬件工程師 職位要求: 1、電子工程專業(yè)背景。 2、能熟練使用PROTEL99、CADENCE等工具設(shè)計(jì)線路圖、線路板,有能力通過(guò)合理布線消除各電路之間的各種干擾(如地線噪音干擾、模擬與數(shù)字電路相互干擾、高頻電磁干擾等) 3、要求有足夠模擬及數(shù)字電 ...… 查看全部問(wèn)答∨ |
用EVC4 打開(kāi)模擬器時(shí),出現(xiàn)不能連接! 安裝了EVC4 及SP4 Microsoft Pocket PC 2003 SDK.msi Windows Mobile 2003 Second Edition Emulator Images for Pocket PC - CHS.msi 在測(cè)試時(shí)出現(xiàn) please make sure the following files are on the device \\windows\\tcpipc.dll \\windows ...… 查看全部問(wèn)答∨ |
100分求救 evc 下如何打開(kāi)GPS設(shè)備的電源? 機(jī)器自帶有GPS硬件,不過(guò)系統(tǒng)內(nèi)有個(gè)GPS電源管理,默認(rèn)情況下GPS的電源是關(guān)閉的 我想在程序中打開(kāi)GPS的電源,不知道如何實(shí)現(xiàn)? 注:機(jī)器是Navman的PIN 570… 查看全部問(wèn)答∨ |
設(shè)計(jì)資源 培訓(xùn) 開(kāi)發(fā)板 精華推薦
- 神經(jīng)形態(tài)芯片可能是革新機(jī)器人實(shí)時(shí)電機(jī)控制的未來(lái)
- 從三個(gè)方面理解ARM嵌入式系統(tǒng)
- 自動(dòng)報(bào)警 基于MCU的家庭防盜報(bào)警系統(tǒng)的設(shè)計(jì)
- 存儲(chǔ)控制器及其訪問(wèn)外設(shè)的原理
- 基于51系列單片機(jī)的智能照明控制系統(tǒng)設(shè)計(jì)方案
- 基于STM32的四旋翼飛行器控制系統(tǒng)
- 單片機(jī)應(yīng)用編程技巧解析
- 基于89C52的教室智能節(jié)能照明系統(tǒng)設(shè)計(jì)
- 一種新型的雨量光照傳感器的設(shè)計(jì)
- 保障工業(yè)核心命脈:深度解讀工業(yè)交換機(jī)QoS的“智能流量治理”之道
- WAIC 直擊|Arm 鄒挺:突破基礎(chǔ)設(shè)施、數(shù)據(jù)安全與人才三重挑戰(zhàn),釋放 AI 發(fā)展新潛能
- 鎧俠第九代 BiCS FLASH? 512Gb TLC 存儲(chǔ)器開(kāi)始送樣
- 基于PPEC32系列芯片的10kW純正弦波車載逆變器應(yīng)用方案
- 新唐科技推出全新KM1M4BF6x系列單電機(jī)控制MCU
- 伺服電機(jī)中的回原點(diǎn)方式
- 芯科集成CX3288系列車規(guī)MCU在旋轉(zhuǎn)變壓器的應(yīng)用
- AI玩具DC-DC芯片,安全與成本雙突圍
- 訂單暴增800%!消費(fèi)芯片新風(fēng)口:東北裝空調(diào)
- 機(jī)器人也能純視覺(jué)控制?MIT華人博士團(tuán)隊(duì)登上Nature主刊
- 有獎(jiǎng)直播|瑞薩電子 RA 系列產(chǎn)品開(kāi)發(fā)工具之 FSP4.0.0 新特性介紹
- 【已結(jié)束】 電感應(yīng)用知識(shí)分享|MPS 有獎(jiǎng)直播
- 調(diào)查:泰克創(chuàng)新實(shí)驗(yàn)室全面升級(jí),功率測(cè)試痛點(diǎn)通通都拋來(lái)!參與贏好禮
- 樂(lè)鑫ESP32-Korvo音頻開(kāi)發(fā)板免費(fèi)測(cè)評(píng)試用
- TI 邀您填問(wèn)卷贏好禮|私人定制專屬你的 2019 工業(yè)應(yīng)用方案
- 說(shuō)說(shuō)電源晉級(jí)路上的那些“攔路虎”
- 艾睿電子&ADI有獎(jiǎng)直播:無(wú)需光耦的flyback隔離電源設(shè)計(jì)
- TI有獎(jiǎng)直播:伺服驅(qū)動(dòng)器中電流和電壓測(cè)量解決方案
- 答題抽獎(jiǎng):Mentor Tessent Automotive相關(guān)測(cè)試解決方案(獎(jiǎng)品池還剩不少獎(jiǎng)品喲)
- 有獎(jiǎng)直播:超小型封裝 TI MSPM0 MCU 可優(yōu)化設(shè)計(jì)空間,實(shí)現(xiàn)更多可能
- 小米全面屏手機(jī)專利解密:內(nèi)置無(wú)線耳機(jī)收納槽
- 支持百瓦級(jí)快充!小米10超大杯跑分首曝光:超68萬(wàn)分
- 蘋果被起訴,AirPods系列被指侵權(quán)多項(xiàng)專利
- 極米推全新品牌MOVIN并發(fā)布兩款新品 1699元起
- 高通發(fā)QC 5快充技術(shù):支持100W+充電功率 5分鐘可充一半
- 音樂(lè)發(fā)燒友——KUKA機(jī)器人
- 智京科技正式發(fā)布云智能教育(學(xué)習(xí))機(jī)器人
- 馬斯克確認(rèn)獵鷹重型火箭中央助推器回收失敗,已墜入大西洋
- 武漢創(chuàng)業(yè)者發(fā)展柔性工業(yè)機(jī)器人 預(yù)計(jì)今年收入1.5億
- 瞄準(zhǔn)中國(guó)游客 日本推出機(jī)器人拜年咖啡廳
- 關(guān)于新建工程的編譯錯(cuò)誤,請(qǐng)高手看看
- 改進(jìn)GSM(EDGE)產(chǎn)品的設(shè)計(jì)精度
- ARM經(jīng)典300問(wèn).pdf
- EEWORLD大學(xué)堂----TI 15.4 協(xié)議棧,以及低功耗遠(yuǎn)距離傳感器到云端解決方案介紹
- assertion failed :"File wincore.cpp ,ine 1051"是什么錯(cuò)誤?
- 請(qǐng)高手介紹一個(gè)好的ARM學(xué)習(xí)板
- WinCE dll 注冊(cè)?
- MDI port
- 有獎(jiǎng)直播報(bào)名|Microchip 安全解決方案系列研討會(huì)
- PROTEL軟件使用的誤區(qū)及幾個(gè)不易搞清的概念