C語言對8051 編程

2021-02-19 電氣自動化資料庫

1 為什麼要用高級語言當設計一個小的嵌入式系統時 一般我們都用彙編語言 在很多工程中 這是一個很好的方法 因為 代碼一般都不超過 8K 而且都比較簡單 如果硬體工程師要同時設計軟體和硬體 經常會採用彙編語言來做程序 我的經驗告述我 硬體工程師一般不熟系像 C一類的高級語言使用彙編的麻煩在於它的可讀性和可維護性 特別當程序沒有很好的標註的時候 代碼的可重用性也比較低 如果使用 C 的話 可以很好的解決這些問題用 C 編寫的程序 因為 C 語言很好的結構性和模塊化 更容易閱讀和維護 而且由於模塊化 用 C 語言編寫的程序有很好的可移植性 功能化的代碼能夠很方便的從一個工程移植到另一個工程 從而減少了開發時間用 C 編寫程序比彙編更符合人們的思考習慣 開發者可以更專心的考慮算法而不是考慮一些細節問題 這樣就減少了開發和調試的時間使用像 C 這樣的語言 程式設計師不必十分熟系處理器的運算過程 這意味著對新的處理器也能很快上手 不必知道處理器的具體內部結構 使得用 C 編寫的程序比彙編程序有更好的可移植性 很多處理器支持 C 編譯器所有這些並不說明彙編語言就沒了立足之地 很多系統 特別是實時時鐘系統都是用C 和彙編語言聯合編程 對時鐘要求很嚴格時 使用彙編語言成了唯一的方法 除此之外根據我的經驗 包括硬體接口的操作都應該用 C 來編程 C 的特點就是 可以使你儘量少地對硬體進行操作 是一種功能性和結構性很強的語言2 C 語言的一些要點這裡不是教你如何使用 C 語言 關於 C 語言的書有很多 像 Kernighan 和 Ritchie 所著的 C 程式語言等 這本書被認為是 C 語言的權威著作 Keil 的 C51 完全支持 C 的標準指令和很多用來優化 8051 指令結構的 C 的擴展指令我們將複習關於 C 的一些概念 如結構 聯合和類型定義 可能會使一些人傷腦筋2.1 結構結構是一種定義類型 它允許程式設計師把一系列變量集中到一個單元中 當某些變量相關的時候使用這種類型是很方便的 例如 你用一系列變量來描述一天的時間 你需要定義時 分 秒三個變量unsighed char hour,min,sec;還要定義一個天的變量unsighed int days;通過使用結構 你可以把這四個變量定義在一起 給他們一個共同的名字 聲明結構的語法如下

聯合經常被用來提供同一個數據的不同的表達方式 例如 假設你有一個長整型變量用來存放四個寄存器的值 如果希望對這些數據有兩種表達方法 可以在聯合中定義一個長整型變量 同時再定義一個字節數組 如下例

union status_type{ 

unsigned char status[4];

float idata outp_value;

4.4 PDATA 和 XDATA 段在這兩個段聲明變量和在其它段的語法是一樣的 PDATA 段只有 256 個字節 而 XDATA段可達 65536 個字節 下面是一些例子

unsigned char xdata system_status=0;

unsigned int pdata unit_id[2];

char xdata inp_string[16];

float pdata outp_value;

對 PDATA 和 XDATA 的操作是相似的 對 PDATA 段尋址比對 XDATA 段尋址要快 因為對 PDATA 段尋址只需要裝入 8 位地址 而對 XDATA 段尋址需裝入 16 位地址 所以儘量把外

4.5 CODE 段代碼段的數據是不可改變的 8051 的代碼段不可重寫 一般 代碼段中可存放數據表跳轉向量和狀態表 對 CODE 段的訪問和對 XDATA 段的訪問的時間是一樣的 代碼段中的對象在編譯的時候初始化 否則 你就得不到你想要的值 下面是代碼段的聲明例子

編譯產生的彙編代碼

相關焦點

