第一篇:C語言單片機嵌入式軟件編寫要點
C單片機嵌入式軟件
本質(zhì)是:
在單片機裸機上寫一個操作系統(tǒng)。
技術(shù)范圍:
軟件工程。
具體指標:
一,模塊化。
二,層次化。
三,可讀性,可擴充性(中斷程序少做事)。四,可移植性。
五,追求邏輯簡單,不追求占用空間最少。
六,條件判斷可以重復判斷,追求邏輯和時間解耦。七,可以重復清理現(xiàn)場,提高軟件抗干擾能力。八,有心得,請繼續(xù)增加,大家共享。
第二篇:c語言編寫單片機感想
用C語言對單片機編程感想
起先接觸單片機,單片機的程序是用匯編語言編寫的。匯編語言是面向機器的低級語言,保持了機器語言的優(yōu)點,具有直接和簡捷的特點,目標代碼簡短,占用內(nèi)存少,執(zhí)行速度快,是高效的程序設計語言。但對于一些復雜的程序,匯編語言就顯的繁瑣,并且效率不高。而C語言簡潔緊湊、靈活方便,數(shù)據(jù)類型豐富。C語言的最大的優(yōu)點在于它的可移植性好。因此C語言對單片機的一些復雜程序就體現(xiàn)出它的優(yōu)勢。單片機是一塊在集成電路芯片上集成了一臺有一定規(guī)模的微型計算機。單片機的應用到處可見,應用領(lǐng)域廣泛,主要應用在智能儀表、實時控制、通信、家電等方面。因此學習單片機是非常必要的。
在用匯編語言編寫MCS–51單片機程序必須要考慮其存儲器結(jié)構(gòu),尤其必須考慮其片內(nèi)數(shù)據(jù)存儲器與特殊功能寄存器的使用以及按實際地址處理端口數(shù)據(jù)。
用C語言編寫的MCS–51單片機應用程序,則不用像匯編語言那樣須具體組織、分配存儲器資源和處理端口數(shù)據(jù),但在C語言編程中,對數(shù)據(jù)類型與變量的定義,必須要與單片機的存儲結(jié)構(gòu)相關(guān)聯(lián),否則編譯器不能正確地映射定位。
C語言編寫單片機應用程序時,需根據(jù)單片機存儲結(jié)構(gòu)及內(nèi)部資源定義相應的數(shù)據(jù)類型和變量,而標準的C語言程序不需要考慮這些問題。
C51包含的數(shù)據(jù)類型、變量存儲模式、輸入輸出處理、函數(shù)等方面與標準的C語言有一定的區(qū)別。其它的語法規(guī)則、程序結(jié)構(gòu)及程序設計方法等與標準的C語言程序設計相同。C51的語法規(guī)定、程序結(jié)構(gòu)及程序設計方法都與標準的C語言程序設計相同,但C51程序與標準的C程序在以下幾個方面不一樣:
(1)C51中定義的庫函數(shù)和標準C語言定義的庫函數(shù)不同。標準的C語言定義的庫函數(shù)是按通用微型計算機來定義的,而C51中的庫函數(shù)是按MCS-51單片機相應情況來定義的。
(2)C51中的數(shù)據(jù)類型與標準C的數(shù)據(jù)類型也有一定的區(qū)別,在C51中還增加了幾種針對MCS-51單片機特有的數(shù)據(jù)類型。
(3)C51變量的存儲模式與標準C中變量的存儲模式不一樣,C51中變量的存儲模式是與MCS-51單片機的存儲器緊密相關(guān)。
(1)C51與標準C的輸入輸出處理不一樣,C51中的輸入輸出是通過MCS-51串行口來完成的,輸入輸出指令執(zhí)行前必須要對串行口進行初始化。
(5)C51與標準C在函數(shù)使用方面也有一定的區(qū)別,C51中有專門的中斷函數(shù)。
學習單片機技術(shù)的關(guān)鍵,也就是學習編程,學習編程先要學習指令系統(tǒng)。掌握指令的準確含義、運用條件以及與相關(guān)硬件資源的關(guān)系;了解硬件資源,諸如內(nèi)存、中斷、計數(shù)器、計時器和I/O,以及外部資源等。
其實現(xiàn)在很多人用C語言編程,匯編似乎很落伍了,但是,它還是較機器語言外最直接的描述語言,但是匯編能清楚的反應單片機是怎么樣工作的。學習編程的初級階段,可以從讀懂一小段程序開始,由簡到繁,由淺入深,逐步到讀懂一個較短的完整程序。借鑒現(xiàn)有程序,為一個新的目的修改程序,逐步熟練了就可以運籌資源架構(gòu)程序。
程序就要會分析程序。程序與文章一樣,也有段落,一段程序應該有個明確的目的,分析程序要有段落和架構(gòu)的概念。不管程序有多長,將它分成若干個段落,簡化成架構(gòu)框圖,程序的結(jié)構(gòu)和目的就清晰可見了,也有助于編寫程序。
編寫程序,往往一氣呵成,這時就不太會注意添加注釋,其實注釋很重要,有助于日后的修改,以及程序的可讀性。
要學好單片機不光要會編程,還有重要的一部分是外圍電路的拓展,這就要求我們對數(shù)電和模電有很好的基礎。運用一些芯片來使單片機組成的電路具有更加強大的功能。因此學習單片機是不斷嘗試和調(diào)整的過程,在這個過程中雖然有這樣或那樣的問題,但能收獲許多知道,以及體會成功的歡樂。
第三篇:C語言于單片機的編寫感想
C語言于單片機的編寫感想
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Y=max(m,n)這指的是y=m和n中最大的
這就是C語言和單片機語言的一個思想 C語言和單片機主要是靠邏輯思想來編程。但兩者之間也有差別: 應用的函數(shù)有的地方不同 編程的格式不同
功能相對而言我感覺C語音更強大一些。C語言真對的是系統(tǒng) 單片機主要是針對機
熟練運用這兩種就是現(xiàn)在計算機與自動化機械的基礎 學習函數(shù)應由淺到深,易于理解。算法也是其主要內(nèi)容
算法的其中一種在于延時。
延時的作用多用在控制動作的次序以及時間間隔 C++是比較常用的C語言工具
? 此外還有VB等等
? 內(nèi)容的編寫主要根據(jù)目的任務而定 ? 內(nèi)容編寫應盡量工整,便于讀懂和檢查
? 注意編寫程序的循環(huán)的應用,應避免出現(xiàn)死循環(huán)。? 注意全局的的變量,不要造成變量沖突 ? 編程模版大致相同。
第四篇:學習plc單片機組態(tài)軟件,嵌入式的一些心得
學習plc,單片機,組態(tài)軟件,嵌入式的一些心得
學習plc,單片機,組態(tài)軟件,嵌入式的一些心得
如果專注于某一興趣,且投入進去,那么一定會有一種感覺:學習真的沒完沒了,永遠有學不完的東西!
plc,51單片機,嵌入式系統(tǒng),組態(tài)軟件等等這些東西要學精學透真的必須踏踏實實的下功夫去鉆研,要花大量的時間和精力!同時這些知識必須不斷溫習和鞏固且要去實踐,否則即便是當時理解了學會了,過些時日有些知識點便會遺漏掉。
上周用51單片機開發(fā)板+固態(tài)繼電器+DC5V手機充電器+DC24V開關(guān)電源+DC24V繼電器+飛利浦電風扇紅外遙控器這些硬件自己動手做了一個帶溫度自動控制功能的AC220V遙控電源;雖然體積比較大,但是畢竟是自己的一件DIY作品,還是比較喜歡的。在動手制作的過程中,對硬件的掌握有了更深的認識,尤其是51單片機1602液晶顯示出現(xiàn)的一些問題,這些問題如果不是自己動手是不可能發(fā)現(xiàn)的!
本周,終于編寫plc程序并動手實踐接線了。以前總是看書,看程序例子,雖然花了很多時間感覺理論上已經(jīng)學得很好了,但是通過實踐發(fā)現(xiàn)理論和實踐的距離還是很大的!首先是筆記本電腦和plc的通信問題,我用的是USB通信電纜,即USB--RS485串口通信,打開編程軟件后怎么也通信不上,為了這個通信問題我?guī)缀跏且煌砩蠜]有睡好覺,第二天還不斷打電話請教別人,結(jié)果是電話費浪費不老少問題依然沒有解決。直到第三天通過自己不斷實驗和設置終于把通信問題解決了!在這個過程中,不斷懷疑是不是通信電纜或者plc或者驅(qū)動程序有問題,搞得人真的好憔悴。通過實踐發(fā)現(xiàn)西門子的編程軟件功能真的太強大了!對于plc的接線,工作電源等等資源有了更深的認識。真的是:實踐出真知!
接下來就要動手實踐通過上位機組態(tài)軟件來控制plc了。這也是一個大工程。
以前總希望自己的一些同事,年輕的大學生多學點業(yè)務知識。現(xiàn)在看來真的不要去學習這些東西了。玩硬件是很花錢的,花錢耗精力不說,關(guān)鍵是不能為自己帶來經(jīng)濟效益,而且領(lǐng)導根本就不重視技術(shù)!在國企,想通過真本事改變命運真的幾乎不可能,要想出頭還得下血本送禮請客溜須。
自從學上這些東西之后,我是欲罷不能了。因為只有強烈的興趣而且熱愛這些東西,一個人才能孤獨的堅持學習。也只有在電子世界我才能有一種歸屬感!
對于愛學習的人來說,永遠有學不完的東西要學,永遠覺得時間和精力不夠。然而現(xiàn)實是:凡是愛學習的人,愛好鉆研技術(shù)的人一般是混得不怎么樣的人;試想,哪個為官者會花時間和精力去讀書鉆研專業(yè)技術(shù)?
世上的眾多情感中,我唯獨不信愛情!我相信絕大部分人都是將就過日子。什么是愛情?年輕人會有許多美好的憧憬,然而,現(xiàn)實很殘酷!愛情是什么?愛情是選擇,你有得選擇嗎?你有資本選擇嗎?
人只會在危難的時候才能感悟出深刻的道理!身體是人類的萬欲之源,如同厚德載物的天地。“身體好,才是真的好!”,試想,有誰會躺在棺材里數(shù)鈔票,追逐名利,談情說愛?恐怕還沒來得及“試想”,老婆早就改了姓!所以說,一定要珍惜身體,哪怕是行尸走肉也要健健康康的行走!
原以為,組態(tài)軟件很簡單就能學會。組態(tài)王和MCGS組態(tài)軟件不知道哪個更好?就先學MCGS吧!感覺組態(tài)軟件的腳步程序和一些函數(shù)必須要非常熟悉才能組建一個較完善的工程。組態(tài)軟件和plc構(gòu)建工程時,plc的程序怎么寫呢?這個問題是學習組態(tài)軟件的最大難點。
STM32的學習,有所停滯;一定要堅持把STM32學透,哪怕花兩年的時間。最終要用STM32和固態(tài)繼電器設計出一個帶液晶界面功能強大的近似于萬能的plc。不過,這個plc只能用c語言編寫程序。
人必須要學會變態(tài)!
第五篇:為什么嵌入式要用c語言編寫
為什么嵌入式軟件要用C語言編寫
嵌入式軟件一般需著重考慮三個方面:性能、安全性和開發(fā)效率(包括代碼可移植性等)。性能(運行效率)方面,匯編明顯是最高的。但匯編在安全性和開發(fā)效率方面明顯是最低的(不考慮機器語言--)。所以除非是要求極端高性能的嵌入式平臺(或者是系統(tǒng)實在是太簡單而沒辦法支持高級語言,orz--),使用匯編語言的不多。
相對于C,其它高級語言的運行效率一般比較低(C程序運行效率可達匯編的80%,而其它程序可能只有C程序的80%),源代碼和目標代碼也可能會比較長。對于嵌入式系統(tǒng),性能的瓶頸是非常致命的,很可能某種用C編寫的程序可以達到預期目標,而用其它語言使用同樣算法編寫的程序就不行。(不過也正因為這個原因,在嵌入式系統(tǒng)上實現(xiàn)的可用編程語言并不多。)
基于系統(tǒng)的用途,安全性設計嵌入式系統(tǒng)也是必須考慮的一個部分(比如說用于醫(yī)療衛(wèi)生設施),必須盡可能在開發(fā)期間減少潛在的錯誤。這方面C不占優(yōu)勢,但如果保證代碼嚴格遵守安全規(guī)范,也可以接受(相對而言,匯編就郁悶了--)。
開發(fā)效率和安全性類似,也在可接受范圍之內(nèi)。
也可以用匯編編寫c語言也好 匯編也好 或者更高級的語言都是跟人看和些的讓人的思維能夠描述出來
然后通過編譯環(huán)境編譯成計算機能看的懂的東西 不同的語言 編譯完以后 邏輯上其實都是一樣的然后交給芯片去運行要說效率c沒有匯編效率高
舉個例子
一個韓國工人(計算機)只會懂韓語(機器語言)領(lǐng)導有一個中國人(程序員)只會說漢語(C語言)另一個日本人(程序員)只會說日語(匯編)還有一個西班牙人(程序員)只會說西班牙語(另一種高級語言比如java)想讓韓國人做同樣一個事情中國人用漢語說完經(jīng)過翻譯(編譯系統(tǒng))變成韓國語韓國工人明白了要干什么日本人用日語通過翻譯 變成韓國語韓國工人也知道要干什么了另一個西班牙人 用西班牙語 翻譯成韓國語讓韓國人干的是同一個活翻譯完的結(jié)果是一樣的 只是不同語言表達罷了c語言更方便 移植性更強(比匯編)
我目前接觸的一般的嵌入式上層軟件 c語言就可以搞定
如果遇到比較嚴格的或者軍工的甲方
c語言搭鉤框架,然后剩下的全部用匯編語言實現(xiàn)
之所以用c 是因為c比匯編操作簡單
調(diào)試方便 開發(fā)效率較高
但是代碼運行效率可能沒那么
而且匯編可以精確定時,代碼運行時間是可以計算出來的因為C效率高~相對其他高級語言代碼所占用的空間少~通用性也不錯
所以要用C嘍
嵌入式的芯片ROM有限