隨著技術的發展,電子產品越來越多,方便了我們的日常生活,大多數電子產品上都有單片機,而單片機是通過執行軟件邏輯來實現功能的。而單片機編程最合適的編程語言是匯編語言,但是最常用、最普及的卻是C語言。單片機為什么要用C語言來編程?
1.什么是C語言
C語言最早是在1972年的時候在DEC PDP-11計算機上首次跑起來的,它的設計者是美國人丹尼斯·麥卡利斯泰爾·里奇,他在貝爾實驗室為UNIX操作系統設計的。后來他和同事共同編寫了C語言編程標準--K&R。沒想到日后C語言會成為廣泛的編程語言并風靡全球。而之所以叫做C語言,是因為它是在B語言的基礎上而設計出來的。
UNIX操作系統、Linux操作系統、MySQL等都是使用C語言編程實現的。
2.單片機有什么特點
單片機是可編程器件,他的控制邏輯是通過軟件來實現的。在單片機之前,控制邏輯是通過純硬件來實現的,受硬件邏輯的約束無法實現太復雜的邏輯。而單片機是有指令集的,最開始通過使用匯編來編程,雖然匯編執行效率非常高,但是匯編的可讀性和移植性非常差,而C語言正好能彌補匯編的不足。
舉例:MOVC A, @A+DPTR 功能:將 DPTR+A中的值 作為地址,尋找地址中的內容 送到累加器A中
匯編語言舉例
單片機的寄存器配置。對單片機編程其實就是配置單片機的寄存器和端口配置,而這都是具有時許的,需要精準的控制。
單片機存儲和執行程序需要Flash和RAM,而這些資源非常有限。所以,代碼的占用空間情況非常重要。
單片機都是有指令集的。學習過單片機匯編的朋友可能會有印象,8051單片機具有111條指令集,并且有7種不同的尋址方式。
#includevoid bubble_sort(int arr[], int len) { int i, j, temp; for (i = 0; i < len - 1; i++) ? ? ? ? ? ? ? ? for (j = 0; j < len - 1 - i; j++) ? ? ? ? ? ? ? ? ? ? ? ? if (arr[j] > arr[j + 1]) { temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } int main() { int arr[] = { 22, 34, 3, 32, 82, 55, 89, 50, 37, 5, 64, 35, 9, 70 }; int len = sizeof(arr) / sizeof(arr[0]); bubble_sort(arr, len); int i; for (i = 0; i < len; i++) ? ? ? ? ? ? ? ? printf("%d ", arr[i]); ? ? ? ? return 0; }
冒泡排序的C語言實現
3.為什么要用C語言編程
前文所說,單片機的匯編指令比較難記,可能存在兩種情況:1)更換硬件平臺,這要重新適配指令集、更新寄存器訪問地址,比較麻煩;2)換人維護程序,匯編的可讀性比較差需要較長的時間才能理解別人的程序。
而C語言就比較靈活了,正好能彌補匯編的劣勢。
不需要記憶單片機的指令集,只需要通過寄存器的配置就能讓單片機正常工作;
C語言有指針、數組、結構體、聯合體、枚舉等各種類型,大大增強了編程的靈活性和程序處理能力;
C語言方便模塊化編程,可以實現代碼的規范化。
C語言編程
你用C語言編程嗎?來評論區討論一下吧。
審核編輯:湯梓紅
-
單片機
+關注
關注
6037文章
44558瀏覽量
635233 -
Linux
+關注
關注
87文章
11304瀏覽量
209483 -
C語言
+關注
關注
180文章
7604瀏覽量
136813 -
編程
+關注
關注
88文章
3615瀏覽量
93732 -
匯編語言
+關注
關注
14文章
409瀏覽量
35809
原文標題:單片機編程,為什么要用C語言
文章出處:【微信號:玩轉嵌入式,微信公眾號:玩轉嵌入式】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論