  • 下載 | 《單片機C語言程序設計實訓100例–基於8051 PROTEUS仿真》
    內容介紹:第一章用簡短篇幅介紹8051單片機的特點、應用,以及Keil C語言程序設計,在語言程序設計中重點介紹8051內部資源;第二章介紹Proteus的入門操作;第三~五章全部為單片機的C程序設計案例;第三章為基礎案例,涉及C語言基礎部分,基本IO部分,中斷與定時器,串口控制,模數與數模轉換部分等;第四章在前面的基礎上對擴展的外圍硬體應用進行編程,包括解碼器、串並轉換晶片、存儲器、中英文液晶屏、IIC等;第五章是綜合設計部分,涉及一些具體的應用型產品的設計。
  • c語言編程軟體哪個好?c語言編程軟體下載地址
    c語言編程軟體哪個好?c語言編程軟體下載地址 2019年1月14日 HuangJiang來源:網際網路 繁體
  • 【愛找茬】都是C語言,單片機C語言和普通的C語言究竟有什麼差異呢?
    C語言: C語言是一門通用計算機程式語言,廣泛應用於底層開發。 C語言是一門面向過程的計算機程式語言,與C++,Java等面向對象的程式語言有所不同。 其編譯器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。
  • 8051單片機模塊化編程技巧
    目前在8051 單片機應用開發中主要有兩種程式語言:彙編語言和C51 語言。
  • 為什麼要學習「 C」程式語言?
    「 C」編程是另一種程式語言的基本基礎,像java、php,C++等熱門程式語言都是「 C」編程最為底層開發,所以我們通常稱「 C」編程編程「母語」。「 C」編程是一種簡單的語言,可以更快地執行。「 C」編程還是一種極其緊湊的語言,這意味著以「 C」編程方式尋址的程序可以在不同的機器上運行。C程式語言的優勢作為中級語言,C連接了低級和高級語言的功能。C語言可用於底層編程。例如用於內核和驅動程序的腳本,它還有助於使用高級程式語言,例如用於軟體應用程式的腳本等。
  • 現代程式語言起點,C語言之環境搭建
    C 語言是一種廣泛使用的計算機語言,它與 Java 程式語言一樣普及,二者在現代軟體程式設計師之間都得到廣泛使用。C 語言被廣泛使用,比如:Linux 作業系統和 RDBMS(關係資料庫管理系統) MySQL 都是使用 C 語言編寫的。
  • 8051單片機指令系統的用法介紹
    打開APP 8051單片機指令系統的用法介紹 21ic 發表於 2019-10-04 17:00:00 8051的指令系統共有111條指令,由42種助記符和7種尋址方式組合而成。 8051的指令通常包括操作碼,和操作數兩部分。操作碼規定指令進行什麼操作,採用助記表示;操作數表示指令的操作對象。 彙編語言指令的基本形式是:操作碼助記符 目的操作數,源操作數。 操作碼助記符與操作數分開書寫,操作數中目的操作數在前,源操作數在後,操作數之間用逗號分隔。
  • C語言簡單編程速成
    在創建了一個經久不衰的作業系統(至今仍在使用)之後,他需要一種好的方法來對這些 Unix 計算機編程,以便它們可用執行新的任務。在現在看來,這很奇怪,但在當時,程式語言相對較少,Fortran、Lisp、Algol 以及 B 語言都很流行,但是,對于貝爾實驗室的研究員們想要做的事情來說,它們還是遠遠不夠的。丹尼斯·裡奇表現出一種後來被稱為程式設計師的主要特徵的特質:創造了他自己的解決方案。
  • 三天學會C語言編程 | 中篇
    本文是《三天學會C語言編程》的第二篇文章,承接上一篇《三天學會C語言編程 | 上篇》。本文重點介紹C語言的數據類型、表達式、變量和函數等內容。變量的名稱就好像郵箱的編號一樣,這樣我們在編程的時候就可以通過這個名字方便的訪問(讀或者寫)變量。在C語言中變量的名稱可以是英文字符、下劃線和數字,但只能以英文字符和下劃線開頭,不能以數字開頭。另外,C語言中變量名稱是區分大小寫的,也就是var_name和var_Name是兩個不同的變量。
  • 嵌入式系統高級C語言編程
    內容簡介  《嵌入式系統高級C語言編程》將主要介紹針對嵌入式系統的基於C語言的軟體項目開發的流程,較為複雜的c語言編程知識和技巧,編程風格和調試習慣
  • C語言編程工具選擇
    一、編程工具計算機處理的數據、接受的指令是二進位數據,用C語言編寫的程序需要轉變成計算機能識別的二進位,才能讓計算機工作,這個轉換過程就是使用編譯器對源程序進行編譯,雖然可以使用命令行的方式編譯源程序,但使用編程工具不僅可以編譯源程序,還可以編寫、調試等,可以簡化編程工作。
  • C語言編程習慣心得
    從編程菜鳥一路走來,慢慢對編程習慣有了一個新的認識。因為曾經我寫的代碼的可讀性令自己也感到哭啼皆非,搞得自己暈頭轉向。今天特意來分享一下自己的一些關於編程習慣的心得。很多人以為代碼一敲完,能得到預期的結果,就萬事ok,其實不然。後面的程序調試、維護和升級是一個項目中很重要的一部分,這就要求我們必須規範編程習慣。
  • 單片機C語言編程心得
    寫這個8*8按鍵程序的過程中,不管是在自己寫還是參考別人程序的過程中,發現自己對C語言有些基本知識點和編程規範有很多不懂的地方,有些是自己以前的編程習慣不好,有些就是基礎知識不紮實的表現,所以總結出來。
  • C語言編程核心要點
    原文標題C語言編程核心要點,男人看了沉默,女人看了本文轉載自【微信公眾號:碼磚雜役,ID:whatis9527want】引言筆者有十餘年的C++開發經驗,相比而言,我的C經驗只有一兩年,C比較簡單,簡單到《The C Programming Language》(C程序設計語言)只有區區的200多頁,相比上千頁的C++大部頭,不得不說真的很人性化了
  • C語言編程工具的選擇
    我們計算機專業沒有C語言這門課。其他工科專業會學C語言這門課。據我所知,其他的工科專業需要過C語言2級考試。計算機專業不用考2級、3級...這些考試。我們計算機專業學的第一門程式語言是C++。那我們當時老師上課是用什麼編程工具的?是VC++ 6.0。VC++6.0界面簡潔(簡陋),沒有多餘花哨的功能,淡白色的界面。
  • Keil中C語言與彙編語言混合編程需要注意的幾個地方
    點擊上方 「 暢學電子 」 一鍵關注,輕鬆學習電子知識暢學電子網·訂閱號每天更新電子行業技術文章,及單片機最新資訊,隨時隨地輕鬆學習在keil C語言與彙編語言的混合編程中曾經遇到過的一些問題
  • 為什麼要把學習C語言作為第一門程式語言?
    編程是向計算機發出指令以執行特定任務或執行指令的行為,目前專業行業和學術界使用數百種程式語言。一個人需要熟悉並且能夠使用至少幾種程式語言進行編程才能作為目前專業開發者的成功。學習編程的最好理由在於它對所有人開放,你不需要大學學位即可通過自學成為專業程式設計師。
  • 自學編程:C語言的概述
    1972年美國貝爾實驗室的Dennis M.Ritchie為克服B語言的諸多不足,在B語言的基礎上重新設計了一種語言,取其第二字母C,故稱為C語言。驅動一般是用C語言和彙編語言寫的,C++ 在這方面稍弱。 資料庫:SQL Server、Oracle、MySQL、DB2②應用軟體開發 辦公軟體:WPS。 圖形圖像多媒體:Photoshop、Mediaplayer。 嵌入式軟體開發:嵌入式軟體開發說得簡單點就是晶片編程,比如我們以後學習在單片機和 ARM 上進行的開發都屬於嵌入式軟體開發。
  • Linux系統下的c語言編程規範整理
    每一種程式語言都有它獨特的編程規範,畢竟無規矩不成方圓,如果編碼不規範,一方面程序顯得晦澀難懂,讓其他讀者維護起來特別困難;另一方面自己再次查看的時候也會有一定困難。今天小編就來聊聊Linux環境下c語言編程的規範。
  • 程式設計師學習C語言編程的4種方法,C語言之父的大作不容錯過!
    如果新手要學習編程,一些前輩都會建議從Python、PHP、Java開始學。不過,有些程式設計師是直接從C語言強勢入門編程的。那麼,如何學習C語言呢?下面w3cschool提供4種入門C語言的方法:0、刷題絕大多數的程式設計師學編程的時候,還是會開啟簡單粗暴的刷題模式。刷面試對於面試以及技術的提高大有裨益,刷題網站強推Leetcode、Codility、Lintcode等。