版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第7章單片機(jī)應(yīng)用系統(tǒng)開發(fā)7.1單片機(jī)應(yīng)用系統(tǒng)開發(fā)過程概述7.2總體設(shè)計7.3硬件設(shè)計7.4軟件設(shè)計7.5軟件可靠性設(shè)計7.6系統(tǒng)調(diào)試與單片機(jī)開發(fā)工具由于單片機(jī)應(yīng)用系統(tǒng)種類繁多,技術(shù)要求及指標(biāo)各不相同,因此設(shè)計方案、設(shè)計步驟、開發(fā)過程不完全相同,但也存在著一些共性問題。本章針對大多數(shù)應(yīng)用場合,介紹單片機(jī)應(yīng)用系統(tǒng)的一般開發(fā)過程和硬件/軟件設(shè)計基本方法。
單片機(jī)應(yīng)用系統(tǒng)由硬件和軟件兩部分組成。硬件電路以MCU芯片為核心,包括了擴(kuò)展存儲器、輸入/輸出接口電路及設(shè)備;軟件部分包括了監(jiān)控程序和各種應(yīng)用程序(可統(tǒng)稱為控制程序)。硬件電路和控制程序只有密切配合、協(xié)調(diào)一致,才能組成一個高性能的單片機(jī)應(yīng)用系統(tǒng)。7.1單片機(jī)應(yīng)用系統(tǒng)開發(fā)過程概述在系統(tǒng)的開發(fā)過程中,軟硬件的功能總是在不斷地調(diào)整,以相互適應(yīng)。硬件設(shè)計和軟件設(shè)計不能截然分開,硬件設(shè)計時應(yīng)考慮系統(tǒng)資源及軟件實現(xiàn)方法,而軟件設(shè)計時又必須了解硬件的工作原理。
單片機(jī)應(yīng)用系統(tǒng)開發(fā)過程包括總體設(shè)計、硬件設(shè)計、軟件設(shè)計、仿真調(diào)試、可靠性實驗和產(chǎn)品化等幾個階段,但各階段不是絕對分開的,有時是交叉進(jìn)行的。圖7-1描述了單片機(jī)應(yīng)用系統(tǒng)開發(fā)的一般過程。
設(shè)計人員在接到某項單片機(jī)應(yīng)用系統(tǒng)的研制任務(wù)后,一般先進(jìn)行總體設(shè)計。總體設(shè)計包括以下內(nèi)容。
1.理解系統(tǒng)功能和技術(shù)指標(biāo)
接到研制任務(wù)后,先對用戶提出的任務(wù)進(jìn)行深入細(xì)致的分析和研究,參考國內(nèi)外同類或相關(guān)產(chǎn)品的有關(guān)資料、標(biāo)準(zhǔn),根據(jù)系統(tǒng)的用途、功能和技術(shù)指標(biāo)以及工作環(huán)境,擬定出性能/價格比最高的一套方案,這是系統(tǒng)設(shè)計的依據(jù)和出發(fā)點,也是決定系統(tǒng)設(shè)計是否成功的關(guān)鍵。7.2總體設(shè)計
2.選擇單片機(jī)類型
自20世紀(jì)70年代單片機(jī)誕生以來,發(fā)展十分迅速。目前世界上生產(chǎn)單片機(jī)芯片的廠商有幾十家,型號有上千種,其中應(yīng)用比較多的產(chǎn)品有:Intel公司的MCS-51極其兼容芯片(如Philips公司的51系列、ATMEL公司的89S5X系列)、MCS-51派生型芯片(如P89C51RD2系列、SST公司的89E5XRD2系列、華邦Winbond的W78/W77/W79系列、Philips公司的LPC76X與LPC900系列)、ATMEL公司的AVR系列、ST公司的STM8內(nèi)核系列、Microchip公司的PIC系列及其兼容芯片、Motorola公司的M68HC系列、Zilog公司的Z8系列等8位MCU芯片,以及以ARM為內(nèi)核的32位嵌入式MCU芯片。
一般來說,在選擇單片機(jī)類型時,主要綜合考慮以下幾個問題。
1)貨源充足、穩(wěn)定
所選單片機(jī)芯片在國內(nèi)元器件市場上貨源要穩(wěn)定、充足,有成熟的開發(fā)設(shè)備(主要指仿真器和編程器)。
對于MCS-51及其兼容芯片來說,在研制階段可選擇帶FlashROM存儲器的CPU芯片,如89C5×系列中的89C51/52/54/58、89C5××2系列中的89C51×2/52×2/54×2/58×2、89C51RX系列中的89C51RD2芯片、SST89E5XRD2系列芯片等,借助通用編程器即可反復(fù)修改監(jiān)控程序,便于調(diào)式;在小批量試產(chǎn)時,可換上相應(yīng)型號、價格更低的OTPROM存儲器芯片,如87C××系列中的87C51/52/54/58或87C5××2系列芯片即可,無須修改硬件(如PCB)和軟件。
2)性價比高
在保證性能指標(biāo)情況下,所用芯片價格要盡可能低,使系統(tǒng)有較高的性價比。
3)芯片加密功能完善
這點非常重要,因為系統(tǒng)硬件電路無密可守。如果所選芯片加密功能不完善,容易被破解,這對委托方與開發(fā)者的利益都可能造成潛在的損害。
4)研發(fā)周期短
在研制任務(wù)重、時間緊的情況下,應(yīng)考慮采用自己比較熟悉的系列,這樣可以較快地進(jìn)行系統(tǒng)硬件與軟件設(shè)計。原則上選擇用戶廣泛、技術(shù)成熟、性能穩(wěn)定而自己又熟悉的系列與型號。
3.關(guān)鍵器件的選擇
在選定單片機(jī)類型后,通常還要對系統(tǒng)中一些嚴(yán)重影響系統(tǒng)性能指標(biāo)的器件(如傳感器、微弱信號放大器件等)進(jìn)行選擇。例如,一個設(shè)計合理的測控系統(tǒng)往往因傳感器件的精度或使用條件等因素的限制而達(dá)不到應(yīng)有的效果。
4.軟硬件功能劃分
同一般的計算機(jī)系統(tǒng)一樣,單片機(jī)應(yīng)用系統(tǒng)的軟件和硬件在邏輯功能上是等效的。具有相同功能的單片機(jī)應(yīng)用系統(tǒng),其軟硬件功能可以在很寬的范圍內(nèi)變化。一些硬件電路的功能可以由軟件來實現(xiàn),反之亦然。例如,系統(tǒng)日歷時鐘可以用實時/日歷時鐘芯片(如MC146818、PCF8563)實現(xiàn),也可以用定時中斷方式實現(xiàn);又如無線或紅外解碼電路,既可由相應(yīng)解碼芯片承擔(dān),也可以通過軟件方式(如利用具有上升、下降沿觸發(fā)捕獲功能的定時器)實現(xiàn)。在應(yīng)用中,系統(tǒng)的軟、硬件功能劃分要根據(jù)系統(tǒng)要求而定,用硬件實現(xiàn)可提高系統(tǒng)反應(yīng)速度、減少存儲容量、縮短軟件開發(fā)周期,但會增加系統(tǒng)硬件成本、降低硬件的利用率,使系統(tǒng)的靈活性與適應(yīng)性變差。相反,若用軟件來實現(xiàn)某些硬件功能,可以節(jié)省硬件開支,增強(qiáng)系統(tǒng)的靈活性和適應(yīng)性,但系統(tǒng)反應(yīng)速度會下降,軟件設(shè)計費(fèi)用和所需存儲器容量將相應(yīng)增加。對產(chǎn)量大、價格敏感的民用產(chǎn)品,原則上能用軟件實現(xiàn)的功能,不靠硬件電路完成。在總體設(shè)計時,必須權(quán)衡利弊,仔細(xì)劃分好硬件和軟件的功能。
硬件設(shè)計的任務(wù)就是依據(jù)總體設(shè)計要求,在選定單片機(jī)類型基礎(chǔ)上,規(guī)劃出系統(tǒng)的硬件電路框圖、所用元器件及電氣連接關(guān)系,生成系統(tǒng)的電原理圖;根據(jù)經(jīng)驗或經(jīng)過計算確定系統(tǒng)中每一元器件的參數(shù)(如電阻阻值及公差、耗散功率、耐壓)、型號及封裝形式。7.3硬件設(shè)計必要時通過仿真或?qū)嶒灧绞綄ο到y(tǒng)內(nèi)局部電路進(jìn)行驗證,確保電原理圖的正確性和可靠性。在系統(tǒng)原理圖及元器件參數(shù)、型號、封裝形式完全確定情況下,就可進(jìn)入印刷電路板設(shè)計(也涉及工藝結(jié)構(gòu)設(shè)計內(nèi)容)階段。7.3.1硬件電路設(shè)計及元器件選擇
1.系統(tǒng)構(gòu)成方式選擇
目前用戶在構(gòu)建單片機(jī)應(yīng)用系統(tǒng)時,有以下三種方式可供選擇。
1)專用系統(tǒng)
系統(tǒng)硬件電路配置與系統(tǒng)控制程序完全按照具體應(yīng)用系統(tǒng)功能、性能指標(biāo)量身定制。在這類系統(tǒng)中,硬件配置最佳,軟硬件資源利用率高,性價比最高。但這類系統(tǒng)不具有二次開發(fā)功能。采用這種方式要求設(shè)計者具有扎實的電路基礎(chǔ)知識、常用元器件知識、靈活應(yīng)用技能以及一定的電子線路設(shè)計經(jīng)驗。由于多數(shù)單片機(jī)應(yīng)用系統(tǒng)對價格敏感,總希望有最高的性價比。因此,多數(shù)單片機(jī)應(yīng)用系統(tǒng)的硬件電路、監(jiān)控程序均需要專門設(shè)計。
2)模塊化系統(tǒng)
由于單片機(jī)應(yīng)用系統(tǒng)的擴(kuò)展和配置具有典型性,因此有些廠家將這些典型配置做成用戶板系列(比如主機(jī)板、A/D板、D/A板、I/O板、打印機(jī)接口板、通信接口板等),供用戶選擇。用戶可根據(jù)具體需要選擇有關(guān)用戶板,組成具有特定功能的應(yīng)用系統(tǒng)。模塊化結(jié)構(gòu)是大、中型應(yīng)用系統(tǒng)的發(fā)展方向,它可大大減少用戶在硬件開發(fā)上投入的時間和精力,縮短開發(fā)周期。但在這類系統(tǒng)中,部件功能沒有得到充分利用,性價比不高。由于系統(tǒng)硬件不是針對目標(biāo)系統(tǒng)功能專門設(shè)計,部件之間匹配性差、元件冗余量大,使系統(tǒng)可靠性變低,功耗大。因此,適用范圍受到了很大的限制。
3)單片單板機(jī)系統(tǒng)
受通用CPU單板機(jī)(如早期的TP801等)的影響,有些廠家用單片機(jī)來構(gòu)成單板機(jī),其硬件按典型應(yīng)用系統(tǒng)配置,并配有監(jiān)控程序,具有一定的二次開發(fā)能力。但是,單板機(jī)的固定結(jié)構(gòu)形式常使應(yīng)用系統(tǒng)不能獲得最佳配置,產(chǎn)品批量大時,軟硬件資源浪費(fèi)較大,但可大大減少系統(tǒng)研制時的硬件工作量,并且具有二次開發(fā)能力,可提高系統(tǒng)的研制進(jìn)度。
2.系統(tǒng)硬件電路設(shè)計一般原則
在設(shè)計系統(tǒng)硬件電路時,一般應(yīng)遵循以下原則:
(1)盡可能選擇標(biāo)準(zhǔn)化、模塊化的典型電路,且符合單片機(jī)應(yīng)用系統(tǒng)的常規(guī)用法。
(2)系統(tǒng)配置及擴(kuò)展標(biāo)準(zhǔn)必須充分滿足系統(tǒng)的功能要求,并留有余地,以利于系統(tǒng)的二次開發(fā)。
(3)硬件結(jié)構(gòu)應(yīng)結(jié)合控制程序設(shè)計一并考慮。軟件能實現(xiàn)的功能盡可能由軟件來完成,以簡化系統(tǒng)的硬件電路,降低成本,提高系統(tǒng)的可靠性。但“軟化”的結(jié)果將占用CPU時間,降低系統(tǒng)實時處理能力,因此,對實時性要求高的場合,應(yīng)優(yōu)先考慮用硬件實現(xiàn)。
(4)系統(tǒng)中相關(guān)的器件要盡可能做到性能匹配。例如選用CMOS芯片單片機(jī)構(gòu)成低功耗的系統(tǒng)時,系統(tǒng)中全部芯片都應(yīng)選擇低功耗器件。
(5)單片機(jī)外接電路較多時,必須考慮其驅(qū)動能力。若驅(qū)動能力不足,則系統(tǒng)工作不可靠。這時應(yīng)增設(shè)總線驅(qū)動器或者減少芯片功耗,以降低總線負(fù)載。
(6)可靠性及抗干擾設(shè)計是硬件系統(tǒng)設(shè)計不可缺少的一部分。可靠性、抗干擾能力與硬件系統(tǒng)自身素質(zhì)有關(guān),諸如構(gòu)成系統(tǒng)的各種芯片、元器件的正確選擇、電路設(shè)計合理性、印刷電路板布線、去耦濾波、通道隔離等,都必須認(rèn)真對待。為了提高單片機(jī)控制系統(tǒng)的可靠性,單片機(jī)控制系統(tǒng)中的IC芯片旁必須放置相應(yīng)的濾波電容。這點最容易被線路設(shè)計者忽略。
74系列及CMOS小規(guī)模數(shù)字集成電路,每1~2塊芯片的電源引腳和地之間應(yīng)加接一個容量為0.01~0.1μF的高頻濾波電容,濾波電容安裝位置盡量接近芯片電源引腳。工作頻率越高,濾波電容容量就可以越小。例如,系統(tǒng)工作頻率大于10MHz時,濾波電容的容量可取0.01~0.047μF。
74系列中規(guī)模集成電路,如鎖存器、譯碼器、總線驅(qū)動器等,以及MCU、存儲器芯片等,每塊芯片的電源引腳和地引腳之間均需要加接濾波電容。此外,在印刷電路板電源入口處應(yīng)加接容量在20~47μF鋁電解或鉭電解的低頻濾波
電容。
(7)
TTL電路未用引腳的處理。在TTL單元電路中,一些單元含有多個引腳,當(dāng)只使用其中部分引腳時,如將“2輸入與非門”作為反相器使用時,就會遇到多余引腳問題。
對于未用的與門(包括與非門)引腳,可采?。?/p>
●當(dāng)電路工作頻率不高時,可懸空(視為高電平,但不允許帶長開路線)?!癞?dāng)電源電壓不超過5.5V時,可直接與電源VCC相連。優(yōu)點是無須增加額外的元器件,缺點是當(dāng)電源部分出現(xiàn)故障,如電壓大于5.5V時,可能損壞與電源相連的與非門電路芯片。
●將所有未用的輸入端連在一起,并通過2.0kΩ電阻接電源VCC,缺點是需要增加一個電阻。
●在前級驅(qū)動能力足夠時,將多余輸入端并接到已使用的輸入端上。缺點是除了要求前級電路具有足夠的驅(qū)動能力外,增加了前級電路的功耗。
對于未用的或門(包括或非門)引腳,一律接地。
(8)
CMOS、HCMOS電路未用引腳的處理。
對于未用的與門(包括與非門)引腳,可采?。?/p>
●直接與電源VDD相連。優(yōu)點是無須增加額外的元器件,缺點是當(dāng)電源部分出現(xiàn)故障時,可能損壞與電源相連的與非門電路芯片。
●將所有未用的輸入端連在一起,并通過100kΩ電阻接電源VDD,缺點是需要增加一個電阻。
●在前級驅(qū)動能力足夠時,將多余輸入端并接到已使用的輸入端上。缺點是除了要求前級電路具有足夠的驅(qū)動能力外,增加了前級電路的功耗。
對于未用的或門(包括或非門)引腳,一律接地。對于CMOS、HCMOS電路芯片來說,如果是數(shù)字IC,則未用單元的所有輸入端一律接地;而對于模擬比較器、放大器來說,反相端接地;同相端接輸出端。
(9)工藝設(shè)計,包括機(jī)架機(jī)箱、面板、配線、接插件等,必須兼顧電磁兼容要求和安裝、調(diào)試、維護(hù)等操作是否方便。
3.硬件可靠性設(shè)計
由于單片機(jī)應(yīng)用系統(tǒng)主要面向工業(yè)控制、智能化、自動化儀器儀表,任何差錯都可能造成非常嚴(yán)重的后果。此外,單片機(jī)應(yīng)用系統(tǒng)工作環(huán)境惡劣,個別系統(tǒng)甚至要求在無人值守情況下工作??梢?,對系統(tǒng)的可靠性要求高,而影響單片機(jī)應(yīng)用系統(tǒng)可靠性的因素很多,如電磁干擾、電網(wǎng)電壓波動、溫度及濕度變化、元器件質(zhì)量及參數(shù)等,需要針對不同應(yīng)用條件、可靠性指標(biāo)在硬件、軟件上采取相應(yīng)的措施。
(1)抑制輸入/輸出通道的干擾。采用隔離和濾波技術(shù)抑制輸入/輸出通道可能出現(xiàn)的干擾。常用的隔離器件有:隔離變壓器、光電耦合器、繼電器和隔離放大器等,應(yīng)根據(jù)傳輸信號種類(模擬信號還是開關(guān)信號、頻率、幅度)選擇相應(yīng)的隔離器件。例如,對低速開關(guān)、電平信號,可采用光電耦合器作隔離器件;對高頻開關(guān)信號可采用脈沖變壓器作隔離器件。
(2)供電系統(tǒng)干擾的抑制。單片機(jī)應(yīng)用系統(tǒng)的供電線路是干擾的主要入侵途徑,常采用如下措施抑制:
單片機(jī)系統(tǒng)的供電線路和產(chǎn)生干擾的用電設(shè)備分開供電。通常干擾源為各類大功率設(shè)備,如電機(jī)。對于小功率的單片機(jī)系統(tǒng),可采用CMOS器件,設(shè)計成低功耗系統(tǒng),并用電池供電,干擾即可大大減少。通過低通濾波器和隔離變壓器接入電網(wǎng)。低通濾波器可以吸收大部分電網(wǎng)中的“毛刺”,隔離變壓器是在初級繞組和次級繞組之間多加一層屏蔽層,并將它和鐵芯一起接地,防止干擾通過初次級之間的電容效應(yīng)進(jìn)入單片機(jī)供電系統(tǒng)。該屏蔽層也可用加繞的一層線圈來充當(dāng)(一頭接地,另一層空置)。
整流元件上并接濾波電容,可以在很大程度上削弱高頻干擾,濾波電容可選用容量在1000pF~0.1μF無感瓷片電容或CBB電容。數(shù)字信號采用負(fù)邏輯傳輸。如果定義低電平為有效電平,高電平為無效電平,就可以減少干擾引起的誤動作,提高數(shù)字信號傳輸?shù)目煽啃浴?/p>
(3)電磁場干擾的抑制措施。電磁場的干擾可采用屏蔽和接地措施。用金屬外殼或金屬屏蔽罩將整機(jī)或部分元器件包起來,再將金屬外殼接地,即能起到屏蔽作用。單片機(jī)系統(tǒng)中有數(shù)字地、模擬地、交流地、信號地、屏蔽地(機(jī)殼地),應(yīng)分開接不同性質(zhì)的地。印刷電路板中的地線應(yīng)接成網(wǎng)狀,而且其他布線不要形成回路,特別是環(huán)繞外周的環(huán)路,接地線根據(jù)電路通路最好逐漸加寬,而高頻電路板多采用大面積接地連接方式;強(qiáng)信號地線和弱信號地線要分開。
(4)減小CPU芯片工作時產(chǎn)生的電磁輻射。如果CPU工作產(chǎn)生的電磁輻射干擾了系統(tǒng)內(nèi)無線接收電路時,除了對CPU芯片采取屏蔽措施外,還必須:在滿足速度要求前提下,盡可能降低系統(tǒng)時鐘頻率,因為時鐘頻率越低,晶振電路產(chǎn)生的電磁輻射量越??;盡量避免擴(kuò)展外部存儲器,即盡可能使用內(nèi)含F(xiàn)lashROM、OTPROM存儲器的芯片,且禁止ALE輸出。
為提高CPU工作頻率,大部分MCS-51及兼容芯片I/O引腳輸出信號的上升沿、下降沿很陡,如8×C5×、8×C5××2、8×C51RX等系列芯片,其I/O引腳輸出信號邊沿過渡時間在5ns左右,因此輸出信號的上升、下降沿可能出現(xiàn)過沖,如圖7-2所示。
圖7-2輸出信號的上升、下降沿過沖而過沖幅度與電源電壓有關(guān),為減小過沖幅度,可使用OTPROM存儲器芯片,如87C51/52/54/58、87C51×2/52×2/54×2/58×2等,以便將電源電壓降為2.7~3.6V。
或選用工作頻率低,上升、下降沿過渡時間較長的芯片,如P89LPC900、P87LPC76×系列芯片,這三個系列芯片出廠時邊沿過渡預(yù)設(shè)為10ns,遠(yuǎn)小于最高工作頻率在33MHz的8×C5×、8×C5××2系列。
4.元器件選擇原則
單片機(jī)應(yīng)用系統(tǒng)中可用的各種元器件的種類繁多、功能各異、價格不等,這就為用戶在元器件功能、特性等方面進(jìn)行選擇提供了較大的自由度。用戶必須對自己的系統(tǒng)要求及芯片的特性有充分了解后才能做出正確、合理的選擇。
選擇元器件的基本原則是選擇哪些滿足性能指標(biāo)、可靠性高、經(jīng)濟(jì)性好的元器件。選擇元器件時應(yīng)考慮以下因素:
(1)性能參數(shù)和經(jīng)濟(jì)性。在選擇元器件時必須按照器件手冊所提供的各種參數(shù)如工作條件、電源要求、邏輯特性等指標(biāo)綜合考慮,但不能單純追求超出系統(tǒng)指標(biāo)要求的高速、高精度、高性能。例如,一般10位精度的A/D轉(zhuǎn)換器價格遠(yuǎn)高于同類8位精度的A/D轉(zhuǎn)換器;陶瓷封裝(一般適用于
-25℃~+85℃或
-55℃~+125℃)的芯片價格略高于塑料封裝
(0℃~+70℃)的同類型芯片。
(2)通用性。在應(yīng)用系統(tǒng)中,盡量采用通用的大規(guī)模集成電路芯片,這樣能簡化系統(tǒng)設(shè)計、安裝和調(diào)試,也有助于提高系統(tǒng)的可靠性。一般原則是能用一塊中大規(guī)模芯片完成的功能,不用多個中小規(guī)模電路芯片實現(xiàn);能用MCU實現(xiàn)的功能,盡量避免用多塊中小規(guī)模數(shù)字IC芯片實現(xiàn)。
(3)型號和公差。在確定元器件參數(shù)之后,還要確定元器件的型號,這主要取決于電路所允許元器件的公差范圍。如電解電容器可滿足一般的應(yīng)用,但對于電容公差要求高的電路,則電解電容就不宜采用。
(4)與系統(tǒng)速度匹配。單片機(jī)時鐘頻率一般可在一定范圍內(nèi)選擇(如增強(qiáng)型MCS-51單片機(jī)芯片可在0~33MHz之間任意選擇),在不影響系統(tǒng)性能的前提下,時鐘頻率選低些好,這樣可降低系統(tǒng)內(nèi)其他元器件的速度要求,從而降低成本和提高系統(tǒng)的可靠性。另一方面,也將降低了晶振電路潛在的電磁干擾。
(5)外圍電路芯片類型。由于TTL數(shù)字IC芯片功耗大,已廣泛被速度與之相近、邏輯及引腳與之兼容、功耗小得多的74HC系列所取代,因此無論系統(tǒng)功耗有無要求都盡可能不用TTL數(shù)字電路芯片。對于低功耗、慢速系統(tǒng),應(yīng)采用微功耗的CMOS系列數(shù)字電路,如CD4000系列或CD4500系列。
(6)元件封裝方式的選擇。為減小體積,減小元件引腳寄生電感、電阻,提高系統(tǒng)工作速度,小功率元件盡量采用表面封裝元件和芯片,如SMC封裝電阻、電容(但電源高頻濾波電容應(yīng)采用穿通封裝CBB電容),無引線封裝二極管,各類貼片三極管、IC芯片等。采用貼片元件,不僅減小了系統(tǒng)體積、提高了系統(tǒng)工作頻率,也方便了印制板加工,還提高了裝配、焊接工藝的質(zhì)量。
在貼片元件中,對于無源器件,當(dāng)體積沒有特殊要求情況下,應(yīng)盡量選擇0805封裝尺寸電阻、電容。對于中小規(guī)模IC芯片,盡量選擇引腳間距較大的SOP封裝形式。個別耗散功率較大的電阻,可選擇1206封裝規(guī)格,或用兩個0805封裝電阻并聯(lián)方式擴(kuò)大耗散功率代替一個1206封裝電阻(依次類推,可用兩個1206封裝電阻并聯(lián)以獲得更大的耗散功率)。例如某電路需要一個1/4
W的1kΩ電阻,可以選擇1206封裝的1kΩ電阻,但也可以用兩個510Ω的0805電阻并聯(lián)取代。實踐證明:元器件尺寸越小,印制板線條寬度與焊盤尺寸就越小,焊接工藝的可靠性就越低。7.3.2印制電路板設(shè)計
單片機(jī)應(yīng)用系統(tǒng)產(chǎn)品在結(jié)構(gòu)上離不開用于固定單片機(jī)芯片及其他元器件的印制板。通常這類印制板布線密度高、焊點分布密度大,常需要雙面(個別情況下可采用多層板)才能滿足電路電磁兼容性要求。此外,無論采用何種電路CAD軟件完成PCB設(shè)計,都不宜采用自動布局、布線方式,必須通過手工方式進(jìn)行。在編輯印制板時,需要遵循下列原則:
(1)晶振必須盡可能靠近CPU晶振引腳,且晶振電路周圍的元件面及焊錫面內(nèi)不能走其他的信號線。最好在元件內(nèi)晶振電路位置放置一個與地線相連的屏蔽層,必要時將晶振外殼和與地線相連的屏蔽層焊接在一起。
(2)電源、地線要求。在雙面印制板上,電源線和地線應(yīng)盡可能安排在不同的面上,且平行走線,這樣寄生電容將起濾波作用。對于功耗較大的數(shù)字電路芯片,如CPU、驅(qū)動器等盡可能采用單點接地方式,即這類芯片電源、地線應(yīng)單獨走線,并連到印制板電源、地線入口處。電源線和地線寬度盡可能大一些,或采用微帶走線方式或大面積接地方式。
(3)模擬信號和數(shù)字信號不能共地,即采用單點接地方式。
(4)在中低頻應(yīng)用系統(tǒng)(晶振頻率小于20MHz)中,走線轉(zhuǎn)角可取45°;在高頻系統(tǒng)中,必要時可選擇圓角模式。盡量避免采用90°轉(zhuǎn)角模式。
(5)在連線時,一般應(yīng)按原理圖中元件連接關(guān)系連線,但當(dāng)電路中存在若干地位等同的單元電路時,可根據(jù)連線是否方便重新調(diào)整原理圖中單元電路的位置。例如,對于四單元模擬比較器LM339來說,假設(shè)原理圖中局部電路A使用1單元;局部電路B使用2單元;局部電路C使用3單元。如果連線時,發(fā)現(xiàn)局部電路A使用3單元;局部電路B使用1單元;局部電路C使用2單元連接交叉最少,則不僅而且應(yīng)該重新調(diào)整原理圖中的連接關(guān)系,因為四單元模擬比較器LM339內(nèi)各單元地位完全相同。
(6)對于輸入信號線,走線要盡可能短,必要時在信號線兩側(cè)放置地線屏蔽,防止可能出現(xiàn)的干擾;不同信號線避免平行走線,上下兩面的信號線最好交叉走線,相互干擾可減到最小。
7.4.1資源分配
一個單片機(jī)應(yīng)用系統(tǒng)所擁有的硬件資源分片內(nèi)和片外兩部分。片內(nèi)資源是指單片機(jī)芯片本身所包含的中央處理器、程序存儲器、數(shù)據(jù)存儲器、定時/計數(shù)器、看門狗計數(shù)器、中斷源、I/O接口以及串行通信接口等。這部分硬件資源的種類和數(shù)量,不同公司不同系列單片機(jī)之間差別較大,當(dāng)設(shè)計人員選定某一特定型號的單片機(jī)芯片進(jìn)行系統(tǒng)設(shè)計時,應(yīng)充分利用片內(nèi)的各種硬件資源。7.4軟件設(shè)計但若在應(yīng)用中,片內(nèi)硬件資源不足時,要么選擇硬件資源更豐富的芯片,要么在片外擴(kuò)展不足的硬件資源。通過系統(tǒng)擴(kuò)展,單片機(jī)應(yīng)用系統(tǒng)具有了更多的硬件資源,因而有了更強(qiáng)的功能。
由于定時器/計數(shù)器、中斷源、串行通信口等資源的分配比較容易,下面主要介紹ROM資源和RAM資源的分配。
1.?I/O引腳資源分配
單片機(jī)芯片各I/O引腳功能不完全相同,如部分引腳具有第二輸入/輸出功能;各I/O引腳輸出級電路結(jié)構(gòu)不盡相同,如8×C5×的P0口采用漏極開路輸出方式,而P1~P3口采用準(zhǔn)雙向結(jié)構(gòu)。此外,在P89LPC900系列中,P1.5引腳只能作為輸入引腳使用。因此,在分配I/O引腳時,必須根據(jù)外部接口電路特性做出合理的選擇。
例如,在8×C5×系統(tǒng)中,當(dāng)外中斷不夠用時,可使用定時器T2溢出率作為串行口發(fā)送、接收波特率,此時P1.1引腳就可以作為下降沿觸發(fā)的外中斷源使用。又如,在P87LPC762/4中,當(dāng)需要4根引腳作為直接編碼輸入鍵盤時,可考慮使用P0.3、P0.4、P0.5、P0.6引腳作為鍵盤輸入引腳,這樣基本保留了模擬比較器2的資源。
而在輸入通道中,OC(集電極開路)或OD(漏極開路)輸出器件(如比較器339、393等)接MCS-51的P1~P3口可省去上拉電阻;而OD輸出方式的P0口適合驅(qū)動小功率PNP三極管、發(fā)光二極管。
2.程序存儲器資源分配
片內(nèi)ROM存儲器用于存放程序和數(shù)據(jù)表格。按照MCS-51單片機(jī)的復(fù)位及中斷入口的規(guī)定,003FH以前的地址單元都作為中斷、復(fù)位入口地址區(qū)。在這些單元中一般都設(shè)置了轉(zhuǎn)移指令,轉(zhuǎn)移到相應(yīng)的中斷服務(wù)程序或復(fù)位啟動程序。當(dāng)程序存儲器中存放的功能程序及子程序數(shù)量較多時,應(yīng)盡可能為它們設(shè)置入口地址表。一般的常數(shù)、表格等統(tǒng)一放在表格區(qū)內(nèi);二次開發(fā)擴(kuò)展區(qū)應(yīng)盡可能放在高位地址區(qū)。
3.?RAM資源分配
RAM分為片內(nèi)RAM和片外RAM。片外RAM的容量比較大,通常用來存放批量大的數(shù)據(jù),如采樣結(jié)果數(shù)據(jù);片內(nèi)RAM容量較少,盡可能重疊使用,如數(shù)據(jù)暫存區(qū)與顯示、打印緩沖區(qū)重疊。
對于MCS-51單片機(jī)來說,片內(nèi)RAM是指00H~FFH單元,這256個單元的功能并不完全相同,分配時應(yīng)注意發(fā)揮各自的特點,做到物盡其用。
00~1FH這32個字節(jié)可以作為工作寄存器組,在工作寄存器的8個單元中,R0和R1具有指針功能,是編程的重要角色,應(yīng)充分發(fā)揮其作用。系統(tǒng)上電復(fù)位時,PSW為00H,SP=07H,則RS1(PSW.4)、RS0(PSW.3)位均為0,CPU自動選擇工作寄存器組0作當(dāng)前工作寄存器,而工作寄存器組1為堆棧,并向工作寄存器組2、3延伸。例如,此時當(dāng)CPU執(zhí)行諸如MOVR1,#2FH指令時,R1即指向01H單元。若在中斷服務(wù)程序中,若也要使用R1寄存器且不允許將原來的數(shù)據(jù)沖掉,則可在主程序中先將堆??臻g設(shè)置在其他位置,然后在進(jìn)入中斷服務(wù)程序后選擇工作寄存器組1、2或3,這時若再執(zhí)行諸如MOVR1,#00H指令時,就不會沖掉R1(01H單元)中原來的內(nèi)容,因為這時R1的地址已改變?yōu)?9H、11H或19H。在中斷服務(wù)程序結(jié)束時,可重新選擇工作寄存器組0。因此,一般情況下,主程序及其調(diào)用的子程序使用工作寄存器組0,而定時器溢出中斷、外部中斷、串行口中斷可根據(jù)需要(即中斷服務(wù)程序中是否使用了寄存器R7~R0。在安排中斷服務(wù)程序工作區(qū)時,為節(jié)約資源開銷,同優(yōu)先級中斷服務(wù)程序應(yīng)使用同一工作寄存器組)切換到工作寄存器組1、2或3。
20H~2FH這16個字節(jié)具有位尋址功能,可用來存放各種軟件標(biāo)志、邏輯變量、位輸入信息、位輸出信息副本、狀態(tài)變量、邏輯運(yùn)算的中間結(jié)果等。當(dāng)這些項目全部安排好后,保留一兩個字節(jié)備用,剩下的單元可改作其他用途。
30H~7FH為一般通用寄存器,只能以字節(jié)方式讀寫。通常用來存放各種參數(shù)、指針、中間結(jié)果,或用作數(shù)據(jù)緩沖區(qū)。由于高128字節(jié)片內(nèi)RAM僅支持間接尋址方式,靈活性遠(yuǎn)低于前128字節(jié)片內(nèi)RAM,因此應(yīng)盡可能將堆棧安排在片內(nèi)RAM的高端,如D0H~FFH,除非所用芯片僅有低128字節(jié)。設(shè)置堆棧區(qū)時應(yīng)事先估算出子程序和中斷嵌套的級數(shù)以及程序中棧操作指令使用情況,其大小應(yīng)留有余量。當(dāng)系統(tǒng)中擴(kuò)展了RAM,應(yīng)把使用頻率最高的數(shù)據(jù)緩沖區(qū)安排在片內(nèi)RAM中,以提高處理速度。
盡管片內(nèi)擴(kuò)展RAM(簡稱ERAM)只能通過MOVX指令讀寫,似乎各單元地位差別不大。但是其中的前256字節(jié)既可以用DPTR作為間址訪問,也可以用R0、R1作為間址讀寫,靈活性也比后256字節(jié)存儲單元大。即在含有ERAM的芯片中,不要輕易分配前256字節(jié)的ERAM(當(dāng)內(nèi)部RAM容量不夠開銷時,用ERAM前256字節(jié)存放一些訪問頻度較低的變量是一個不錯的選擇)。
RAM資源分配規(guī)則是:
(1)堆棧盡可能在后128字節(jié)內(nèi)部RAM的頂端,大小與子程序(包括中斷服務(wù)程序)嵌套層數(shù)有關(guān);
(2)位變量、具有尋址功能的字節(jié)變量從內(nèi)部RAM的20H單元開始(如果30H~7FH單元不夠分配,可適當(dāng)考慮借用剩余的可位尋址單元);
(3)最常用的字節(jié)變量從內(nèi)部RAM的30H單元開始;
(4)不常用的變量或數(shù)組從內(nèi)部RAM的80H單元開始(如果不夠用可考慮將部分安排在ERAM的前256字節(jié)空間內(nèi),通過MOVXA,@Ri、MOVX@Ri,A指令讀寫);
(5)一般不宜將變量安排在08H~1FH工作寄存器區(qū)內(nèi)。但可以根據(jù)中斷優(yōu)先級別大小,在內(nèi)部RAM資源緊張情況下,使用其中3區(qū)或2、3區(qū)作為變量存儲區(qū)。例如,某一應(yīng)用系統(tǒng)優(yōu)先級只有兩個,則可以將工作寄存器區(qū)(18H~1FH)做變量存放區(qū)。
如果將系統(tǒng)的各種開銷安排后,所剩單元很少,這往往不是好兆頭。應(yīng)該留有一定余地,以便將來系統(tǒng)升級、擴(kuò)充。ROM、RAM資源規(guī)劃好后,應(yīng)列出一張詳細(xì)的資源分配清單,作為編程依據(jù)。7.4.2程序語言及程序結(jié)構(gòu)選擇
設(shè)計控制程序時可選擇C語言,如Keil-C,也可以選擇匯編語言。
選擇C語言時,程序編寫、調(diào)試相對容易,但編譯后代碼長,存儲程序代碼所需空間大,執(zhí)行速度慢。而采用匯編語言時,情況正好相反。一個設(shè)計優(yōu)良的單片機(jī)應(yīng)用系統(tǒng),應(yīng)盡可能采用匯編語言編寫監(jiān)控程序。一方面,單片機(jī)芯片程序存儲空間較小,在某些應(yīng)用系統(tǒng)中所用MCU片內(nèi)程序存儲器容量只有數(shù)千字節(jié),無法存放由C語言編寫獲得的代碼;即使程序存儲器容量不是問題,但C語言源程序編譯效率低,相同操作對應(yīng)了多條指令,運(yùn)行速度變慢,這意味著在速度相同情況下,需用更高頻率的晶振——這在單片機(jī)應(yīng)用系統(tǒng)中不可取。
必須根據(jù)系統(tǒng)的監(jiān)控功能,正確、合理選擇程序結(jié)構(gòu)——串行多任務(wù)結(jié)構(gòu)程序還是并行多任務(wù)結(jié)構(gòu)程序。當(dāng)系統(tǒng)中,存在多個需要實時處理的任務(wù)時,最好選擇并行多任務(wù)結(jié)構(gòu)程序,否則系統(tǒng)的實時性將無法保證。
單片機(jī)主要面向工業(yè)控制、智能化儀器儀表以及家用電器,因此對單片機(jī)應(yīng)用系統(tǒng)的可靠性提出了很高的要求。
在數(shù)字系統(tǒng)中總會存在這樣或那樣的干擾,因此導(dǎo)致計算機(jī)系統(tǒng)不可靠的原因很多。7.5軟件可靠性設(shè)計我們知道無論是TTL,還是CMOS數(shù)字電路芯片在邏輯轉(zhuǎn)換瞬間電源電流ICC存在尖峰現(xiàn)象;繼電器吸合,尤其是斷開瞬間會在電源線上出現(xiàn)尖峰干擾脈沖;外界雷電干擾脈沖、接在同一相線上大功率電機(jī)啟動與關(guān)閉瞬間形成的干擾脈沖也會通過電源線串入控制系統(tǒng)中。此外,環(huán)境溫度波動、濕度變化等因素也可能影響數(shù)字系統(tǒng)信號的輸入/輸出,甚至產(chǎn)生使程序計數(shù)器PC“跑飛”、內(nèi)部RAM、FlashROM存儲單元數(shù)據(jù)丟失等不可預(yù)測的后果。消除這些干擾信號除了借助硬件低通濾波器、施密特觸發(fā)器,以及良好的PCB布局與布線措施外,在單片機(jī)控制系統(tǒng)中則更多地借助軟件方式消除,以降低系統(tǒng)硬件成本。此外,僅依靠硬件方式并不能完全解決系統(tǒng)的可靠問題。因此,軟件可靠性設(shè)計技術(shù)得到了廣泛的應(yīng)用。7.5.1PC“跑飛”及其后果
CPU的工作過程總是不斷地重復(fù)“取操作碼→譯碼→取操作數(shù)→執(zhí)行”過程。在正常情況下,程序計數(shù)器PC按程序員意圖遞增或轉(zhuǎn)移。但當(dāng)系統(tǒng)受干擾時,程序計數(shù)器PC出錯,致使CPU不按程序員意圖執(zhí)行程序中的指令系列,脫離正常軌道而“跑飛”,這可能會導(dǎo)致:
(1)跳過部分指令或程序段的執(zhí)行。一般說來跳過程序中任何一條有效指令,都會影響程序的執(zhí)行結(jié)果,進(jìn)而影響系統(tǒng)的可靠性,只是嚴(yán)重程度不同而已。如跳過的指令系列正好是數(shù)據(jù)輸入指令,則隨后的數(shù)據(jù)處理結(jié)果將不正確;又如跳過子程序返回指令RET或中斷服務(wù)程序返回指令RETI時,將引起堆棧錯誤,無法返回。
(2)拆分指令。在復(fù)雜指令集(CISC)計算機(jī)系統(tǒng)(如MCS-51)中,CPU受干擾后,可能將指令操作數(shù)當(dāng)操作碼執(zhí)行,引起混亂。當(dāng)程序計數(shù)器PC彈飛到某一單字節(jié)指令時,會自動納入正軌(最多跳過某些指令)。但在取指階段,PC“跑飛”,落到雙字節(jié)或三字節(jié)指令操作數(shù)上,多字節(jié)指令將被拆分,即指令“操作數(shù)”被當(dāng)作“操作碼”取出,如果操作數(shù)對應(yīng)的“指令碼”屬于多字節(jié)指令,又將繼續(xù)拆分緊隨其后的多字節(jié)指令,繼續(xù)出錯,如圖7-3(a)~(c)所示,除非被拆分指令后為兩條單字節(jié)指令,如圖7-3(d)所示。
圖7-3指令拆分示意圖在圖7-3(a)中,只要第n條指令最后一個操作數(shù)對應(yīng)的“指令碼”為多字節(jié)指令,其后的第n
+
1條指令必定被拆分;在圖7-3(b)中,當(dāng)?shù)趎條指令最后一個操作數(shù)對應(yīng)的“指令碼”為雙字節(jié)指令時,其后的第n
+
1條指令也會被拆分;而在圖7-3(c)中,當(dāng)?shù)趎條指令最后一個操作數(shù)對應(yīng)的“指令碼”為三字節(jié)指令時,其后的第n
+
2條指令也將被拆分,同時還跳過了第n
+
1條指令(被當(dāng)作操作數(shù)處理了)。對于圖7-3(d)來說,雖然PC已納入正軌,不再拆分隨后的指令系列,但當(dāng)?shù)趎條指令最后一個操作數(shù)對應(yīng)的“指令碼”為多字節(jié)指令時,會跳過第n
+
1或第n
+
1與第n
+
2指令的執(zhí)行。可見在CISC指令集中,多字節(jié)指令不因其上的多字節(jié)指令拆分而被拆分的條件是該指令前為兩條單字節(jié)指令;多字節(jié)指令被拆分不再拆分其后指令的條件是其后為兩條單字節(jié)指令。
(3)跳到數(shù)據(jù)區(qū),把數(shù)據(jù)當(dāng)指令執(zhí)行。
PC“跑飛”的后果不能預(yù)測,因為我們無法預(yù)料PC將從何處“飛入”何處,也就無法預(yù)測會跳過哪些指令;我們也不能預(yù)測將會拆分哪一指令,也就無法預(yù)測拆分重組后獲得的“指令”的功能:也許會改寫內(nèi)部RAM、特殊功能寄存器內(nèi)容,造成數(shù)據(jù)丟失,或關(guān)閉中斷、改變外設(shè),如定時/計數(shù)器的工作方式,或進(jìn)入死循環(huán);PC“飛入”數(shù)據(jù)區(qū),把數(shù)據(jù)當(dāng)指令執(zhí)行的后果也同樣不能預(yù)料,畢竟我們不能限定數(shù)表中各數(shù)據(jù)項的內(nèi)容。7.5.2降低PC“跑飛”對系統(tǒng)的影響
在計算機(jī)系統(tǒng)中,理論上PC“跑飛”不可避免,“跑飛”的后果無法預(yù)測。只能在軟件設(shè)計時,采取適當(dāng)措施盡可能減小PC“跑飛”對系統(tǒng)造成的影響,提高系統(tǒng)的可靠性。
1.指令冗余
為避免拆分多字節(jié)指令時跳過的指令不影響程序的執(zhí)行結(jié)果,可在多字節(jié)指令的前、后分別插入兩條單字節(jié)的空操作指令NOP。此外,為防止PC“跑飛”時,跳過某些對系統(tǒng)有重要影響的指令,在可靠性要求較高的系統(tǒng)中,在速度與存儲器空間許可情況下重寫特定操作指令,如輸出信號控制指令、外設(shè)工作方式設(shè)置指令、中斷控制指令、中斷優(yōu)先級設(shè)置指令等。這就是所謂的“指令冗余”方式。
當(dāng)然采用“指令冗余”方式會增加程序代碼的存儲量、降低系統(tǒng)的運(yùn)行效率。在實踐中不可能在所有雙字節(jié)、三字節(jié)指令的前后分別插入兩條空操作指令,只在對程序流向起決定作用的指令,如LJMP、SJMP、LCALL、JC、JNC、JB、JNB、CJNE、DJNZ等多字節(jié)指令前插入兩條NOP指令;在RET、RETI等單字節(jié)指令前增加1~2條冗余指令(如果其上一條指令為單字節(jié)指令,可增加一條),使系統(tǒng)在可靠性與速度、存儲量之間取得較好的平衡。多字節(jié)指令冗余方式:
NOP
NOP ;防止其上指令被拆分受株連,正常時會影響效率
CJNEA,#nnH,NEXT
單字節(jié)指令冗余方式舉例:
RET
RET ;增加1~2條冗余指令,防止其上指令被拆分而跳過
RET ;正常時不影響系統(tǒng)速度,僅多占2個單元的存儲空間為防止“PC”跑飛,拆分重組指令,關(guān)閉中斷、禁止定時/計數(shù)器計數(shù),尤其是軟件類看門狗定時器,如SST89E(V)5XRD2系列內(nèi)的看門狗。為此,需在主程序的適當(dāng)?shù)胤?,如并行多任?wù)程序結(jié)構(gòu)中的任務(wù)調(diào)度處或作業(yè)調(diào)度處插入重開中斷、重復(fù)啟動定時/計數(shù)器、軟件看門狗計數(shù)器等冗余指令。
盡管在RISC指令集計算機(jī)系統(tǒng)中,每條指令長度都相同,不存在指令被拆分問題,但PC“跑飛”同樣存在跳過某些指令或程序段的風(fēng)險,在程序中重復(fù)書寫關(guān)鍵操作指令方式依然必要。
2.增加數(shù)據(jù)可靠性方法
為防止PC“跑飛”時跳過數(shù)據(jù)輸入指令系列,造成隨后的數(shù)據(jù)處理不正確??稍跀?shù)據(jù)輸入處理指令前設(shè)置接收標(biāo)志(如55H、5AH、A5H或AAH),在數(shù)據(jù)處理前先檢查接收標(biāo)志是否正確,待數(shù)據(jù)處理結(jié)束后再清除正確接收標(biāo)志。一旦發(fā)現(xiàn)標(biāo)志異常,幾乎可以肯定PC已“跑飛”,視情況采取相應(yīng)對策。
由于無法預(yù)測PC“跑飛”拆分重組指令的功能,因此對存放在RAM中的重要數(shù)據(jù)應(yīng)增加校驗信息字節(jié),可根據(jù)需要選擇和校驗、某特征值倍數(shù)校驗,甚至CRC校驗方式。當(dāng)存儲空間允許時,除了采用某一校驗方式外,還可采用備份方式來進(jìn)一步提高數(shù)據(jù)的可靠性。
一旦發(fā)現(xiàn)校驗錯,也可以肯定PC已“跑飛”,視情況采取相應(yīng)對策。7.5.3PC“跑飛”攔截技術(shù)
在CISC指令系統(tǒng)中,采用指令冗余技術(shù)只保證了PC“跑飛”后迅速將其納入正軌,避免錯誤擴(kuò)大化而已,但依然跳過了被拆分指令、視為重組指令操作數(shù)的指令碼的執(zhí)行,更為嚴(yán)重的是無法預(yù)測拆分重組指令執(zhí)行后對系統(tǒng)造成的危害。此外無論是CISC,還是RISC指令系統(tǒng),PC“跑飛”均可能跳過若干指令系列。因此理論上,在做好重要數(shù)據(jù)、系統(tǒng)狀態(tài)備份或保護(hù)情況下,采用有效的軟件攔截技術(shù),在感知PC“跑飛”后,利用軟件復(fù)位功能或進(jìn)入循環(huán)等待看門狗計數(shù)器溢出方式強(qiáng)迫系統(tǒng)復(fù)位,避免系統(tǒng)帶病運(yùn)行,才能徹底解決PC“跑飛”帶來的可靠性問題。所謂攔截技術(shù)是指將“跑飛”的PC指針引向指定位置,進(jìn)行出錯處理后,再強(qiáng)迫系統(tǒng)復(fù)位的方法。常用的攔截手段包括傳統(tǒng)的軟件陷阱攔截和遠(yuǎn)程攔截兩種方式。
1.軟件陷阱
用指令冗余方式使“跑飛”的程序安定下來是有條件的,首先跑飛的程序必須落到程序區(qū)內(nèi),其次必須執(zhí)行到冗余指令。所謂軟件陷阱,就是一條引導(dǎo)指令,強(qiáng)行將捕獲的程序引向一個指定的地址,在那里有一段專門對程序出錯進(jìn)行處理的指令。如果我們把這段程序的入口地址記為ERR的話,軟件陷阱就是一條無條件轉(zhuǎn)移指令,為了增強(qiáng)捕獲效果,一般還需在它前面加幾條NOP指令,所需NOP指令條數(shù)比指令集中最大指令長度少1個字節(jié)。由于MCS-51系統(tǒng)指令長度為1~3字節(jié),因此需要兩條NOP指令,即在MCS-51系統(tǒng)中真正的軟件陷阱由以下3條指令構(gòu)成:
NOP
NOP
LJMPERR
軟件陷阱可安排在未使用的中斷向量區(qū)、未使用的大片ROM空間以及數(shù)據(jù)表格前后等正常程序執(zhí)行不到的地方,故不影響程序的執(zhí)行效率。采用硬件看門狗后,在程序存儲器空間容量富余情況下,可在每條跳轉(zhuǎn)指令(當(dāng)存儲器容量有限時,為減少程序長度可在關(guān)鍵跳轉(zhuǎn)指令)后,插入軟件陷阱指令序列,如:
NOP
NOP ;冗余指令,防止跳轉(zhuǎn)指令被拆分
SJMPNEONE ;在短跳轉(zhuǎn)指令后,加軟件陷阱
NOP
NOP
CLREA ;關(guān)閉中斷,進(jìn)入死循環(huán)
;LJMPERR ;可選的錯誤處理
SJMP$
……
NOP
NOP ;冗余指令,防止跳轉(zhuǎn)指令被拆分
LJMPSTART ;在長跳轉(zhuǎn)指令后,加軟件陷阱
NOP
NOP
CLREA ;關(guān)閉中斷后,進(jìn)入死循環(huán)
;LJMPERR ;可選的錯誤處理
SJMP$
在子程序返回指令RET、中斷返回指令RETI后插入的軟件陷阱
RET
RET ;重復(fù)的冗余指令,避免其上多字節(jié)指令被拆分而跳過
RET ;在子程序返回指令后,加軟件陷阱
CLREA ;關(guān)閉中斷后,進(jìn)入死循環(huán)
;LJMPERR ;可選的錯誤處理
SJMP$
在數(shù)據(jù)表格前、后插入軟件陷阱:
ORG××××
NOP ;位于數(shù)據(jù)表格前的軟件陷阱
NOP
CLREA ;關(guān)閉中斷,進(jìn)入死循環(huán)
;LJMPERR ;可選的錯誤處理
SJMP$
DATATAB:
DB23H,…… ;數(shù)據(jù)表格
NOP ;位于數(shù)據(jù)表格后的軟件陷阱
NOP
CLREA ;關(guān)閉中斷,進(jìn)入死循環(huán)
;LJMPERR ;可選的錯誤處理
SJMP$一旦PC跑飛,掉入陷阱內(nèi),可根據(jù)情況執(zhí)行相應(yīng)的錯誤處理,如保護(hù)數(shù)據(jù)、設(shè)置復(fù)位標(biāo)志后,進(jìn)入循環(huán)等待狀態(tài)。由于不能執(zhí)行看門狗計數(shù)器清0操作,導(dǎo)致看門狗計數(shù)器溢出,強(qiáng)迫系統(tǒng)進(jìn)入復(fù)位狀態(tài)。
對于具有軟件復(fù)位功能的MCU芯片,如LPC76×、LPC900系列、SST89E5XRD2系列等,掉入軟件陷阱,執(zhí)行錯誤處理后,無須等待,即刻觸發(fā)軟件復(fù)位操作,如下所示:
NOP
NOP
CLREA ;關(guān)閉中斷,進(jìn)入死循環(huán)
;LJMPERR ;可選的錯誤處理
MOVAUXR1,#08H ;使AUXR1.3,即SRST置1,強(qiáng)迫系統(tǒng)復(fù)位(對LPC900系列)
;而對于SST89E5XRD2系列可通過“ORLSFCF,#02H”指令
;觸發(fā)軟件復(fù)位操作
這種傳統(tǒng)的軟件陷阱對PC在模塊內(nèi)“跑飛”、模塊間“跑飛”均有效,但它攔截的成功率并不高,原因是程序中無條件跳轉(zhuǎn)指令、子程序或中斷返回指令的數(shù)目畢竟有限;此外由于MCU存儲空間的限制,未必能在每一無條件跳轉(zhuǎn)指令后插入軟件陷阱指令系列,換句話說陷阱的個數(shù)有限。三是上述軟件陷阱的尺寸太小,僅由幾個字節(jié)組成,結(jié)果“跑飛”的PC剛好落入數(shù)量有限的小陷阱中的概率不大。為此,還需使用下面介紹的模塊間攔截方式來判別PC是否已“跑飛”。
2.遠(yuǎn)程攔截技術(shù)
對于采用模塊化程序結(jié)構(gòu)的MCU控制系統(tǒng)程序,可采用具有遠(yuǎn)程攔截功能的模塊結(jié)構(gòu)檢測PC是否從其他模塊“飛”入。
1)攔截原理
進(jìn)入每一模塊前,先保存模塊入口地址,然后再執(zhí)行模塊實體內(nèi)的指令系列。離開時算出模塊出口地址與入口地址的差,并與模塊長度比較。如果相同,則說明進(jìn)入本模塊時PC未“跑飛”,可復(fù)位看門狗定時器(簡稱喂狗),并按正常步驟退出;反之,說明PC指針異常飛入,可根據(jù)需要執(zhí)行錯誤處理,如數(shù)據(jù)、系統(tǒng)狀態(tài)保護(hù)等操作后,再執(zhí)行軟件復(fù)位或關(guān)閉中斷后執(zhí)行循環(huán)指令,等待看門狗計數(shù)器溢出,強(qiáng)迫系統(tǒng)復(fù)位,如圖7-4所示。
圖7-4遠(yuǎn)程攔截判別流程圖
2)模塊結(jié)構(gòu)舉例
下面分別給出具有遠(yuǎn)程攔截功能的幾種典型模塊結(jié)構(gòu)。
(1)通過堆棧保護(hù)入口地址的模塊結(jié)構(gòu)。當(dāng)堆棧深度較大時,可將模塊入口地址壓入堆棧保存,即可獲得適用于主程序、子程序以及中斷服務(wù)程序等通用的模塊結(jié)構(gòu),如下所示:
PROCMod_name ;模塊名
Mod_name:
IN_ADR: ;模塊入口地址標(biāo)號
;PUSHACC ;ACC壓入堆棧(主程序模塊、主程序內(nèi)子程序模塊一般無需該 ;指令)
;*主程序模塊、主程序內(nèi)子程序模塊不一定需要如下兩條現(xiàn)場保護(hù)指令
;PUSHB
;PUSHPSW ;對中斷服務(wù)程序,要保護(hù)PSW,因為在求地址差時,改寫標(biāo)
;志位Cy
MOVA,#HIGH(IN_ADR) ;取模塊入口地址高8位
PUSHACC ;壓入堆棧保存
MOVA,#LOW(IN_ADR) ;取模塊入口地址低8位
PUSHACC ;壓入堆棧保存
;模塊實體
OUT_ADR: ;模塊出口地址標(biāo)號
CLRC ;增加2條冗余指令,防止其上多字節(jié)指令被拆分后跳過
CLRC
CLRC
MOVA,#LOW(OUT_ADR) ;取模塊出口地址低8位
POPB ;取出存放在堆棧中模塊入口地址低8位
SUBBA,B ;減模塊入口地址低8位
CJNEA,#(LOW(OUT_ADR)-LOW(IN_ADR)),Pr_ERROR ;與模塊長度低8位比較,
;不等錯
MOVA,#HIGH(OUT_ADR) ;取模塊出口地址高8位
POPB ;取出存放在堆棧中模塊入口地址高8位
SUBBA,B ;減模塊入口地址高8位
CJNEA,#(HIGH(OUT_ADR)-HIGH(IN_ADR)),Pr_ERROR ;與模塊長度高8位比較,
;不等錯
;正確,清看門狗定時器;*主程序模塊、主程序內(nèi)的子程序模塊不一定需要如下三條現(xiàn)場恢復(fù)指令
;POPPSW
;POPB
;POPACC
RETI ;根據(jù)模塊類型,選擇相應(yīng)的退出方式
RETI ;對于中斷選擇RETI、對于子程序選擇RET、對于主程序選擇
;LJMP
RETI ;冗余指令
Pr_ERROR:
;進(jìn)入軟件陷阱
NOP
NOP
;LJMPPRC_ERROR ;錯誤處理與數(shù)據(jù)恢復(fù)(可選)
ORLSFCF,#02H ;
使SFCF.1,即SWR位置1,觸發(fā)軟件復(fù)位(對于SST89E5XRD2
;系列)
END在上述程序結(jié)構(gòu)中,如果模塊長度用補(bǔ)碼形式(入口地址減出口地址)表示,則資源占用率會降低一些,同時還能省去3條指令,提高了系統(tǒng)的效率。補(bǔ)碼形式表示的模塊結(jié)構(gòu)如下所示:
PROCMod_name ;模塊名
Mod_name:
IN_ADR: ;模塊入口地址標(biāo)號
;*主程序模塊、主程序內(nèi)子程序模塊不一定需要如下現(xiàn)場保護(hù)指令
;PUSHPSW ;對中斷服務(wù)程序,要保護(hù)PSW,因為在求地址差時,改寫標(biāo) ;志位Cy
;PUSHACC ;Acc壓入堆棧(主程序模塊、主程序內(nèi)子程序模塊一般無需該
;指令)
MOVA,#HIGH(IN_ADR);取模塊入口地址高8位
PUSHACC ;壓入堆棧保存
MOVA,#LOW(IN_ADR) ;取模塊入口地址低8位
PUSHACC ;壓入堆棧保存
;模塊實體
OUT_ADR: ;模塊出口地址標(biāo)號
CLRC ;增加2條冗余指令,防止其上多字節(jié)指令被拆分后跳過
CLRC
CLRC
POPACC ;取存放在堆棧中模塊入口地址低8位
SUBBA,#LOW(OUT_ADR) ;減模塊出口地址低8位
CJNEA,#(LOW(IN_ADR)-LOW(OUT_ADR)),Pr_ERROR ;與模塊長度低8位補(bǔ)碼比較,
;不等錯
POPACC ;取存放在堆棧中模塊入口地址高8位
SUBBA,#HIGH(OUT_ADR) ;減模塊出口地址高8位
CJNEA,#(HIGH(IN_ADR)-HIGH(OUT_ADR)),Pr_ERROR ;與模塊長度高8位補(bǔ)碼 ;比較,不等錯
;正確,清看門狗定時器
;*主程序模塊、主程序內(nèi)的子程序模塊不一定需要如下兩條現(xiàn)場恢復(fù)指令
;POPACC
;POPPSW
RETI ;根據(jù)模塊類型,選擇相應(yīng)的退出方式
RETI ;對于中斷選擇RETI、對于子程序選擇RET、對于主程
;序選擇LJMP
RETI ;冗余指令
Pr_ERROR:
;進(jìn)入軟件陷阱
NOP
NOP
;LJMPPRC_ERROR ;錯誤處理與數(shù)據(jù)恢復(fù)(可選)
ORLSFCF,#02H ;使SFCF.1,即SWR位置1,觸發(fā)軟件復(fù)位(對于
;SST89E5XRD2系列)
END該結(jié)構(gòu)模塊不僅適用于子程序、中斷服務(wù)程序,也適用于多任務(wù)程序結(jié)構(gòu)中的任務(wù)模塊、任務(wù)內(nèi)的作業(yè)模塊;采用過程定義偽指令“Proc…End”后,每一模塊入口地址、出口地址標(biāo)號可重復(fù)使用,指令完全相同;它不僅適用于CISC指令系統(tǒng),也適用于RISC指令系統(tǒng),通用性強(qiáng)。
唯一缺點是捕獲指令多了點,對系統(tǒng)運(yùn)行效率有一定的影響,不過當(dāng)模塊代碼規(guī)模較大時,效率降低并不明顯(因此不推薦在代碼長度短或?qū)崟r性要求高的模塊中采用);所需堆棧深度較大,尤其是嵌套層次較多時要特別注意堆棧溢出問題。為此,避免在層次較低的子程序模塊、高優(yōu)先級中斷服務(wù)程序中使用。
(2)直接保護(hù)入口地址的模塊結(jié)構(gòu)。當(dāng)堆棧深度有限時,可直接將模塊入口地址保存在內(nèi)部RAM單元中,模塊結(jié)構(gòu)如下所示:
Pr_INADRHDATAnnH ;程序頭定義的模塊入口地址高8位
Pr_INADRLDATAmmH ;程序頭定義的模塊入口地址低8位
PROCMod_name ;模塊定義偽指令
Mod_name: ;模塊名(全局標(biāo)號)
IN_ADR: ;模塊入口地址標(biāo)號
MOVPr_INADRH,#HIGH(IN_ADR) ;保存模塊入口地址高8位
MOVPr_INADRL,#LOW(IN_ADR) ;保存模塊入口地址低8位
……
;模塊實體
……
OUT_ADR: ;模塊出口地址標(biāo)號
CLRC ;2條冗余“CLRC”指令
CLRC
CLRC
MOVA,#LOW(OUT_ADR) ;取模塊出口地址低8位
SUBBA,Pr_INADRL ;減模塊入口地址低8位
CJNEA,#(LOW(OUT_ADR)-LOW(IN_ADR)),ERROR;與模塊長度低8位比較,不等錯
MOVA,#HIGH(OUT_ADR) ;取模塊出口地址高8位
SUBBA,Pr_INADRH ;減模塊入口地址高8位
CJNEA,#(HIGH(OUT_ADR)-HIGH(IN_ADR)),ERROR ;與模塊長度高8位比較,不等錯
;正確,清看門狗定時器
NOP
NOP
SETBWDT ;SST89E5XRD2系列喂狗指令
;返回或跳轉(zhuǎn)
;RET
;RET ;增加1~2條冗余指令
;RET ;如果是子程序,執(zhí)行RET指令返回
;RETI ;如果是中斷服務(wù)程序,執(zhí)行RETI指令返回 ;LJMPnnnn ;如果跳轉(zhuǎn),則執(zhí)行LJMP指令,轉(zhuǎn)入指定標(biāo)號
ERROR:
;進(jìn)入軟件陷阱
NOP
NOP
;LJMPPRC_ERROR ;錯誤處理與數(shù)據(jù)恢復(fù)(可選)
ORLSFCF,#02H ;使SFCF.1,即SWR位置1,觸發(fā)軟件復(fù)位(對于 ;SST89E5XRD2系列)
END需要注意的是:直接保護(hù)模塊入口地址攔截方式不支持嵌套操作,即在主程序模塊中使用后,就不能在子程序模塊、中斷服務(wù)程序模塊中使用;在低優(yōu)先級中斷服務(wù)程序中使用后,就不能在高優(yōu)先級中斷服務(wù)程序中使用,除非每一優(yōu)先級使用不同的內(nèi)部RAM單元存放各自的入口地址(由于同優(yōu)先級中斷不能嵌套,因此同優(yōu)先級中斷服務(wù)程序可以使用同一單元記錄入口地址)。
(3)僅記錄模塊入口地址低8位的模塊結(jié)構(gòu)。當(dāng)內(nèi)部RAM資源有限(沒有更多單元存放模塊入口地址高位)、堆棧深度也有限時,也可以僅保存模塊入口的低8位,離開時僅計算模塊出口地址與入口地址低8位的差,并與模塊長度低8位比較??梢?,這一方式是上述兩種結(jié)構(gòu)模塊的簡化,盡管理論上攔截的準(zhǔn)確性有所下降,但實踐表明效果也不錯,因為應(yīng)用程序中兩模塊低位地址差相同的概率不大。
3)攔截效果
遠(yuǎn)程攔截結(jié)構(gòu)模塊能有效攔截模塊間(遠(yuǎn)距離)“跑飛”現(xiàn)象。顯然,模塊規(guī)模越小,攔截的成功率就越高(為使攔截成功與效率之間取得一定的平衡,實踐表明模塊長度控制在0.5~1KB為宜)。它不僅能準(zhǔn)確感知PC是否正常進(jìn)入本模塊,還可以從模塊入口地址單元中判斷出從哪一模塊飛入,為失控后的系統(tǒng)恢復(fù)提供了有價值的線索(如可根據(jù)模塊功能,將模塊入口地址裝入PC,重新執(zhí)行跳飛的模塊)。我們曾將這一檢測方式應(yīng)用于廣州某安防設(shè)備生產(chǎn)商委托研發(fā)的某型號報警主機(jī)中,取得了良好的效果。這種具有遠(yuǎn)程攔截功能的模塊程序經(jīng)編譯后,模塊入口、出口地址固定,還能有效地阻止了非授權(quán)用戶通過反匯編方式在模塊內(nèi)添加(或刪除)指令,一定程度上增加了代碼的安全性。7.5.4提高信號輸入/輸出的可靠性
1.提高電平(變化緩慢)信號輸入/輸出的可靠性
(1)提高輸入信號的可靠性。讀取變化緩慢的電平信號,如判別某一按鍵是否被按下、交流電源是否存在時,可采用“定時讀取、多數(shù)判決”方式來消除寄生的低頻與高頻干擾。
為消除低頻干擾可采用定時讀取方法。每隔特定時間讀取輸入信號狀態(tài),并用3個寄存器位記錄最近3次獲取的狀態(tài)信息,然后根據(jù)狀態(tài)編碼確定輸入信號的當(dāng)前狀態(tài)。至于定時間隔大小取多少合適與輸入信號的性質(zhì)有關(guān),例如對于經(jīng)全波整流、電容濾波后的交流信號,根據(jù)全波整流、電容濾波輸出信號特征(周期為10ms),可每隔5ms讀一次輸入信號狀態(tài),于是最近3個狀態(tài)編碼含義為
111——交流存在;
110——交流可能不存在,但尚不能準(zhǔn)確判定;
100——交流不存在;
000——無交流;
001——可能屬于交流恢復(fù)狀態(tài);
011——交流恢復(fù);
010——正脈沖干擾,應(yīng)判定為000態(tài);
101——負(fù)脈沖干擾,也判定為111態(tài)。
為消除高頻干擾,定時時間到可用“3中取2”或“5中取3”方式代替“一讀”方式。假設(shè)交流輸入信號接P0.0引腳,則“3中取2”判別方式程序為
MOVC,P0.0
MOVACC.0,C ;一讀
MOVC,P0.0
MOVACC.1,C ;二讀
MOVC,P0.0
MOVACC.2,C ;三讀
ANLA,#07H ;僅保留b2~b0位狀態(tài)
CJNEA,#03H,NEXT1
;等于3,即011,應(yīng)判定為高電平,此時進(jìn)位標(biāo)志Cy=0
SJMPNEXT2
NEXT1:
CJNEA,#05H,NEXT2
NEXT2: ;僅用于根據(jù)比較結(jié)果設(shè)置進(jìn)位標(biāo)志Cy
;結(jié)果在進(jìn)位標(biāo)志Cy中,在3次連續(xù)讀操作中,如果讀到高電平次數(shù)大于低電平狀態(tài)時,Cy
;標(biāo)志為0,反之為1
(2)提高輸出信號的可靠性??刹捎蒙厦娼榻B的冗余指令方式,多次輸出同一數(shù)據(jù)的方法來避免因PC“跑飛”可能改變輸出信號的狀態(tài)。
2.模擬輸入通道抗干擾軟件方式
作用于模擬輸入通道上的干擾可采用數(shù)字濾波的方法來消除。如算術(shù)平均、滑動平均值、一階RC數(shù)字低通濾波法等(或去掉最大、最小值后求平均)。
7.6.1仿真器
1.仿真器種類
單片機(jī)仿真器也稱為單片機(jī)仿真開發(fā)器,是單片機(jī)開發(fā)的重要工具,種類很多。根據(jù)使用的仿真技術(shù),可將仿真器分為HOOKS仿真器和Bondout仿真器兩大類。
7.6系統(tǒng)調(diào)試與單片機(jī)開發(fā)工具基于Bondout仿真技術(shù)的仿真器使用專門設(shè)計的仿真芯片,能真實地仿真某一特定廠家、系列的單片機(jī)芯片,不占用硬件資源、仿真頻率高。
這類仿真器的缺點是通用性差,某一專用的仿真芯片只能仿真某一系列的單片機(jī)CPU,價格高,開發(fā)設(shè)備更新?lián)Q代速度慢,新單片機(jī)MCU芯片出現(xiàn)后,開發(fā)商才會根據(jù)市場需要設(shè)計配套的仿真芯片。以前國內(nèi)開發(fā)的普及型MCS-51仿真器大多采用價格低廉、僅支持標(biāo)準(zhǔn)MCS-51系列的仿真芯片;而支持增強(qiáng)型MCS-51或更高檔次CPU的專用仿真芯片價格昂貴,這類仿真器一般用戶很難接受。
HOOKS仿真技術(shù)由Philips公司開發(fā),該技術(shù)的核心是通過分時復(fù)用I/O引腳方式來重構(gòu)MCS-51系列CPU的P0、P2口,使支持HOOKS技術(shù)的MCS-51芯片進(jìn)入HOOKS仿真狀態(tài)后,通過硬件將復(fù)用的P0、P2口擴(kuò)展為獨立的仿真總線及用戶P0、P2口。該方法的優(yōu)點是無須專用的仿真芯片,如用普通的51系列即可進(jìn)行相同芯片(或硬件資源兼容芯片)仿真,因此成本低,只要實時加入新型MCU數(shù)據(jù)資料,換上相應(yīng)MCU即可仿真新的MCU芯片,仿真開發(fā)設(shè)備更新速度快,投入少。但HOOKS仿真器通過硬件、軟件模擬MCS-51系列芯片的P0、P2口,與實際CPU的P0、P2口尚有區(qū)別(如I/O負(fù)載能力),仿真頻率也不能太高。
目前國內(nèi)仿真器開發(fā)商通過授權(quán)、技術(shù)轉(zhuǎn)讓方式從Philips公司引進(jìn)了HOOKS仿真技術(shù),開發(fā)了基于HOOKS仿真技術(shù)的仿真器,如廣州周立功單片機(jī)發(fā)展有限公司的TKS-HOOKS系列等。這些仿真器適應(yīng)性廣,通過更改仿真頭內(nèi)的MCU芯片即可仿真不同系列的MCU。例如TKS-HOOKS系列內(nèi)的TKS-668仿真器,更換仿真頭內(nèi)的MCU后,可仿真Philips公司的8×C5×、8×C5××2、P89C51RX等系列芯片。
此外,根據(jù)仿真器適應(yīng)性,可把仿真器分為專用仿真器和通用仿真器。專用仿真器只能仿真某一系列的CPU,如南京偉福公司的K51系列和E51系列仿真器只能仿真MCS-51及兼容芯片,專用仿真器最大特點是價格低廉。通用仿真器適應(yīng)性強(qiáng),更換不同的仿真頭,即可仿真不同種類的CPU,如南京偉福公司的V8系列、E6000系列等,更換不同種類仿真頭后即可仿真IntelMCS-51及兼容CPU、Philips公司增強(qiáng)型80C51內(nèi)核CPU(包括8×C5×系列、P89C51RX系列、552系列、592系列、76X系列、LPC900系列)以及Microchip公司的PIC系列CPU,其中V8系列還可以仿真32位ARM芯片,通用性很強(qiáng)。通用仿真器的價格高,一次性投入較大,但與仿真器配套的各系列仿真頭價格較低,更重要的是可在同一仿真開發(fā)環(huán)境下開發(fā)不同系列、型號的MCU應(yīng)用系統(tǒng),源程序的編輯、編譯、調(diào)試操作相似或相同,效率高,也是物有所值。
2.仿真器的選擇
一般某一型號的仿真器只適用于開發(fā)特定系列、型號的單片機(jī)。因此選擇仿真器時,首先要了解該仿真器能仿真何種類型的單片機(jī)CPU。
仿真器功能越強(qiáng),程序設(shè)計、調(diào)試的效率就越高,理想的單片機(jī)開發(fā)系統(tǒng)必須具有如下功能:
(1)不占用硬件資源。一些低檔的MCS-51仿真器(仿真頭)只能將P0、P2口作為總線使用,不能作為I/O口使用。
(2)可隨機(jī)瀏覽、修改內(nèi)部RAM、特殊功能寄存器內(nèi)容。
(3)可瀏覽、編輯程序存儲器各存儲單元內(nèi)容。
(4)可隨
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 酒店前臺接待員工作總結(jié)
- 高校教研工作的持續(xù)改進(jìn)與創(chuàng)新
- 金融科技行業(yè)技術(shù)職位總結(jié)
- 互娛行業(yè)花絮分享培訓(xùn)心得
- 有效規(guī)劃財務(wù)部年終工作總結(jié)
- 人機(jī)界面設(shè)計師界面設(shè)計交互設(shè)計
- 高危行業(yè)安全監(jiān)管工作方案計劃
- 設(shè)備維修維護(hù)合同范本完整版
- 司法行業(yè)審判培訓(xùn)
- 服裝店前臺接待工作總結(jié)
- 2024年營銷部工作人員安全生產(chǎn)責(zé)任制(2篇)
- ISO 56001-2024《創(chuàng)新管理體系-要求》專業(yè)解讀與應(yīng)用實踐指導(dǎo)材料之3:4組織環(huán)境-4.1理解組織及其環(huán)境(雷澤佳編制-2025B0)
- 2024年國家低壓電工電工作業(yè)證理論考試題庫(含答案)
- 2025年上半年山西呂梁市柳林縣招聘畢業(yè)生70人到村(社區(qū))工作(第二批)重點基礎(chǔ)提升(共500題)附帶答案詳解
- 2024年非煤礦山年終安全生產(chǎn)工作總結(jié)
- (正式版)SHT 3046-2024 石油化工立式圓筒形鋼制焊接儲罐設(shè)計規(guī)范
- 游戲綜合YY頻道設(shè)計模板
- 幼兒園班級安全教育活動計劃表
- ppt模板:創(chuàng)意中國風(fēng)古風(fēng)水墨山水通用模板課件
- 紡紗學(xué)-ppt課件
- (高清版)嚴(yán)寒和寒冷地區(qū)居住建筑節(jié)能設(shè)計標(biāo)準(zhǔn)JGJ26-2018
評論
0/150
提交評論