嵌入式系統領域里,51系列單片機的歷史較長,應用最為廣泛。并且,因其價格低廉,器件易于采購,開發工具完善,而受到眾多工程技術人員的青睞。
51系列單片機體系結構簡單,其應用復雜度適中,入門容易。因此,在嵌入式二次開發市場占據很大的份額,也擁有眾多的使用者。
本書以51單片機為基本的嵌入式應用平臺,研究嵌入式應用軟件的編程技術,探討嵌入式匯編語言編程、嵌入式C語言編程的特點,以眾多的應用實例為背景,探究嵌入式編程過程中的技術細節。
在本書的匯編語言部分,以單片機定時器、中斷、輸入、輸出等電路單元的驅動程序設計為實例,體現出在硬件驅動編程中,匯編語言為最自然語言的特點。
在本書的C語言部分,主要以過程設計為主線,探討C51語言軟件編程技術。主要內容有:嵌入式c51編譯特點、c源代碼的組織方式、開發模式、混合編程、代碼運行機制(程序切換)等。
本書可供讀者深入學習嵌入式軟件編程技術使用,也可作為高等院校嵌入式系統教學的參考書。
第1篇 匯編語言程序設計
引言
第1章 深刻理解51單片機的指令系統
1.1 概述
1.2 單片機指令級邏輯結構
1.3 單片機的典型存儲結構
1.4 指令系統分析
1.4.1 指令體系結構
1.4.2 指令級計算機的工作機理
1.4.3 指令級數據表示
1.5 指令編碼
1.6 尋址方式
1.7 指令功能分析
1.7.1 數據傳送類指令
1.7.2 算術運算類指令
1.7.3 邏輯運算類指令
1.7.4 控制轉移類指令
1.7.5 位操作類指令
1.7.6 控制轉移指令的復合應用
第2章 查表和散轉程序設計技術
2.1 查表程序設計技術
2.1.1 查表編程概述
2.1.2 基本查表編程技術
2.1.3 擴展查表編程技術
2.1.4 擴展數據表查表編程技術
2.1.5 數據表元素擴展查表編程技術
2.2 散轉程序設計技術
2.2.1 應用軟件的整體構造
2.2.2 散轉基本編程技術
2.2.3 散轉程序的擴展編程技術
2.2.4 基本查表散轉程序編程技術
2.2.5 標記查表法散轉程序編程技術
2.3 AT24XX系列存儲芯片編程
2.3.1 AT24系列存儲芯片的特性
2.3.2 AT24系列芯片的讀/寫操作
第3章 中斷程序和單片機軟件抗干擾程序設計技術
3.1 中斷概述
3.2 中斷的基本編程技術
3.3 "定時查詢"中斷擴展編程技術
3.4 中斷的"外部中斷查詢"擴展技術
3.5 中斷編程實例
3.6 單片機軟件抗干擾技術概述
3.7 抗系統"死循環"技術
3.7.1 基本軟件看門狗技術
3.7.2 高級軟件看門狗技術
3.8 抗系統"跑飛"干擾技術
3.8.1 指令冗余法
3.8.2 軟件陷阱技術
第4章 定時/計數器編程技術
4.1 軟件定時器設計技術
4.1.1 軟件定時器的應用原理
4.1.2 軟件定時器的設計
4.1.3 軟件定時器的應用實例
4.2 硬件定時器設計技術
4.2.1 硬件定時/計數器的工作機理
4.2.2 實時定時/計數器的編程
4.3 超長時間實時定時器編程技術
……
第5章 顯示接口編程技術
第6章 鍵盤接口編程技術
第7章 匯編語言編碼風格
第2篇 C51程序設計
引言
第8章 C51語言基礎
第9章 C51程序設計基礎
第10章 C51編碼風格
第11章 數組、結構與指針
第12章 C51編程模式及程序測試
第13章 C51混合編程技術
第14章 程序切換技術
參考文獻
編后記
第1篇 匯編語言程序設計
引言
迄今為止,筆者依然認為,匯編語言是理解單片機系統或者計算機系統工作機制的一把利器,也是進行單片機軟件開發的一個強大的工具。因為,匯編代碼直接工作在單片機的機器層次上,它將單片機看成是可以自動執行指令的機器,用軟件去給它智慧,使它能夠完成目標管理、自動控制等應用工作。
在硬件驅動的編程中,匯編語言是最自然的語言。雖然,在高級語言中,如c51語言中,提供了預定義的符號,如PO、P3.0等,還有宏和關鍵字,如PBYTE、AT等,用戶可以直接用這些符號、宏或關鍵字,在源程序中去描述硬件、訪問硬件。但是,抽象層次較高的高級語言,畢竟減弱了編程者對硬件工作機制的洞察力。在有實時性響應要求、或者時間精度要求較高的場合,或者進行外圍芯片驅動時,高級語言顯得并不那么直接,此時,匯編語言卻是對這種場合的自然表述工具。
另外,高級語言要求編程者對編譯器等編程工具要有一定的理解,對編程者的軟件知識、軟件能力方面有一定要求。而用匯編語言可避免這些繁瑣,只要理解了單片機的基本工作機制,直接使用它,就可入門編程。
編制較簡單的單片機軟件時,或者在編制接口驅動程序時,采用匯編語言不失為一個好的選擇。
在軟件的移植應用方面,匯編語言也是不可缺少的工具。比如各種實時操作系統的移植中,那些與硬件緊密相關的代碼部分,或者高級語言編譯器所不能支持的代碼部分,還是需要用匯編語言來編制。
因此,匯編語言是單片機中最基本的編程語言,是我們理解單片機工作機制的重要手段,也是理解單片機各種接口的軟件驅動和基本算法實現的基礎,更是解決軟件編程、軟件調試問題的手段。在單片機軟件設計中,它有不可替代的作用。掌握一種匯編語言,是掌握單片機技術或者其他計算機技術的一把鑰匙。
……