關(guān)于我們
書單推薦
新書推薦
|
MSP430單片機(jī)原理與應(yīng)用
本書以MSP430F261x單片機(jī)為例, 全面而詳實地介紹了MSP430單片機(jī)結(jié)構(gòu)組成、工作原理以及常用模塊的使用方法。內(nèi)容組織上不貪大求全, 而是盡量做到把最常用、最能反映單片機(jī)精髓的知識講細(xì)、講精、講透, 以達(dá)到讓讀者觸類旁通的目的。
考慮到初學(xué)者的特點,實例先易后難,先單個功能、單個模塊地學(xué)習(xí),逐步轉(zhuǎn)換成對整個系統(tǒng)的分析和設(shè)計。
秉承“理論學(xué)習(xí)是認(rèn)識單片機(jī)的起點,設(shè)計單片機(jī)系統(tǒng)是*終落腳點”的理念,把*常用、*能反映單片機(jī)精髓的知識講細(xì)、講精、講透,以達(dá)到讓讀者觸類旁通的目的;通過實例并配合配合豐富有趣的習(xí)題練習(xí)使學(xué)生對單片機(jī)的理解硬件化或產(chǎn)品化。
前言
MSP430單片機(jī)是美國德州儀器(TexasInstruments,TI)于1996年開始推向市場的一種16位超低功耗單片機(jī),它具有極低功耗、高性能、豐富的片上外設(shè)和通信接口等特點。由于將多個不同功能的模擬電路、數(shù)字電路模塊和微處理器集成在一個芯片上,所以又稱之為混合信號處理器。
MSP430單片機(jī)不但具有傳統(tǒng)單片機(jī)的特征,還具有一些片上系統(tǒng)的特點。因此,國內(nèi)外很多高等院校已將MSP430系列單片機(jī)作為單片機(jī)相關(guān)課程的講授對象。
利用該單片機(jī)進(jìn)行嵌入式系統(tǒng)教學(xué)具有以下特點。
1.結(jié)構(gòu)簡單、資源豐富、使用方便
MSP430單片機(jī)使用的是16位RISCCPU,存儲結(jié)構(gòu)上采用馮·諾依曼結(jié)構(gòu)。各個片上外設(shè)均掛接在內(nèi)部總線上,但外設(shè)與外設(shè)之間、外設(shè)與CPU之間都是獨立工作的,外設(shè)與CPU通過中斷機(jī)制聯(lián)系在一起。MSP430單片機(jī)內(nèi)嵌有JTAG邏輯部件,便于下載和在線仿真。
MSP430單片機(jī)組織結(jié)構(gòu)簡潔、便于理解,其核心部件主要包括時鐘系統(tǒng)、RISCCPU、Flash、RAM和相關(guān)I/O端口,其他片上外設(shè)都是對該類單片機(jī)自身的擴(kuò)展和增強(qiáng)。
MSP430系列單片機(jī)種類豐富多樣。目前,MSP430單片機(jī)涵蓋F1xx、F2xx、G2xx、F4xx、F5xx、F6xx共6大系列,還有集成有無線收發(fā)功能的CC430系列等合計約有600種,能夠滿足大多數(shù)工程應(yīng)用場合的需求。
2.有利于減少外圍電路設(shè)計
MSP430單片機(jī)中集成大量的片上外圍設(shè)備,例如看門狗、模擬比較器、定時器、串行通信接口、硬件乘法器、液晶驅(qū)動器、10位/12位ADC、16位ΣΔADC、DMA、I/O端口、基本定時器、實時時鐘和USB控制器等。充分利用這些片上外設(shè),可以減少嵌入式系統(tǒng)外圍電路設(shè)計、簡化設(shè)計流程、節(jié)約成本、提高系統(tǒng)可靠性、縮小PCB和產(chǎn)品體積。
3.有利于開展更高層次的學(xué)習(xí)
MSP430單片機(jī)的內(nèi)核是16位RISCCPU。在整個單片機(jī)系列中,屬于中端單片機(jī)。在高端32位單片機(jī)中,一般是采用RISC核,如CortexM系列單片機(jī)。在掌握了MSP430單片機(jī)原理及其開發(fā)技術(shù)后,再學(xué)習(xí)32位的高端單片機(jī)難度將大為降低。當(dāng)然,在熟悉MSP430單片機(jī)的基礎(chǔ)上學(xué)習(xí)其他類型的單片機(jī)(如51單片機(jī))會更加容易。
4.MSP430單片機(jī)的市場逐漸擴(kuò)大
在美國德州儀器公司多年來不懈的努力下,MSP430單片機(jī)的市場份額在不斷增加,在16位單片機(jī)市場中獨占鰲頭。即便是在8位單片機(jī)市場中,也已對傳統(tǒng)的51單片機(jī)形成了強(qiáng)烈沖擊。
5.符合目前及未來節(jié)能降耗的要求
隨著世界能源危機(jī)日趨嚴(yán)重,迫切需要節(jié)能環(huán)保的產(chǎn)品。MSP430單片機(jī)與其他單片機(jī)相比在低功耗方面有著不可比擬的優(yōu)勢,推廣使用MSP430單片機(jī)符合“節(jié)能降耗”的時代主題。
盡管MSP430單片機(jī)具有眾多的技術(shù)優(yōu)勢,也是目前嵌入式系統(tǒng)應(yīng)用開發(fā)所必需的,但是目前能夠用于MSP430單片機(jī)教學(xué)的圖書較少。盡管這些圖書在編寫上各有所長,但就課堂教學(xué)來說,仍存在一些不足:①有些圖書內(nèi)容大多直接翻譯TI提供的用戶指南和數(shù)據(jù)手冊,并未做進(jìn)一步加工或整合;②有些圖書完全工程化的講解方式對工程師或具有一定單片機(jī)基礎(chǔ)的人有參考價值,不適合初學(xué)者。因為這些圖書直接講述單片機(jī)的工程應(yīng)用,對工作原理講解較少,讀者從這些書中獲取的信息,只是知其然,而不知其所以然,難以激發(fā)創(chuàng)新思維。
為此,我們在編寫過程中盡量彌補(bǔ)這些不足,同時融合了我們多年在嵌入式系統(tǒng)方面的科研積累與教學(xué)改革經(jīng)驗,使得本書具有以下鮮明特色。
(1)在內(nèi)容組織上打破了傳統(tǒng)的參考書式的講解方式,對各個知識點的內(nèi)容重新劃分整合。然后再按照由淺入深、循序漸進(jìn)的思路進(jìn)行重新組織,使之容易被學(xué)生接受。
(2)在實例選擇上盡量做到先易后難、先部分后整體,考慮到初學(xué)者的特點,力求使實例做到簡單易懂。首先讓學(xué)生通過學(xué)習(xí)簡單的例子激發(fā)和培養(yǎng)學(xué)生的學(xué)習(xí)興趣和探索欲望,然后再逐步提高難度、提升水平。先是單個功能、單個模塊的學(xué)習(xí),逐步轉(zhuǎn)換成對整個系統(tǒng)的分析和設(shè)計。
(3)秉承“理論學(xué)習(xí)是認(rèn)識單片機(jī)的起點,設(shè)計單片機(jī)系統(tǒng)是最終落腳點”的理念。在理論講解的基礎(chǔ)上,通過實例讓學(xué)生對單片機(jī)的認(rèn)識形象化,配合豐富有趣的習(xí)題練習(xí)使學(xué)生對于單片機(jī)的理解硬件化或產(chǎn)品化。
本書以MSP430F261x單片機(jī)為例,全面而翔實地介紹了MSP430單片機(jī)的結(jié)構(gòu)組成、工作原理以及常用模塊的使用方法。內(nèi)容組織上不貪大求全,而是盡量做到把最常用、最能反映單片機(jī)精髓的知識講細(xì)、講精、講透,以達(dá)到讓讀者觸類旁通的目的。在組織結(jié)構(gòu)上,全書共分為12章,第1章介紹了與嵌入式系統(tǒng)相關(guān)的基本知識;第2章介紹了MSP430單片機(jī)的內(nèi)部結(jié)構(gòu)和外部組成,并簡要介紹了MSP430單片機(jī)尋址方式、指令系統(tǒng);第3章主要回顧了MSP430單片機(jī)C程序設(shè)計的相關(guān)知識;第4~11章分別講述了MSP430單片機(jī)的輸入輸出端口及常用接口設(shè)計、時鐘系統(tǒng)、定時器、模數(shù)轉(zhuǎn)換器、數(shù)模轉(zhuǎn)換器、通用串行通信接口、存儲器、DMA等常用片上模塊的工作原理及使用方法;第12章介紹了MSP430單片機(jī)應(yīng)用系統(tǒng)設(shè)計基礎(chǔ)。
書中各章節(jié)的知識點都提供了簡單易懂的例程,本書所有例程均在IAREmbeddedWorkbenchForMSP430v5和TICCSv5中調(diào)試通過。每章附有大量習(xí)題供學(xué)生課下鞏固本章內(nèi)容,部分習(xí)題可以訓(xùn)練學(xué)生的創(chuàng)新思維能力。
總之,全書結(jié)構(gòu)緊湊、布局合理,具有一定的通用性、系統(tǒng)性和實用性。內(nèi)容敘述力求簡潔、凝練。力求做到深入淺出的理論講解、簡單易懂的實例設(shè)計、豐富有趣的習(xí)題練習(xí)、獨具匠心的知識體系。為了便于學(xué)習(xí)和閱讀TI公司提供的相關(guān)原始數(shù)據(jù)資料,本書使用的邏輯電路符號與公司官方資料中使用的符號保持一致。
在本書的編寫和出版過程中得到了蘭州大學(xué)信息科學(xué)與工程學(xué)院電路與系統(tǒng)研究所田毅、張燕、孫曉光、李劍、郭麗杰、楊澤坤、陳麗娜、張垚、趙繼鵬等研究生,以及蘭州大學(xué)信息科學(xué)與工程學(xué)院電子信息科學(xué)與技術(shù)專業(yè)和通信工程專業(yè)部分本科生的協(xié)助。感謝他們在資料搜集、書稿整理、程序調(diào)試、后期校稿等方面所做的工作。此外,書中例題參考了TI官方網(wǎng)站提供的大量例程,個別例題及部分內(nèi)容也參考了互聯(lián)網(wǎng)上的有關(guān)資料,在此向這些資料的作者一并表示誠摯的感謝。
需要特別指出的是,本教材的出版得到了蘭州大學(xué)教材建設(shè)基金資助和蘭州大學(xué)信息科學(xué)與工程學(xué)院教材建設(shè)基金資助。感謝美國德州儀器公司大學(xué)計劃給予蘭州大學(xué)MSP430&CortexM單片機(jī)聯(lián)合實驗室的持續(xù)支持。
由于作者水平所限,書中難免存在部分疏漏和不妥之處,懇請廣大讀者批評指正!
編者2017年3月于蘭州大學(xué)
第1章緒論
1.1嵌入式系統(tǒng)概述
1.1.1嵌入式系統(tǒng)的定義
1.1.2嵌入式系統(tǒng)的構(gòu)成
1.1.3嵌入式系統(tǒng)的特點
1.1.4嵌入式系統(tǒng)的發(fā)展
1.1.5嵌入式系統(tǒng)的應(yīng)用
1.2嵌入式微處理器
1.2.1嵌入式處理器分類
1.2.2嵌入式處理器的體系結(jié)構(gòu)
1.2.3常見嵌入式處理器
1.2.4嵌入式處理器的發(fā)展
1.3MSP430單片機(jī)
1.3.1典型特點
1.3.2命名規(guī)則
1.3.3產(chǎn)品系列概況
1.3.4應(yīng)用場合
習(xí)題
第2章MSP430單片機(jī)結(jié)構(gòu)組成
2.1內(nèi)部結(jié)構(gòu)
2.1.1中央處理器
2.1.2存儲空間組織結(jié)構(gòu)
2.1.3單片機(jī)復(fù)位過程
2.2外部結(jié)構(gòu)
2.2.1封裝類型
2.2.2引腳說明
2.2.3MSP430單片機(jī)最小系統(tǒng)
2.3指令系統(tǒng)
2.3.1指令集
2.3.2尋址方式
2.3.3指令周期
2.3.4指令集擴(kuò)展
習(xí)題
第3章MSP430單片機(jī)C語言程序設(shè)計基礎(chǔ)
3.1單片機(jī)程序設(shè)計基礎(chǔ)
3.1.1程序流程圖
3.1.2單片機(jī)程序設(shè)計語言
3.1.3單片機(jī)程序設(shè)計的一般步驟
3.2MSP430單片機(jī)C語言程序設(shè)計
3.2.1數(shù)據(jù)類型與運算符
3.2.2常見程序結(jié)構(gòu)
3.2.3數(shù)組
3.2.4函數(shù)
3.2.5指針類型
3.2.6預(yù)處理
3.2.7typedef定義類型
3.2.8規(guī)范化編程
3.3集成開發(fā)環(huán)境快速入門
3.3.1IAR EW430快速入門
3.3.2TI CCS快速入門
習(xí)題
第4章MSP430單片機(jī)中斷系統(tǒng)與輸入輸出接口
4.1中斷系統(tǒng)
4.1.1中斷系統(tǒng)基本概念
4.1.2中斷類型
4.1.3中斷響應(yīng)過程
4.1.4中斷函數(shù)
4.2數(shù)字I/O端口
4.2.1控制寄存器
4.2.2內(nèi)部結(jié)構(gòu)
4.2.3電氣特性
4.3端口應(yīng)用
4.3.1普通I/O端口
4.3.2外部中斷
4.3.3總線模擬
習(xí)題
第5章MSP430單片機(jī)時鐘系統(tǒng)與休眠模式
5.1時鐘系統(tǒng)
5.1.1時鐘系統(tǒng)結(jié)構(gòu)
5.1.2時鐘失效處理
5.2休眠模式
5.2.1休眠模式與低功耗
5.2.2休眠喚醒與退出
5.2.3休眠模式的應(yīng)用
習(xí)題
第6章MSP430單片機(jī)定時器
6.1定時器A
6.1.1定時計數(shù)部件
6.1.2捕獲/比較部件
6.2定時器B
6.2.1邏輯結(jié)構(gòu)
6.2.2定時計數(shù)部件
6.2.3捕獲/比較部件
6.3看門狗
6.3.1邏輯結(jié)構(gòu)
6.3.2定時模式
6.3.3看門狗模式
習(xí)題
第7章MSP430單片機(jī)常用接口設(shè)計
7.1LED顯示接口設(shè)計
7.1.1LED發(fā)光原理
7.1.2LED數(shù)碼管
7.1.3點陣LED
7.2LCD接口設(shè)計
7.2.1LCD顯示原理
7.2.2段式LCD
7.2.3點陣LCD
7.3鍵盤接口設(shè)計
7.3.1獨立式鍵盤
7.3.2矩陣式鍵盤
7.3.3觸摸按鍵
習(xí)題
第8章MSP430單片機(jī)模擬信號處理
8.1模擬信號處理概述
8.1.1自動控制系統(tǒng)
8.1.2單片機(jī)控制系統(tǒng)
8.1.3MSP430單片機(jī)集成的模擬設(shè)備
8.2模數(shù)轉(zhuǎn)換模塊
8.2.1模數(shù)轉(zhuǎn)換概述
8.2.2ADC12模塊
8.2.3ADC12工作過程
8.2.4轉(zhuǎn)換模式
8.3數(shù)模轉(zhuǎn)換模塊
8.3.1數(shù)模轉(zhuǎn)換概述
8.3.2DAC12模塊
8.3.3應(yīng)用舉例
習(xí)題
第9章MSP430單片機(jī)異步串行通信
9.1異步串行通信概述
9.1.1串行通信基本概念
9.1.2常見異步串行通信
9.1.3MSP430的串行通信模塊
9.2異步串行通信
9.2.1UART工作原理
9.2.2多機(jī)通信模式
9.2.3帶有自動波特率檢測的UART
9.2.4紅外通信
9.2.5軟件模擬UART通信
習(xí)題
第10章MSP430單片機(jī)同步串行通信
10.1同步串行通信概述
10.1.1同步方式
10.1.2常見同步串行通信
10.2I2C通信
10.2.1I2C概述
10.2.2I2C邏輯結(jié)構(gòu)
10.2.3中斷與初始化
10.2.4工作模式
10.2.5軟件模擬I2C通信
10.3SPI通信
10.3.1SPI總線及工作原理
10.3.2SPI模塊
10.3.3SPI連接方式
10.3.4軟件模擬SPI通信
習(xí)題
第11章MSP430單片機(jī)存儲系統(tǒng)
11.1存儲器概述
11.1.1半導(dǎo)體存儲器
11.1.2Flash存儲原理
11.1.3FRAM存儲原理
11.2MSP430單片機(jī)存儲系統(tǒng)
11.2.1地址空間劃分及訪問方式
11.2.2數(shù)據(jù)存儲器
11.2.3程序存儲器
11.3Flash控制器及應(yīng)用
11.3.1Flash控制器
11.3.2Flash的操作
11.4MSP430單片機(jī)存儲器的擴(kuò)展
11.4.1存儲器擴(kuò)展
11.4.2SD卡的應(yīng)用
11.5直接存儲器存取
11.5.1DMA模塊的結(jié)構(gòu)與工作原理
11.5.2DMA傳輸模式
11.5.3DMA觸發(fā)源
習(xí)題
第12章MSP430單片機(jī)應(yīng)用系統(tǒng)設(shè)計基礎(chǔ)
12.1單片機(jī)應(yīng)用系統(tǒng)設(shè)計概述
12.1.1單片機(jī)應(yīng)用系統(tǒng)設(shè)計一般步驟
12.1.2基于MSP430單片機(jī)的應(yīng)用系統(tǒng)設(shè)計
12.2單片機(jī)應(yīng)用系統(tǒng)的抗干擾與低功耗設(shè)計
12.2.1抗干擾技術(shù)
12.2.2低功耗設(shè)計技術(shù)
12.3嵌入式操作系統(tǒng)的應(yīng)用
12.3.1嵌入式操作系統(tǒng)基礎(chǔ)
12.3.2μC/OS Ⅱ在MSP430單片機(jī)上的移植
12.3.3基于μC/OS Ⅱ的單片機(jī)系統(tǒng)開發(fā)
習(xí)題
附錄A中斷向量速查表
附錄B端口功能速查表
附錄C寄存器速查表
參考文獻(xiàn)
第3章
CHAPTER3
MSP430單片機(jī)C語言
程序設(shè)計基礎(chǔ)
3.1單片機(jī)程序設(shè)計基礎(chǔ)
3.1.1程序流程圖
在程序設(shè)計中,最重要的不是編寫代碼而是算法設(shè)計,這與建筑和機(jī)械制造很相似。例如,當(dāng)要建設(shè)一棟高樓時,首先要做的是繪制高樓的結(jié)構(gòu)圖以及施工圖,然后是現(xiàn)場施工。程序設(shè)計也是如此,當(dāng)面對一個程序設(shè)計任務(wù)時,首先想要做的是先畫出整個任務(wù)實現(xiàn)的流程圖,然后再使用具體的程序設(shè)計語言進(jìn)行代碼實現(xiàn)?梢姡绦蛄鞒虉D的繪制在整個程序設(shè)計中起著重要作用。實際上,繪制流程圖的過程就是思考和形成算法的過程。由于其直觀性,繪制過程本身又促進(jìn)了思考。因此,程序流程圖是人們對解決問題的方法、思路或算法的一種描述方法。當(dāng)人們看到一個優(yōu)秀的程序流程圖時,就能很快地把握住程序結(jié)構(gòu)和處理思路,有利于程序糾錯和維護(hù)。
程序流程圖具有符號規(guī)范、畫法簡單、結(jié)構(gòu)清晰、邏輯性強(qiáng)、便于描述、容易理解等優(yōu)點。繪制流程圖所需要的基本符號如圖3.1所示,它們分別是起始框、終止框、執(zhí)行框和判別框。其中,起始框和終止框是程序流程圖必備的;執(zhí)行框中注有必要文字說明以指示具體執(zhí)行了何種操作,該框所指的操作可大可小。在概要設(shè)計階段執(zhí)行框所描述的是一個大的功能模塊。在詳細(xì)設(shè)計階段則是指在實現(xiàn)某一特定功能時需要執(zhí)行的具體指令或語句。
圖3.1流程圖中基本符號
繪制程序框圖的規(guī)則:使用標(biāo)準(zhǔn)的框圖符號;框圖一般按從上到下、從左到右的方向畫;除判別框外,大多數(shù)程序框圖的符號只有一個進(jìn)入點和一個退出點,而判別框是具有超過一個退出點的唯一符號。在繪制流程圖時要注意結(jié)構(gòu)化程序設(shè)計中三種基本結(jié)構(gòu)的流程圖標(biāo)準(zhǔn)畫法。盡量將復(fù)合條件轉(zhuǎn)為多個單一條件。流程線不要忘記畫箭頭,因為它是反映流程執(zhí)行的先后順序。如果不畫箭頭,就難以判斷執(zhí)行次序。
3.1.2單片機(jī)程序設(shè)計語言
目前主要的單片機(jī)程序設(shè)計語言是匯編語言和C語言。匯編語言是面向CPU的程序設(shè)計語言。由于匯編語言程序直接利用單片機(jī)指令集中的指令實現(xiàn)具體的算法功能,因此匯編語言與機(jī)器語言具有較好的一致性,可以訪問所有能夠被訪問的軟、硬件資源。匯編語言程序的目標(biāo)代碼簡短,占用內(nèi)存少,執(zhí)行速度快,是高效的程序設(shè)計語言。它經(jīng)常與高級語言配合使用,以改善程序的執(zhí)行速度和效率,彌補(bǔ)高級語言在硬件控制方面的不足。匯編語言的缺點是不同處理器具有不同的匯編語言語法和編譯器,編譯好的程序無法在不同的處理器上執(zhí)行,缺乏可移植性。匯編語言程序的可讀性差、不易維護(hù)?傊,匯編語言程序編寫煩瑣、工作量大、開發(fā)效率很低,周期長且單調(diào)。目前處理器性能不斷提升、存儲資源越來越豐富,使得匯編語言目標(biāo)代碼少、效率高的優(yōu)勢正在逐漸喪失。使用匯編語言從事嵌入式系統(tǒng)開發(fā)的人數(shù)總體呈下降趨勢。
C語言是一種既具有高級語言的特點,又具有部分匯編語言特點的程序設(shè)計語言。C語言也是一種結(jié)構(gòu)化的程序設(shè)計語言,因為它提供了三種基本結(jié)構(gòu)語句,而且提供了定義“函數(shù)”的功能。函數(shù)可以完成子程序的所有功能,是完成程序功能的基本構(gòu)件。由于函數(shù)允許將一個程序中的多個任務(wù)被分別定義、編碼和單獨編譯,所以函數(shù)可以使程序模塊化。作為一種高級語言,C語言功能齊全、應(yīng)用范圍大,已是目前最為流行的高級語言之一。但是C語言代碼的執(zhí)行效率比匯編語言要低。
在程序設(shè)計歷史上匯編語言曾是非常流行的語言之一。一方面,隨著硬件技術(shù)的進(jìn)步,CPU性能不斷提高、儲存資源日益增大、成本逐漸降低;另一方面,隨著軟件規(guī)模的增長以及對開發(fā)進(jìn)度和效率的苛刻要求,高級語言逐漸取代了匯編語言。但即便如此,高級語言也不可能完全替代匯編語言的作用。以Linux內(nèi)核為例,盡管絕大部分內(nèi)核代碼是用C語言編寫的,但在某些關(guān)鍵地方仍然使用了匯編代碼。因為這部分代碼與硬件的關(guān)系非常密切,即使是C語言也會顯得力不從心,而匯編語言則能夠很好地?fù)P長避短,最大限度地發(fā)揮硬件的性能。
一般對于小程序來說,若是對硬件進(jìn)行簡單的控制可以用匯編語言,若更多涉及邏輯設(shè)計方面的內(nèi)容,則需要使用C語言。對于稍大一些的程序來說,C語言的優(yōu)勢就十分明顯了。就現(xiàn)代單片機(jī)程序設(shè)計來說,大多是以C語言為主,匯編語言為輔。即只有在那些對代碼大小和效率要求較高的場合才使用匯編語言。
3.1.3單片機(jī)程序設(shè)計的一般步驟
圖3.2單片機(jī)程序設(shè)計流程圖
人們在嵌入式系統(tǒng)產(chǎn)品開發(fā)過程中摸索出了程序設(shè)計的一般步驟,具體如圖3.2所示。該步驟對于基于單片機(jī)的產(chǎn)品設(shè)計與程序開發(fā)具有很好的借鑒作用。按此步驟進(jìn)行產(chǎn)品開發(fā)可使設(shè)計者少走彎路,縮短開發(fā)周期,提高產(chǎn)品可靠性。
1.需求分析、明確任務(wù)
該階段要盡可能搞清楚用戶的全部需求信息,即對要完成的任務(wù)進(jìn)行詳細(xì)的了解與分析。然后將具體的實際問題抽象轉(zhuǎn)化成計算機(jī)可以處理的問題。
2.算法設(shè)計
在明確任務(wù)之后,就需要將其轉(zhuǎn)化成計算機(jī)算法。算法就是在計算機(jī)上解決問題的方法與步驟。對于復(fù)雜的大型程序,算法設(shè)計又可分為概要設(shè)計和詳細(xì)設(shè)計兩個階段。對于比較小的軟件兩個可以同時做。詳細(xì)設(shè)計完成后算法設(shè)計也就基本完成了,接下來將設(shè)計好的算法轉(zhuǎn)化成使用具體程序設(shè)計語言編寫出的程序,進(jìn)而實現(xiàn)在計算機(jī)上的求解。在設(shè)計算法時一般會采用或借鑒現(xiàn)有的一些計算方法和日常生活中解決問題的邏輯思維推理方法等。
繪制程序流程圖是在算法設(shè)計之初就開始的工作,在算法設(shè)計好之后,程序流程圖也就確定了。所以說算法設(shè)計的過程,也是繪制程序流程的過程。通過畫流程圖可以首先從圖上檢驗算法的正確性,減少出錯的可能,使得動手編寫程序時的思路更加清晰。
3.芯片選擇及合理分配單片機(jī)資源
等完成算法設(shè)計之后,就需要決定在何種硬件平臺上實現(xiàn)上述算法。在確定好主要芯片之后,就需要完成單片機(jī)系統(tǒng)的資源配置及分配,主要是單片機(jī)存儲空間和工作單元的合理分配和外圍設(shè)備的配置。在這個過程中,應(yīng)充分利用不同型號單片機(jī)的特殊優(yōu)點以方便資源配置和系統(tǒng)設(shè)計。例如,合理、正確地對存儲空間進(jìn)行分段和數(shù)據(jù)定義。由于MSP430單片機(jī)對16位數(shù)據(jù)處理效率最高,因此要充分利用這一特點。
4.代碼編寫
該步驟在單片機(jī)程序設(shè)計中是最為重要的一步。經(jīng)過1~3步的準(zhǔn)備,已完成了程序代碼編寫前的所有工作。編寫程序時要選擇好編寫語言,對于同一種算法,不同的程序設(shè)計語言會有不同的實現(xiàn)方法。編程能力的提高是一個循序漸進(jìn)的過程。對于初學(xué)者來說,一方面,要多讀現(xiàn)有的程序,以學(xué)習(xí)別人的編程經(jīng)驗;另一方面,還必須多動手,親自編寫程序,不要怕失敗,只有通過無數(shù)次失敗,才能從中積累自己的編程經(jīng)驗。
5.程序調(diào)試
在源代碼編寫完畢之后,就要進(jìn)行調(diào)試。通過調(diào)試的程序只能說明沒有語法錯誤,但不能排除沒有邏輯錯誤。所以能不能達(dá)到預(yù)期效果還必須用實際數(shù)據(jù)測試才可以。一般來說,這是一個反復(fù)測試的過程。對此,程序編寫人員,尤其是初學(xué)者一定要有充分的心理準(zhǔn)備。只要有足夠的耐心,加上認(rèn)真、細(xì)致的工作態(tài)度,就一定能找出其中的邏輯錯誤。事實上,即使是一個非常有經(jīng)驗的程序員,也沒有百分之百的把握一次就成功。
6.性能評估
在程序調(diào)試完后,就需要將程序應(yīng)用到產(chǎn)品上進(jìn)行實際環(huán)境檢驗,其中包括功能檢驗、可靠性檢驗、極端環(huán)境下檢驗。凡經(jīng)過檢驗符合要求了,整個程序設(shè)計工作就算結(jié)束了,接下來就是文檔整理與使用說明書的編寫工作了。若不符合要求,則需要重新開始,這是最壞的情況。一般而言,只要將任務(wù)需求分析做得足夠細(xì),一般不會出現(xiàn)這種極端情況。
7.文檔整理與編寫
程序運行無誤,實際試運行正常,且經(jīng)過了各種環(huán)境測試,但這并不意味著產(chǎn)品開發(fā)任務(wù)的結(jié)束。程序文檔的編寫也是程序設(shè)計的一個重要任務(wù)。其目的是為了便于修改和維護(hù)程序。程序文檔一般包括含有功能要求和指標(biāo)程序的設(shè)計任務(wù)書、程序流程圖、存儲單元分配清單、源程序清單、應(yīng)用系統(tǒng)資源分配、參量計算和設(shè)計、錯誤信息的定義、實際功能及指標(biāo)測試結(jié)果說明、程序使用和維護(hù)說明書等。需要注意的是,部分程序文檔的編寫是與上述1~6步同時進(jìn)行的。
3.2MSP430單片機(jī)C語言程序設(shè)計
目前支持MSP430單片機(jī)的C語言編譯器很多,國內(nèi)主要使用的是IAR公司的IAREmbeddedWorkbenchforMSP430(EW430)和TI公司開發(fā)的CodeComposerStudio(CCS)。MSPGCC作為一種開源編譯器也具有一定的使用者。這些C編譯器功能比較強(qiáng)大,可以編譯出高效、緊湊的機(jī)器代碼。
MSP430單片機(jī)的C語言程序(以后簡稱C430)設(shè)計方法與標(biāo)準(zhǔn)C語言的基本上相同。但單片機(jī)的資源與PC相比,十分匱乏。為了更好地適應(yīng)MSP430單片機(jī)的程序設(shè)計,C430對標(biāo)準(zhǔn)C語言進(jìn)行了擴(kuò)展。主要表現(xiàn)在數(shù)據(jù)類型及數(shù)據(jù)長度、關(guān)鍵字?jǐn)U展以及由此引起的函數(shù)擴(kuò)展等。需要說明的是,不同的C430編譯器對C語言的擴(kuò)展不完全相同,例如,IAR公司的C編譯器與TI公司的C編譯器都對C語言的支持程度略有不同,大多數(shù)情況下,MSP430單片機(jī)的源程序可以在各個版本的C430編譯器上使用。
3.2.1數(shù)據(jù)類型與運算符
1.標(biāo)識符與關(guān)鍵字
標(biāo)識符是指常量、變量、語句標(biāo)號、數(shù)組、文件名以及用戶自定義函數(shù)的名稱。C語言規(guī)定標(biāo)識符只能由字母、數(shù)字、下畫線組成,并且只能由字母、下畫線開頭,所用字母區(qū)分大小寫。C語言中一些已被賦予特定含義的標(biāo)識符被稱為關(guān)鍵字或保留字,關(guān)鍵字不能用作標(biāo)識符,在C語言中的關(guān)鍵詞見表3.1。這些關(guān)鍵字將在后續(xù)章節(jié)中陸續(xù)介紹。
表3.1C語言中的32個關(guān)鍵詞
與數(shù)據(jù)類型相關(guān)的關(guān)鍵字(12個)
short聲明短整型變量或函數(shù)struct聲明結(jié)構(gòu)體變量或函數(shù)
int聲明整型變量或函數(shù)union聲明共用數(shù)據(jù)類型
long聲明長整型變量或函數(shù)enum聲明枚舉類型
float聲明浮點型變量或函數(shù)void聲明函數(shù)無返回值或無參數(shù),聲明無類型指針
double聲明雙精度變量或函數(shù)unsigned聲明無符號類型變量或函數(shù)
char聲明字符型變量或函數(shù)signed聲明有符號類型變量或函數(shù)
續(xù)表
與變量有關(guān)的關(guān)鍵字(6個)
auto聲明自動變量extern聲明變量是在其他文件正聲明
const聲明只讀變量register聲明寄存器變量
static聲明靜態(tài)變量volatile說明變量在程序執(zhí)行中可被隱含地改變
與程序控制有關(guān)的關(guān)鍵字(12個)
if條件語句for一種循環(huán)語句
else條件語句否定分支(與if連用)do循環(huán)語句的循環(huán)體
switch用于開關(guān)語句while循環(huán)語句的循環(huán)條件
case開關(guān)語句分支continue結(jié)束當(dāng)前循環(huán),開始下一輪循環(huán)
default開關(guān)語句中的“其他”分支break跳出當(dāng)前循環(huán)
goto無條件跳轉(zhuǎn)語句return子程序返回語句(可以帶參數(shù),也可不帶參數(shù))
其他關(guān)鍵字(2個)
sizeof計算數(shù)據(jù)類型長度typedef用以給數(shù)據(jù)類型取別名
你還可能感興趣
我要評論
|