A. 學習單片機用什麼軟體
keil最流行
單片機開發中除必要的硬體外,同樣離不開軟體,我們寫的匯編語言源程序要變為CPU可以執行的機器碼有兩種方法,一種是手工匯編,另一種是機器匯編,目前已極少使用手工匯編的方法了。機器匯編是通過匯編軟體將源程序變為機器碼,用於MCS-51單片機的匯編軟體有早期的A51,隨著單片機開發技術的不斷發展,從普遍使用匯編語言到逐漸使用高級語言開發,單片機的開發軟體也在不斷發展,Keil軟體是目前最流行開發MCS-51系列單片機的軟體,這從近年來各模擬機廠商紛紛宣布全面支持Keil即可看出。Keil提供了包括C編譯器、宏匯編、連接器、庫管理和一個功能強大的模擬調試器等在內的完整開發方案,通過一個集成開發環境(uVision)將這些部份組合在一起。運行Keil軟體需要Pentium或以上的CPU,16MB或更多RAM、20M以上空閑的硬碟空間、WIN98、NT、WIN2000、WINXP等操作系統。掌握這一軟體的使用對於使用51系列單片機的愛好者來說是十分必要的,如果你使用C語言編程,那麼Keil幾乎就是你的不二之選(目前在國內你只能買到該軟體、而你買的模擬機也很可能只支持該軟體),即使不使用C語言而僅用匯編語言編程,其方便易用的集成環境、強大的軟體模擬調試工具也會令你事半功倍。
目前最新的版本是keil uv3,可下載破解版本,否則有容量限制。
B. 單片機系統軟體抗干擾方法
在提高硬體系統抗干擾能力的同時 軟體抗干擾以其設計靈活 節省硬體資源 可靠性好越來越受到重視 下面以MCS 單片機系統為例 對微機系統軟體抗干擾方法進行研究
軟體抗干擾方法的研究
在工程實踐中 軟體抗干擾研究的內容主要是 一 消除模擬輸入信號的嗓聲(如數字濾波技術) 二 程序運行混亂時使程序重入正軌的方法 本文針對後者提出了幾種有效的軟體抗干擾方法
指令冗餘
CPU取指令過程是先取操作碼 再取操作數 當PC受干擾出現錯誤 程序便脫離正常軌道 亂飛 當亂飛到某雙位元組指令 若取指令時刻落在操作數上 誤將操作數當作操作碼 程序將出錯 若 飛 到了三位元組指令 出錯機率更大
在關鍵地方人為插入一些單位元組指令 或將有效單位元組指令重寫稱為指令冗餘 通常是在雙位元組指令和三位元組指令後插入兩個位元組以上的NOP 這樣即使亂飛程序飛到操作數上 由於空操作指令NOP的存在 避免了後面的指令被當作操作數執行 程序自動納入正軌
此外 對系統流向起重要作用的指令如RET RETI LCALL LJMP JC等指令之前插入兩條NOP 也可將亂飛程序納入正軌 確保這些重要指令的執行
攔截技術
所謂攔截 是指將亂飛的程序引向指定位置 再進行出錯處理 通常用軟體陷阱來攔截亂飛的程序 因此先要合理設計陷阱 其次要將陷阱安排在適當的位置
軟體陷阱的設計
當亂飛程序進入非程序區 冗餘指令便無法起作用 通過軟體陷阱 攔截亂飛程序 將其引向指定位置 再進行出錯處理 軟體陷阱是指用來將捕獲的亂飛程序引向復位入口地址 H的指令 通常在EPROM中非程序區填入以下指令作為軟體陷阱
NOP
NOP
LJMP H
其機器碼為
陷阱的安排
通常在程序中未使用的EPROM空間填 最後一條應填入 當亂飛程序落到此區 即可自動入軌 在用戶程序區各模塊之間的空餘單元也可填入陷阱指令 當使用的中斷因干擾而開放時 在對應的中斷服務程序中設置軟體陷阱 能及時捕獲錯誤的中斷 如某應用系統雖未用到外部中斷 外部中斷 的中斷服務程序可為如下形式
NOP
NOP
RETI
返回指令可用 RETI 也可用 LJMP H 如果故障診斷程序與系統自恢復程序的設計可靠 完善 用 LJMP H 作返回指令可直接進入故障診斷程序 盡早地處理故障並恢復程序的運行
考慮到程序存貯器的容量 軟體陷阱一般 K空間有 個就可以進行有效攔截
軟體 看門狗 技術
若失控的程序進入 死循環 通常採用 看門狗 技術使程序脫離 死循環 通過不斷檢測程序循環運行時間 若發現程序循環時間超過最大循環運行時間 則認為系統陷入 死循環 需進行出錯處理
看門狗 技術可由硬體實現 也可由軟體實現 在工業應用中 嚴重的干擾有時會破壞中斷方式控制字 關閉中斷 則系統無法定時 喂狗 硬體看門狗電路失效 而軟體看門狗可有效地解決這類問題
筆者在實際應用中 採用環形中斷監視系統 用定時器T 監視定時器T 用定時器T 監視主程序 主程序監視定時器T 採用這種環形結構的軟體 看門狗 具有良好的抗干擾性能 大大提高了系統可靠性 對於需經常使用T 定時器進行串口通訊的測控系統 則定時器T 不能進行中斷 可改由串口中斷進行監控(如果用的是MCS 系列單片機 也可用T 代替T 進行監視) 這種軟體 看門狗 監視原理是 在主程序 T 中斷服務程序 T 中斷服務程序中各設一運行觀測變數 假設為MWatch T Watch T Watch 主程序每循環一次 MWatch加1 同樣T T 中斷服務程序執行一次 T Watch T Watch加1 在T 中斷服務程序中通過檢測T Watch的變化情況判定T 運行是否正常 在T 中斷服務程序中檢測MWatch的變化情況判定主程序是否正常運行 在主程序中通過檢測T Watch的變化情況判別T 是否正常工作 若檢測到某觀測變數變化不正常 比如應當加 而未加 則轉到出錯處理程序作排除故障處理 當然 對主程序最大循環周期 定時器T 和T 定時周期應予以全盤合理考慮 限於篇幅不贅述
系統故障處理 自恢復程序的設計
單片機系統因干擾復位或掉電後復位均屬非正常復位 應進行故障診斷並能自動恢復非正常復位前的狀態
非正常復位的識別
程序的執行總是從 H開始 導致程序從 H開始執行有四種可能 一 系統開機上電復位 二 軟體故障復位 三 看門狗超時未喂狗硬體復位 四 任務正在執行中掉電後來電復位 四種情況中除第一種情況外均屬非正常復位 需加以識別
硬體復位與軟體復位的識別
此處硬體復位指開機復位與看門狗復位 硬體復位對寄存器有影響 如復位後PC= H SP= H PSW= H等 而軟體復位則對SP SPW無影響 故對於微機測控系統 當程序正常運行時 將SP設置地址大於 H 或者將PSW的第 位用戶標志位在系統正常運行時設為 那麼系統復位時只需檢測PSW 標志位或SP值便可判此是否硬體復位 圖 是採用PSW 作上電標志位判別硬 軟體復位的程序流程圖
圖 硬 軟體復位識別流程圖
此外 由於硬體復位時片內RAM狀態是隨機的 而軟體復位片內RAM則可保持復位前狀態 因此可選取片內某一個或兩個單元作為上電標志 設 H用來做上電標志 上電標志字為 H 若系統復位後 H單元內容不等於 H 則認為是硬體復位 否則認為是軟體復位 轉向出錯處理 若用兩個單元作上電標志 則這種判別方法的可靠性更高
開機復位與看門狗故障復位的識別
開機復位與看門狗故障復位因同屬硬體復位 所以要想予以正確識別 一般要藉助非易失性RAM或者EEROM 當系統正常運行時 設置一可掉電保護的觀測單元 當系統正常運行時 在定時喂狗的中斷服務程序中使該觀測單元保持正常值(設為 AAH) 而在主程中將該單元清零 因觀測單元掉電可保護 則開機時通過檢測該單元是否為正常值可判斷是否看門狗復位
正常開機復位與非正常開機復位的識別
識別測控系統中因意外情況如系統掉電等情況引起的開機復位與正常開機復位 對於過程式控制制系統尤為重要 如某以時間為控制標準的測控系統 完成一次測控任務需 小時 在已執行測控 分鍾的情況下 系統電壓異常引起復位 此時若系統復位後又從頭開始進行測控則會造成不必要的時間消耗 因此可通過一監測單元對當前系統的運行狀態 系統時間予以監控 將控制過程分解為若干步或若干時間段 每執行完一步或每運行一個時間段則對監測單元置為關機允許值 不同的任務或任務的不同階段有不同的值 若系統正在進行測控任務或正在執某時間段 則將監測單元置為非正常關機值 那麼系統復位後可據此單元判系統原來的運行狀態 並跳到出錯處理程序中恢復系統原運行狀態
非正常復位後系統自恢復運行的程序設計
對順序要求嚴格的一些過程式控制制系統 系統非正常復位否 一般都要求從失控的那一個模塊或任務恢復運行 所以測控系統要作好重要數據單元 參數的備份 如系統運行狀態 系統的進程值 當前輸入 輸出的值 當前時鍾值 觀測單元值等 這些數據既要定時備份 同時若有修改也應立即予以備份
當在已判別出系統非正常復位的情況下 先要恢復一些必要的系統數據 如顯示模塊的初始化 片外擴展晶元的初始化等 其次再對測控系統的系統狀態 運行參數等予以恢復 包括顯示界面等的恢復 之後再把復位前的任務 參數 運行時間等恢復 再進入系統運行狀態
應當說明的是 真實地恢復系統的運行狀態需 要極為細致地對系統的重要數據予以備份 並加以數據可靠性檢查 以保證恢復的數據的可靠性
其次 對多任務 多進程測控系統 數據的恢復需考慮恢復的次序問題 筆者實際應用的數據恢復過程流程圖如圖 所示
圖 系統自恢復程序流程圖
圖中恢復系統基本數據是指取出備份的數據覆蓋當前的系統數據 系統基本初始化是指對晶元 顯示 輸入輸出方式等進行初始化 要注意輸入輸出的初始化不應造成誤動作 而復位前任務的初始化是指任務的執行狀態 運行時間等
結束語
lishixin/Article/program/qrs/201311/11074
C. 單片機抗干擾
數字電路、單片機的抗干擾設計
在電子系統設計中,為了少走彎路和節省時間,應充分考慮並滿足抗干擾性 的要求,避免在
設計完成後再去進行抗干擾的補救措施。形成干擾的基本要素有三個:
(1)干擾源,指產生干擾的元件、設備或信號,用數學語言描述如下:/dt, di/dt大的地
方就是干擾源。如:雷電、繼電器、可控硅、電機、高頻時鍾等都可 能成為干擾源。
(2)傳播路徑,指干擾從干擾源傳播到敏感器件的通路或媒介。典型的干擾傳 播路徑是通過
導線的傳導和空間的輻射。
(3)敏感器件,指容易被干擾的對象。如:A/D、D/A變換器,單片機,數字IC, 弱信號放大
器等。
抗干擾設計的基本原則是:抑制干擾源,切斷干擾傳播路徑,提高敏感器件的 抗干擾性能。
(類似於傳染病的預防)
1 抑制干擾源
抑制干擾源就是盡可能的減小干擾源的/dt,di/dt。這是抗干擾設計中最優 先考慮和最重要的原則,常常會起到事半功倍的效果。 減小干擾源的/dt主要是通過在干擾源兩端並聯電容來實現。減小干擾源的di/dt則是在干擾源迴路串聯電感或電阻以及增加續流二極體來實現。
抑制干擾源的常用措施如下:
(1)繼電器線圈增加續流二極體,消除斷開線圈時產生的反電動勢干擾。僅加 續流二極體會使繼電器的斷開時間滯後,增加穩壓二極體後繼電器在單位時間內可動作更多的次數。
(2)在繼電器接點兩端並接火花抑制電路(一般是RC串聯電路,電阻一般選幾K 到幾十K,電容選0.01uF),減小電火花影響。
(3)給電機加濾波電路,注意電容、電感引線要盡量短。
(4)電路板上每個IC要並接一個0.01μF~0.1μF高頻電容,以減小IC對電源的 影響。注意高頻電容的布線,連線應靠近電源端並盡量粗短,否則,等於增大了電容的等效串聯電阻,會影響濾波效果。
(5)布線時避免90度折線,減少高頻雜訊發射。
(6)可控硅兩端並接RC抑制電路,減小可控硅產生的雜訊(這個雜訊嚴重時可能會把可控硅擊穿的)。
按干擾的傳播路徑可分為傳導干擾和輻射干擾兩類。
所謂傳導干擾是指通過導線傳播到敏感器件的干擾。高頻干擾雜訊和 有用信號的頻帶不同,可以通過在導線上增加濾波器的方法切斷高頻干擾雜訊的傳播,有時也可加隔離光耦來解決。電源雜訊的危害最大, 要特別注意處理。所謂輻射干擾是指通過空間輻射傳播到敏感器件的干擾。 一般的解決方法是增加干擾源與敏感器件的距離,用地線把它們隔離和在敏感器件上加蔽罩。
2 切斷干擾傳播路徑的常用措施如下:
(1)充分考慮電源對單片機的影響。電源做得好,整個電路的抗干擾就解決了一大半。許多單片機對電源雜訊很敏感, 要給單片機電源加濾波電路或穩壓器,以減小電源雜訊對單片機的干擾。比如,可以利用磁珠和電容組成π形濾波電路,當然條件要求不高時也可用100Ω電阻代替磁珠。
(2)如果單片機的I/O口用來控制電機等雜訊器件,在I/O口與雜訊源之間應加隔離(增加π形濾波電路)。 控制電機等雜訊器件,在I/O口與雜訊源之間應加隔離(增加π形濾波電路)。
(3)注意晶振布線。晶振與單片機引腳盡量靠近,用地線把時鍾區隔離起來,晶振外殼接地並固定。此措施可解決許多疑難問題。
(4)電路板合理分區,如強、弱信號,數字、模擬信號。盡可能把干擾源 (如電機,繼電器)與敏感元件(如單片機)遠離。
(5)用地線把數字區與模擬區隔離,數字地與模擬地要分離,最後在一點接於電源地。A/D、D/A晶元布線也以此為原則,廠家分配A/D、D/A晶元 引腳排列時已考慮此要求。
(6)單片機和大功率器件的地線要單獨接地,以減小相互干擾。 大功率器件盡可能放在電路板邊緣。
(7)在單片機I/O口,電源線,電路板連接線等關鍵地方使用抗干擾元件 如磁珠、磁環、電源濾波器,屏蔽罩,可顯著提高電路的抗干擾性能。
3 提高敏感器件的抗干擾性能
提高敏感器件的抗干擾性能是指從敏感器件這邊考慮盡量減少對干擾雜訊 的拾取,以及從不正常狀態盡快恢復的方法。
提高敏感器件抗干擾性能的常用措施如下:
(1)布線時盡量減少迴路環的面積,以降低感應雜訊。
(2)布線時,電源線和地線要盡量粗。除減小壓降外,更重要的是降低耦合雜訊。
(3)對於單片機閑置的I/O口,不要懸空,要接地或接電源。其它IC的閑置 端在不改變系統邏輯的情況下接地或接電源。
(4)對單片機使用電源監控及看門狗電路,如:IMP809,IMP706,IMP813,X25043,X25045等,可大幅度提高整個電路的抗干擾性能。
(5)在速度能滿足要求的前提下,盡量降低單片機的晶振和選用低速數字 電路。
(6)IC器件盡量直接焊在電路板上,少用IC座。
我先說說我在這方面的經驗:
軟體方面:
1、我習慣於將不用的代碼空間全清成「0」,因為這等效於NOP,可在程序跑飛時歸位;
2、在跳轉指令前加幾個NOP,目的同1;
3、在無硬體WatchDog時可採用軟體模擬WatchDog,以監測程序的運行;
4、涉及處理外部器件參數調整或設置時,為防止外部器件因受干擾而出錯可定時將參數重新發送一遍,這樣可使外部器件盡快恢復正確;
5、通訊中的抗干擾,可加數據校驗位,可採取3取2或5取3策略;
6、在有通訊線時,如I^2C、三線制等,實際中我們發現將Data線、CLK線、INH線常態置為高,其抗干擾效果要好過置為低。
硬體方面:
1、地線、電源線的部線肯定重要了!
2、線路的去偶;
3、數、模地的分開;
4、每個數字元件在地與電源之間都要104電容;
5、在有繼電器的應用場合,尤其是大電流時,防繼電器觸點火花對電路的干擾,可在繼電器線圈間並一104和二極體,在觸點和常開端間接472電容,效果不錯!
6、為防I/O口的串擾,可將I/O口隔離,方法有二極體隔離、門電路隔離、光偶隔離、電磁隔離等;
7、當然多層板的抗干擾肯定好過單面板,但成本卻高了幾倍。
8、選擇一個抗干擾能力強的器件比之任何方法都有效,我想這點應該最重要。因為器件天生的不足是很難用外部方法去彌補的,但往往抗干擾能力強的就貴些,抗干擾能力差的就便宜,正如台灣的東東便宜但性能卻大打折扣一樣!主要看各位的應用場合.
印製電路板(PC8)是電子產品中電路元件和器件的支撐件.它提供電路元件和器件之間的電氣連接。隨著電於技術的飛速發展,PGB的密度越來越高。PCB設計的好壞對抗干擾能力影響很大.因此,在進行PCB設計時.必須遵守PCB設計的一般原則,並應符合抗干擾設計的要求。
D. 什麼是單片機在實際中有那些應用呢
單片機概述
1、何謂單片機 一台能夠工作的計算機要有這樣幾個部份構成:CPU(進行運算、控制)、RAM(數據存儲)、ROM(程序存儲)、輸入/輸出設備(例如:串列口、並行輸出口等)。在個人計算機上這些部份被分成若干塊晶元,安裝一個稱之為主板的印刷線路板上。而在單片機中,這些部份,全部被做到一塊集成電路晶元中了,所以就稱為單片(單晶元)機,而且有一些單片機中除了上述部份外,還集成了其它部份如A/D,D/A等。
E. 單片機程序編寫,模擬,調試常用的軟體有哪些
一般用KEIL,具備這三種功能融為一體。
F. 單片機開發要注意什麼
一、 如何提高C語言編程代碼的效率
鄧宏傑指出,用C語言進行單片機程序設計是單片機開發與應用的必然趨勢。他強調:「如果使用C編程時,要達到最高的效率,最好熟悉所使用的C編譯器。先試驗一下每條C語言編譯以後對應的匯編語言的語句行數,這樣就可以很明確的知道效率。在今後編程的時候,使用編譯效率最高的語句。」
他指出,各家的C編譯器都會有一定的差異,故編譯效率也會有所不同,優秀的嵌入式系統C編譯器代碼長度和執行時間僅比以匯編語言編寫的同樣功能程度長5-20%。他說:「對於復雜而開發時間緊的項目時,可以採用C語言,但前提是要求你對該MCU系統的C語言和C編譯器非常熟悉,特別要注意該C編譯系統所能支持的數據類型和演算法。雖然C語言是最普遍的一種高級語言,但由於不同的MCU廠家其C語言編譯系統是有所差別的,特別是在一些特殊功能模塊的操作上。所以如果對這些特性不了解,那麼調試起來問題就會很多,反而導致執行效率低於匯編語言。」
二、 如何減少程序中的bug?
對於如何減少程序的bug,鄧宏傑給出了一些建議,他指出系統運行中應考慮的超范圍管理參數有:
1.物理參數。這些參數主要是系統的輸入參數,它包括激勵參數、採集處理中的運行參數和處理結束的結果參數。合理設定這些邊界,將超出邊界的參數都視為非正常激勵或非正常回應進行出錯處理。
2.資源參數。這些參數主要是系統中的電路、器件、功能單元的資源,如記憶體容量、存儲單元長度、堆疊深度。在程式設計中,對資源參數不允許超范圍使用。
3.應用參數。這些應用參數常表現為一些單片機、功能單元的應用條件。如E2PROM的擦寫次數與資料存儲時間等應用參數界限。
4.過程參數。指系統運行中的有序變化的參數。
三、如何解決單片機的抗干擾性問題
鄧宏傑指出:防止干擾最有效的方法是去除干擾源、隔斷干擾路徑,但往往很難做到,所以只能看單片機抗干擾能力夠不夠強了。單片機干擾最常見的現象就是復位;至於程序跑飛,其實也可以用軟體陷阱和看門狗將程序拉回到復位狀態;所以單片機軟體抗干 擾最重要的是處理好復位狀態.一般單片機都會有一些標志寄存器,可以用來判斷復位原因;另外你也可以自己在RAM中埋一些標志。在每次程序復位時,通過判斷這些標志,可以判斷出不同的復位原因;還可以根據不同的標志直接跳到相應的程序。這樣可以使程序運行有連續性,用戶在使用時也不會察覺到程序被重新復位過。
四、 如何測試單片機系統的可靠性
有讀者希望了解用用什麼方法來測試單片機系統的可靠性,鄧宏傑指出:「當一個單片機系統設計完成,對於不同的單片機系統產品會有不同的測試項目和方法,但是有一些是必須測試的:
1.測試單片機軟體功能的完善性。這是針對所有單片機系統功能的測試,測試軟體是否寫的正確完整。
2.上電、掉電測試。在使用中用戶必然會遇到上電和掉電的情況,可以進行多次開關電源,測試單片機系統的可靠性。
3.老化測試。測試長時間工作情況下,單片機系統的可靠性。必要的話可以放置在高溫,高壓以及強電磁干擾的環境下測試。
4、ESD和EFT等測試。可以使用各種干擾模擬器來測試單片機系統的可靠性。例如使用靜電模擬器測試單片機系統的抗靜電ESD能力;使用突波雜訊模擬器進行快速脈沖抗干擾EFT測試等等。
鄧宏傑強調:「還可以模擬人為使用中,可能發生的破壞情況。例如用人體或者衣服織物故意摩擦單片機系統的接觸埠,由此測試抗靜電的能力。用大功率電鑽靠近單片機系統工作,由此測試抗電磁干擾能力等。」