① 單片機實驗注意事項
單片機開發規則與注意事項
隨著大規模集成電路技術的發展,單片微型計算機也隨之大發展,各種新穎的單片機層出不窮。單片機具有體積小、重量輕、應用靈活且價格低廉等特點,廣泛地應用於人類生活的各個領域,成為當今科學技術現代化不可缺少的重要工具。
單片機系統的開發融合了硬體和軟體的相關技術。要完成單片機系統的開發,用戶不僅需要掌握編程技術,還需要針對實際應用選擇合理的單片機晶元和外圍器件,以此為基礎,設計硬體電路。
正確估計單片機的能力,知道單片機能做什麼,最大程度的挖掘單片機的潛力對一個單片機系統設計者來說是至關重要的。單片機的能力的關鍵就在軟體設計者編寫的軟體上。只有充分地了解到單片機的能力,才不會做出「冗餘」的系統設計。而採用許多的外圍晶元來實現單片機能實現的功能。這樣做,即增加了系統成本,也可能會降低了系統的可靠性。
要完成單片機系統的開發,用戶不僅需要掌握編程技術,還需要針對實際應用選擇合理的單片機晶元和外圍器件,以此為基礎,設計硬體電路。
單片機開發規則與注意事項
設計滿足要求的最精簡的系統
正確估計單片機的能力,知道單片機能做什麼,最大程度的挖掘單片機的潛力對一個單片機系統設計者來說是至關重要的。單片機的能力的關鍵就在軟體設計者編寫的軟體上。只有充分地了解到單片機的能力,才不會做出「冗餘」的系統設計。而採用許多的外圍晶元來實現單片機能實現的功能。這樣做,即增加了系統成本,也可能會降低了系統的可靠性。
看門狗電路通常是一塊在有規律的時間間隔中進行更新的硬體。更新一般由單片機來完成,如果在一定間隔內沒能更新看門狗,那看門狗將產生復位信號,重新復位單片機。更新看門狗的具體形式多是給看門狗晶元相關引腳提供一個電平上升沿或讀寫它的某個寄存器。使用看門狗電路將在單片機發生故障進行死機狀態時,重新復位單片機,像EN8F154本身就帶有看門狗。
確定系統的復位信號可靠
一般在單片機的數據手冊(Datasheet)中都會提到該單片機需要的復位信號的要求。一般復位信號的寬度應為。復位電平的寬度和幅度都應滿足晶元的要求,並且要求保持穩定。還有特別重要的一點就是復位電平應與電源上電在同一時刻發生,即晶元一上電,復位信號就已產生。不然,由於沒有經過復位,單片機中的寄存器的值為隨機值,上電時就會按PC寄存器中的隨機內容開始運行程序,這樣很容易進行誤操作或進入死機狀態。
確定系統的初始化有效
系統中的晶元以及器件從上電開始到正常工作的狀態往往有一段時間,程序開始時延時一段時間,是讓系統中所有器件到達正常工作狀態。究竟延時多少才算合適?這取決於系統的各晶元中到達正常工作狀態的時間,通常以最慢的為准。一般來說,EN8F154的延時20-100毫秒已經足夠。對於系統中使用嵌入式MODEM等「慢熱」型的器件來說,則應更長。當然,這都需要在系統實際運行中進行調整。
當然,模擬是單片機開發過程中非常重要的一個環節,除了一些極簡單的任務,一般產品開發過程中都要進行模擬,模擬的主要目的是進行軟體調試,當然藉助模擬機,也能進行一些硬體排錯。一塊單片機應用電路板包括單片機部份及為達到使用目的而設計的應用電路,模擬就是利用模擬機來代替應用電路板(稱目標機)的單片機部份,對應用電路部份進行測試、調試。模擬有CPU模擬和ROM模擬兩種,所謂CPU模擬是指用模擬機代替目標機的CPU,由模擬機向目標機的應用電路部份供給各種信號、數據,進行調試的辦法。
② 單片機怎麼編程
1、下個keil3軟體,新建工程之後,新建文件,寫文件名的時候,寫.asm後綴的就是寫匯編語言,寫.c後綴的就是寫C語言。
2、至於怎麼編程,單片機編程,重點就是掌握單片機有哪些I/o口,哪些寄存器,哪些特殊寄存器。
3、推薦看一下視頻《十天學會單片機》,搜一下都有的,對初學者非常有幫助。
4、另外補充一點,學單片機,光看書一年都學不會,邊看邊學,一個月就能入門了,所以最好弄一塊板子,在上面跑跑程序。
③ 51單片機編程的注意事項
模塊化的寫
平時把一些模塊存著
④ 51單片機的編程問題
1:C51編譯器如何區分位地址和位元組地址
是靠預定義實現的,比如:sfr P0 = 0x80; sbit P0_0 = 0x80;前者聲明了P0埠地址位於0x80,後者說明了P0埠的bit0,即P0.0位於位地址空間0x80處。這2個0x80具有完全不同的含義,靠關鍵字sfr和sbit來區別。這樣當程序被編譯時,編譯器會依此編譯成相應的匯編語言。例如:
C51語句: P0 = 1;
P0聲明為sfr,因此編譯成:mov 80h,01h,將把0x01數據送入0x80單元,由於0x80單元物理上對應P0埠,因此,P0.0腳將輸出高電平(其實是呈現高阻態,P0口獨有的),其他.1-.7腳輸出低電平。
C51語句: P0_0 = 1;
P0_0聲明為sbit,因此編譯成:setb 80h,這將把位地址空間的0x80地址的bit的值置1。這個位正是P0口的bit0,執行後,P0.0將輸出高阻態。而P0.1-.7不會變化。
2:C51為什麼要嵌套匯編
51單片機一個顯著優點就是指令執行時間固定,因此可以適應時序要求嚴格的場合。例如符合ISO7816協議的cpu卡的讀寫,對時序要求比較嚴格。其實就是用io腳做出來的同步半雙工串口。支持cpu卡的程序一般比較龐大,需要用c51來組織,但是由於c編譯的不確定性,必須把底層程序封裝成匯編語言模塊嵌入到工程中。這就帶來幾個問題:如何聲明函數、參數如何傳遞等。限於篇幅,不能說得很細。下面舉例:
匯編程序單獨保存一個文件,加入到工程中,函數如下:
_proc_a:
mov a, r7
inc a
mov r7, a
ret
用c語言在.h文件中聲明: extern unsigned char proc_a(unsigned char val);
調用時形如: retvalue = proc_a(0x11);
說明:
a:匯編程序如果帶參數,則需要在匯編程序前多加一個下劃線。而聲明它的地方不用加(偉福編譯器這么要求的)。
b:函數的形參中第一參數用R7傳遞,函數返回值用R7返回,這是C51的通用規范。其他參數都有相應規定。函數可以返回一個位,用psw的c位返回。c:上面的語句,執行順序是把0x11給R7,然後跳轉子程序,子程序將它加1後送回。
d:函數跳轉到匯編程序時,本區的R0-R7,A,B,PSW,DPTR等寄存器可以供子程序使用,不必考慮調用後是否要恢復這些常規資源。上例中,A的值被函數使用了,編程者不必恢復調用前的值。
⑤ 單片機編程的幾個問題,歡迎高手!!
答:
1.是個循環,而且是個死循環。他在單片機中是常要用到的,功能就是只要單片機上電它使程序不停里執行死循環里的內容!
2.這個看你的單片機的硬體電路了,你最好也先看懂硬體電路才編程。通常LED的公共端是用三極體選通的!看來你的LED是共陽極接法的,就是8個LED正極共同接到三極體的發射極,集電極接VCC,基極連到P1口的接法,如果你會三極體,應該就能看懂為什麼了!P1=0,三極體正向導通,VCC加到LED上,如果LED的另一端接的是低電平,使LED正偏,則LED亮。想想吧~~
3。CPU不停地執行while(1)裡面的語句,但是當有中斷發生時,CPU得先去執行中斷,然後才能返回到while處繼續執行,也就相當等待中斷了!也就是說:有中斷發生CPU就立該執行中斷,沒有的話就一直執行while(1)裡面的~~
⑥ 單片機編程步驟
一、什麼是 nec 單片機
隨著大范疇集成電路的顯現和發展,將計算機的cpu、ram、rom、定時/數器和多種i/o介面集成在一片晶元上,組成晶元級的計較機,因此單片機早期的含義稱為單片微型計較機,直譯為單片機。單片機是一種集成在電路晶元,是採用超大范疇集成電路技能把具有數據處理本事的中心處理器CPU隨機存儲器RAM、只讀存儲器ROM、多種I/O口和間斷系統、 定時器 / 計時器 等成果(大要還包括表現驅動電路、脈寬調制電路、模擬多路轉換器、A/D轉換器等電路)集成到一塊矽片上構成的一個小而完竣的計算機系
二、nec單片機的操縱教程詳解
1、在智能儀器儀表中的操縱:在各類儀器儀表中引入單片機,使儀器儀表智能化,進步測試的自動化程度和精度,簡化儀器儀表的硬體結構,進步其性能價格比。
2、在機電一體化中的操縱:機電一體化產品是指集呆板、微電子技能、計較機技能於一本,具有智能化特徵的電子產品。
3、在實時過程式控制制中的操縱:用單片機實時進行數據處理和控制,使系統保持最佳事變狀態,進步系統的事變從命和產品的品格。
4、在人類生活中的操縱:目前國外各種家用電器已普通採用單片機代替傳統的控制電路。
5、在此外方面的操縱:單片機除以上各方面的操縱,它還遍布操縱於辦公自動化范圍、商業營銷范圍、汽車及通信、計較機外部裝備、暗昧控制等各范圍中。
以上就是為大家整理的關於單片機含義及其具體操縱教程的全部內容了。此外小編還額外為大家整理了單片機的優點:低電壓、低功耗、集成度高、可靠性高、體積小、控製成果強等。希望通過這篇文章能夠給想要了解單片機相關知識的朋友帶來一些幫助。另外大家如果想了解更多單片機的知識可以通過圖書查閱、網路查閱等方式。
⑦ 學習51單片機怎樣才能熟練掌握使用編程
自學MCS-51單片機心得體會
無論是作為一名業余的電子愛好者還是一名電子行業的相關從業人員,掌握單片機技術無疑可以使您如虎添翼,為您的電子小製作或者開發設計電子產品時打開方便的大門! 而且現在學習單片機技術的熱潮正在不斷升溫,時下多家電子類的報刊雜志如:《電子製作》《無線電》《電子報》《電子世界》都開設了詳細的單片機學習專欄,對於想學習單片機的朋友來說幫助很大,可以說現在的單片機學習環境是最好的,經過一段時間的努力,採用單片機來開發設計電子產品已經不再是專業電子工程師的「專利」!作為一個普通的電子愛好者完全可以通過一番努力後熟練掌握!國外的電子愛好者採用單片機來設計小製作非常普及,一些智能機器人、智能自動裝置內部都離不開單片機的身影~~~
現今單片機學習環境真的是太好了,有網路,有書籍,有報刊雜志,還有視頻教程,元件的采購方面也非常充足,相關的器材又多有便宜,相比而言,本人當初的學習條件就只可以「寒磣」二字來形容了:
站長的單片機技術是通過看書、動手自學學會的。 又因為站長的專業不是電子專業,所以單片機對於我來說是完全陌生的——最初我對單片機的概念都不清楚,還弄了一年多時間的單板機(i8085)——直到後來在圖書城「蹲點」(當時上網還是件奢侈的事情,何況我也沒電腦),才總算明白什麼是單片機。 當時(7年前,我還上高中的時候),可以供選擇的單片機種類並不如現今這么多,因此通常說起單片機就是特指MCS-51,因此我也就學了它。不過,正是因為用它的人多,所以能夠獲得的資料也多,元件也比較好購,因此我的自學之路才得以順利走下去。 當時那個窮啊,不敢買新零件,只能在廢舊家電上拆,參數不匹配也將就著用,而且還多虧了商鋪老闆看我可憐而以6折的價給了我一片i8051和一片2864,要知道當時這兩個東東加起來有七十多塊啊,夠我三個月的零花錢了(都高中了,三個月才這么點零花錢!)。 元件基本上差不多了,沒有電腦寫程序怎麼辦呢,好在我買的那本書上提供了指令的機器碼,所以我就先用筆在紙上把匯編源程序寫出來,然後根據書上的指令表把源程序手工翻譯成機器碼,就是10001111這樣的代碼,寫在源程序旁邊。這就是我的「編輯環境」和「編譯器」! 程序也有了,可是怎樣把它弄到存儲器里去呢,買編程器是不現實的,一來沒有電腦,二來,當時一隻編程器上千元的價格也只能讓我嘖嘖搖頭。
那怎麼辦呢……想來想去,找來找去,最後我利用以前做小實驗的那幾塊麵包板,拼在一塊合適大小的木板上,然後把存儲器按照要求插好,用插線連好電源和地,用電阻做出高低電平,然後通上電,再根據地址和數據的狀態,用鑷子把那些連線一根一根插到高或低電平,核對之後再把WR引線接一下地,這樣就可以寫入一個位元組,寫下面的位元組的時候就重復以上這些步驟就行了。若是程序要改動一點,那個工作量就「非常龐大」了。
這就是我的「編程器」! 我寫的第一個MCS-51單片機程序——點亮一隻LED,以及後來的流水燈程序等,就是在這樣的條件下來完成的。 現在,一個最廉價的模擬器也才人民幣幾十元,一塊功能多些的單片機實驗板也才上百元,簡直就是學習者的天堂了。 網路也給愛好者提供了很多很好的資料,例如平凡的單片機網站。平凡的單片機網站上有非常詳細的51單片機基礎知識教程,寫得非常生動朴實,對初學者來說幫助極大,其它還有不少網站也提供這些內容,還有專供愛好者討論交流的論壇。 學習單片機技術有一定的難度,不花費一番努力是很難學會的,但是只要不斷努力就一定能成功,學習單片機永遠記住一句話:實踐是檢驗真理的唯一方法。多動手做,哪怕是從點亮一隻指示燈開始,也要動手去做,否則就會永遠停留在書本上。 從51系列開始學單片機是個不錯的選擇:
1.書多、資料多
2.掌握51技術的人多,碰到問題能請教的老師也就多了
3.51系列的實驗晶元AT89C51價格低廉而且很容易買到,AT89C51晶元而且可以反復擦寫1000次以上,對於初學者來說真是太合適了,就算以後考慮工業運用,也可以先學透51後再學其他類型的單片機,畢竟技術是相通的。
4.相關的器材很廉價,具有絕大多數功能的下載型模擬器才幾十元,最簡單的專用編程器也才幾十元,如果有能力自己做編程器就更便宜。 學習單片機的第一步是看書,單片機是一個知識密集的東東,不看書是絕對不行的,北航出版社(北京航空航天大學出版社)出版了大量單片機方面的好書,可以直接登錄他們的網站進行郵購。本人認為第一本書應該是8051單片機的基礎原理書。我看的第一本書是咬牙買的兵器工業出版社的《8051/8098單片機原理幾介面設計》,這本書不是別人向我推薦的,也不是教材,但它比較系統地介紹了51晶元的基礎知識,我正是通過這本書入門的,可以很系統地了解51單片機。對比我後來買的其它51方面的書籍,我還是推薦這本。雖然這些書籍一開始不一定能懂,不過確實很有用,很有嚼頭,可以先大致看一遍,不消化的可以以後在試驗實踐中反復研究。 學習單片機的第二步是購買工具,單片機晶元必須藉助編程器才能寫入程序,本人用的編程器是一種性能較好的TOP2003通用編程器,通用編程器的特點是專為開發單片機和燒寫各類存儲器而設計的通用機型,它的編程可靠性高,支持的器件品種很多,不過這些商品化的設備價格偏高,不太適合初學者,或者說有一定程度上的浪費。 本人向初學者推薦一類廉價的編程器,注意,我說的是「一類」,而不是一種特定型號的。
這種編程器一般具有以下特點:
1.沒有外殼,而是以裸露的線路板直接銷售
2.通常支持常用的單片機和一些其它的晶元,例如存儲器等
3.通常不是USB介面,一般採用串列或並行介面連接電腦
4.價格一般在一兩百元左右
本站暫時不打算做這樣的編程器,但若朋友們有需要,本人也可以考慮做一些提供給大家。
不過從長遠的方面考慮,購置一台通用編程器還是有必要的,需要了解的朋友可以搜索一下「單片機編程器」。 學習單片機的第三步是反復編程實踐,一個好的實驗平台非常重要,實驗平台的類型有許多,那些專業的產品動輒幾千元,不是普通愛好者能承受的,也完全沒有必要使用那樣的產品。象編程器一樣,有廉價實驗板作為替代,有的產品比那些專業器材更好,例如本站推出的MCS-51 Study Board V3.0和V5.0板,就是非常貼近實際使用的設計,如果給它們配上適當的軟體,是完全可以直接作為工業控制板而安裝在機械設備中使用的。 模擬器對單片機初學者來說既是那麼耳熟,同時又有些陌生,這主要是因為市場上傳統的模擬器價格都在千元以上,對經濟不是非常寬裕的人來說是不小的開支。同時模擬器是用來提高調試程序效率的,也不是非需不可的,所以站長在自學單片機的時候沒有用過模擬器,碰到程序出錯的時候,只好苦思冥想,或者在程序中插入一些驅動埠的指令,然後再接上一些發光二極體做簡單指示,一般調試一個程序,反復燒寫幾十次晶元是很經常的。 具備了必要的工具以後就可以開始學習單片機了,對單片機進行編程可以採用匯編語言或者C語言,匯編語言的特點是代碼緊湊,對初學者的電腦水平要求低、上手快,但是程序編寫工作量大,站長網站的程序範例就是採用匯編語言編寫的,這里說的C語言是專用於51單片機的C語言,它的特點是編寫效率高,但是對使用者的電腦水平要求高,最好是已經會C語言了,站長網站上也有單片機C語言教程,是磁動力工作室網站明浩站長編寫的,站長不會C語言,所以是從匯編語言開始學編程的。我認為初學單片機的人最好懂一些匯編語言,匯編語言可以直接控制單片機的資源,比如具體的單片機引腳、內存地址,掌握這些也是很有必要的,學會匯編語言可以打下比較好的基礎,很多參考書也是這么說的,如果你是專業單片機開發人員,那麼C語言效率高,更適合你。 自學匯編語言,首先要學會看懂別人的匯編語言程序,可以將匯編語言的指令翻譯成自己容易理解的功能描述性文字,詳細注釋在程序後面,這樣便於自己以後引用或者別人容易看懂。站長看到別人寫的一些匯編程序的注釋都非常少,這非常不利於初學者學習和互相交流,所以只要是站長寫的程序都做了非常詳細的注釋。 學習匯編語言可以參考相關的書,匯編語言有100多條指令,但是常用的指令也就二三十條,可以先記住常用的匯編指令,如果一時記不住可以列印在紙上慢慢熟悉,然後對別人的匯編程序再加以試驗驗證,最後還可以在自己理解的基礎上對匯編程序的相關參數修改再反復試驗。 最後告訴朋友們一個秘密:學習單片機沒有捷徑!
⑧ 51單片機編程讓新手最容易出錯的幾點總結
新手容易出錯的地方可能有:
1、數據類型,unsigned char在單片機中是最常用的數據類型,不是C語言中的自字元串或字元類型,新手很容易搞錯。
2、關鍵字的使用,單片機中有很多內部關鍵字,比如特殊功能寄存器、中斷等等,如:P0,SBUF、interrupt、using等等,這些都不能作為用戶的變數用,新手常常不太注意。
3、中斷的使用,比如獨立按鍵接到外部中斷上,編程時一般利用中斷來處理,程序上不會明顯看到「鍵」的顯示,新手會很迷茫,怎麼沒有按鍵處理?
4、 while循環的使用,單片機C語言中,至少有一個while(1)循環,一保證程序運行在可控狀態下,新手往往忽略掉,從而造成程序亂飛。
⑨ 求51單片機進行數據處理時的注意事項,如編程時能進行什麼類型的計算,效率有多高等等,100分先奉上
現在大都在用C語言。注意事項:
數據類型:變數盡量用8位單位元組unsigned char型的,或者16位雙位元組unsigned int。一般足夠了。如果只是用真假兩種狀態,(比如標志位)可以用1位的bit型,才用八分之一個位元組。不能像電腦編程那樣揮霍內存。浮點數等類型,就算了吧。
計算方面:盡量用加減運算,移位運算,與、或、非、運算。
以上運算一個或幾個機器周期就能完成。而一個乘除運算,可能需要接近200個時鍾周期!(8位)
經驗表明,程序不太復雜的情況,乘除法用用也無妨。但盡量用8位的。
是在需要復雜的函數運算的話,(比如說一些溫度補償運算,復雜的函數)可以用查表法,把可能出現的答案都放在code裡面,在C語言里是以數組的方式直接查詢答案,非常快,缺點是比較佔用flash,現在單片機flash都很大,各方面權衡一下。
另外,如果乘以或者除以一個2的平方數的因子,直接可以用移位代替。比如a除以16,等價於a右移4位。
有一些乘除法可以湊數的,靠近2的平方數比較近的數字,根據上一條:
例如:a*30相當於a*32 - a -a 還相當於 a<<5 - a - a
如此一換算,就把乘法拆分成了加減法和移位。大量節約了資源。
另外,比較高級的單片機AVR,MSP430,PIC,大多數型號都集成了硬體乘法器,做乘法只需要一個機器周期,需要復雜運算的時候可以考慮這些高級單片機。