內容簡介本書是《單片機應用程序設計技術》(修訂版)一書的姐妹篇。《單片機應用程序設計技術》的內容以程序設計的經驗和技巧為主,而本書內容則以程序設計的基本算法為主,目的在于全面提高單片機程序設計者的軟件素質。基本內容包括:單片機常用的線性數據結構和相關算法、排序和查找算法、樹和圖在單片機中的實現、常用的數據處理算法及常用編碼方法等。從單片機系統的實際硬件環(huán)境出發(fā),語言通俗易懂,使讀者輕松地將單片機程序設計基本算法學到手。為加強學習效果和增加實用價值,本書配套了上機學習光盤,在光盤中還提供了最新修訂的子程序庫和相關調試工具軟件,以及眾多單片機資料。本書可作為電子技術人員自學單片機程序設計基本算法的教材,也可供高等院校電子技術類專業(yè)本科生和研究生參考。前言嵌入式系統的應用越來越廣,我國從事嵌入式系統開發(fā)的人員也越來越多,而單片機是嵌入式系統的核心單元。從我國主要的幾種電子雜志上可以看出,有關單片機應用的文章也越來越多。在開發(fā)一種嵌入式系統產品(含單片機產品)時,有關單片機部分的工作主要是做兩方面的設計:硬件設計和軟件設計。在硬件設計方面,世界上幾家主要的半導體公司(如INTEL,PHILIPS,MOTOROLA等)競相推出各種高性能、低功耗、低成本的單片機和外圍芯片,使我們在進行硬件設計時可以很快地得到最先進的芯片。在這種情況下,硬件設計的外部條件越來越好,集成度越來越高,在實現相同功能的情況下線路越來越簡化。在軟件設計方面,雖然開發(fā)工具和程序設計語言也在不斷提高,但技術人員本身的軟件素質對軟件設計水平無疑起決定作用。軟件設計水平在嵌入式系統產品開發(fā)的過程中占有重要地位,直接影響到產品的水平和競爭能力。不容置疑,在我國各大專院校、科研院所和大中型企業(yè)中,有一批專家,他們的軟、硬件水平均非常高;但另一方面,我國目前絕大多數從事電子產品開發(fā)的技術人員身在基層,基本上不是計算機專業(yè)畢業(yè)的,有的沒有上過大學,他們未接受過系統的軟件基礎理論教育,軟件設計水平不太高。在軟件開發(fā)過程中,他們只是不自覺地采用了一些規(guī)律性的設計方法,或者模仿別人的程序設計方法,而有更多成熟的基本方法沒有被掌握,致使開發(fā)出來的軟件水平不高,使產品的功能和可靠性受到一定的制約。作者已經出版了《單片機應用程序設計技術》(修訂版)一書。該書內容以程序設計的經驗和技巧為主,而本書內容則以程序設計的基本算法為主,目的在于全面提高單片機程序設計者的軟件素質。軟件設計是一門科學,有其自身的規(guī)律,也有很多成熟的理論和算法。對于廣大電子技術人員來說,不大可能再脫產進大學系統學習基礎理論,只能一邊干一邊學。要學習就要選教材,而目前能選到的教材大都是專為大學生編寫的,如《數據結構》、《計算方法》、《線性代數》及《代數與編碼》等。這些教材起點較高,偏重理論證明,不考慮單片機的特點,對于廣大電子產品開發(fā)人員來說不是十分適合,學起來會感到比較抽象和吃力。出于提高我國廣大電子產品開發(fā)人員軟件素質的愿望,我決定編寫一本適合自學軟件理論基礎和基本算法的書。該書起點不高,只要有中學數學基礎,并已從事了一段時間電子產品的開發(fā),就可以看懂。學完本書后,對單片機程序設計的主要基礎理論和常用成熟算法能初步掌握,在進行軟件設計時,可以減少很多盲目性,并為更系統、更深入地學習計算機理論打下良好基礎。在內容上,我們選擇最基本和最成熟的理論和算法予以介紹。主要范圍為數據結構、計算方法、線性代數及代數與編碼,但不可能介紹全部內容,只是選取與單片機應用系統開發(fā)聯系最緊密的內容加以重新整理、編排,打破大學教科書的傳統教材格式,基本取消推導證明過程,盡量結合單片機的特點,使廣大讀者能夠比較順利地理解和接受。在單片機中應用最多的是線性數據結構,故本書第1章首先介紹常用的線性數據結構及部分基礎算法;第2章和第3章集中介紹線性數據結構的排序算法和查找算法;第4章介紹幾種常用的特殊算法,為進一步介紹非線性數據結構作準備;對于常用的非線性數據結構及其有關算法分別在第5,6章進行介紹;帶單片機的電子儀器設備一般都具有較強的數據處理能力,為此在第7章中介紹常用線性方程組的解法;第8章介紹插值算法;第9章介紹數理統計中常用的計算方法;第10章介紹常用編碼方法,這對優(yōu)化設計很有幫助;第11章介紹兩個實例,作為全書的一個總結;附錄A介紹浮點數據處理的基本原理,這對不熟悉浮點數的讀者會有一定幫助;附錄B為本書上機學習光盤文件說明。為了更好地掌握本書內容,建議上機實際運行一下書中的程序,效果一定要好得多。為配合學習,我們將書中的程序添加上主程序和各種支撐子程序以及數據樣品,形成可執(zhí)行、可調試的運行程序,并進行了較嚴格的測試,然后匯總成一張配套的上機學習光盤,附在本書中。在該光盤中還包含了經過長期考驗和優(yōu)化的最新版本的子程序庫,實用價值較高。本書1997年出版了第一版,受到讀者好評;但也存在一些缺陷,本次修訂工作就顯得十分必要。修訂工作如下:(1)對過時或不合適的字句進行修改,對插圖中少量的瑕疵進行了彌補。(2)對匯編語言程序中的常量和變量在定義時分別用EQU和DATA進行區(qū)分,使程序更準確、更規(guī)范。(3)對上機學習光盤中的程序進行了全面整理,更方便上機學習。(4)為配合C51的推廣,增加了大量與匯編語言程序對應的C算法程序。(5)增加了少量新內容。在本書修訂過程中,得到北京航空航天大學出版社的大力支持,在此表示衷心感謝!由于水平有限,書中錯誤及不足之處敬請廣大讀者予以指正,不勝感謝!作者于江西省撫州市2003年3月