PIC上海技術(shù)培訓(xùn)中心課件_第1頁(yè)
PIC上海技術(shù)培訓(xùn)中心課件_第2頁(yè)
PIC上海技術(shù)培訓(xùn)中心課件_第3頁(yè)
PIC上海技術(shù)培訓(xùn)中心課件_第4頁(yè)
PIC上海技術(shù)培訓(xùn)中心課件_第5頁(yè)
已閱讀5頁(yè),還剩629頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

PIC單片機(jī)原理及應(yīng)用(第二版)美國(guó)微芯公司授權(quán)上海技術(shù)培訓(xùn)中心2005.01PIC上海技術(shù)培訓(xùn)中心1PIC單片機(jī)原理及應(yīng)用(第二版)PIC上海技術(shù)培訓(xùn)中心1第1章微型計(jì)算機(jī)概論

微型計(jì)算機(jī)是一種既有快速運(yùn)算能力,又有極強(qiáng)邏輯判斷能力和大容量存儲(chǔ)功能的電子設(shè)備,它是20世紀(jì)人類最卓越的科學(xué)發(fā)明之一。本章介紹微型計(jì)算機(jī)的基礎(chǔ)知識(shí),主要內(nèi)容有微型計(jì)算機(jī)的發(fā)展歷史及應(yīng)用領(lǐng)域、計(jì)算機(jī)硬件、軟件系統(tǒng)的基本組成。

PIC上海技術(shù)培訓(xùn)中心2第1章微型計(jì)算機(jī)概論

PIC上海技術(shù)培訓(xùn)中心21.1微型計(jì)算機(jī)的發(fā)展歷史及應(yīng)用

我們今天所說(shuō)的計(jì)算機(jī),是指利用電子技術(shù)實(shí)現(xiàn)計(jì)算并具有邏輯判斷和程序存儲(chǔ)功能的設(shè)備。

PIC上海技術(shù)培訓(xùn)中心31.1微型計(jì)算機(jī)的發(fā)展歷史及應(yīng)用PIC上海技術(shù)培

1.1.1微型計(jì)算機(jī)的發(fā)展歷史

從計(jì)算機(jī)發(fā)展的歷史看,微型計(jì)算機(jī)已屬于第四代計(jì)算機(jī),而微型計(jì)算機(jī)的發(fā)展又已經(jīng)歷了四代。

PIC上海技術(shù)培訓(xùn)中心41.1.1微型計(jì)算機(jī)的發(fā)展歷史從計(jì)算機(jī)發(fā)展1.1.2微型計(jì)算機(jī)的應(yīng)用

科學(xué)計(jì)算

數(shù)據(jù)處理

過(guò)程控制

計(jì)算機(jī)輔助設(shè)計(jì)/輔助制造(CAD/CAM)

計(jì)算機(jī)網(wǎng)絡(luò)

PIC上海技術(shù)培訓(xùn)中心51.1.2微型計(jì)算機(jī)的應(yīng)用PIC上海技術(shù)培訓(xùn)中1.1.3微型計(jì)算機(jī)系統(tǒng)主要技術(shù)指標(biāo)

字長(zhǎng):計(jì)算機(jī)的字長(zhǎng)取8的整數(shù)倍數(shù),如8位、16位、32位、64位等

速度:計(jì)算機(jī)的速度指標(biāo)可用主頻及運(yùn)算速度來(lái)評(píng)價(jià)(G)、(萬(wàn)次/秒)存儲(chǔ)系統(tǒng)容量:內(nèi)存和外存(M)(G)PIC上海技術(shù)培訓(xùn)中心61.1.3微型計(jì)算機(jī)系統(tǒng)主要技術(shù)指標(biāo)PIC上海技術(shù)培訓(xùn)中1.2微型計(jì)算機(jī)系統(tǒng)的組成

計(jì)算機(jī)的硬件通常包括運(yùn)算器、存儲(chǔ)器、控制器、輸入設(shè)備及輸出設(shè)備等五個(gè)部分

PIC上海技術(shù)培訓(xùn)中心71.2微型計(jì)算機(jī)系統(tǒng)的組成計(jì)算機(jī)的1.2.2軟件系統(tǒng)

軟件系統(tǒng)是一臺(tái)計(jì)算機(jī)中的系統(tǒng)軟件、應(yīng)用軟件、程序設(shè)計(jì)語(yǔ)言和支持軟件及各種文檔的總稱。系統(tǒng)軟件:包括操作系統(tǒng)、服務(wù)程序、匯編程序、解釋程序和編譯程序等。應(yīng)用軟件:是用匯編語(yǔ)言或高級(jí)語(yǔ)言為解決某種實(shí)際問(wèn)題而編寫的程序。程序設(shè)計(jì)語(yǔ)言:通常分為面向機(jī)器的匯編語(yǔ)言和面向用戶的高級(jí)語(yǔ)言。

PIC上海技術(shù)培訓(xùn)中心81.2.2軟件系統(tǒng)軟件系統(tǒng)是一臺(tái)計(jì)算機(jī)中

1.3微控制器系統(tǒng)

在計(jì)算機(jī)的發(fā)展歷史上,特別是在第一臺(tái)小型控制器件形成以后,沿著兩條完全不同的用途、不同的價(jià)格、和不同的技術(shù)內(nèi)涵,而被充實(shí)于我們的日常生活中。

PIC上海技術(shù)培訓(xùn)中心91.3微控制器系統(tǒng)PIC上海技術(shù)培訓(xùn)中心91.3.1單片機(jī)系統(tǒng)

單片機(jī)的發(fā)展過(guò)程和性能的日益完善,實(shí)際上是對(duì)傳統(tǒng)控制技術(shù)的一場(chǎng)革命,開創(chuàng)了微控技術(shù)的新天地?,F(xiàn)代控制系統(tǒng)的核心內(nèi)涵就是嵌入式計(jì)算機(jī)應(yīng)用系統(tǒng)(MCU),而單片機(jī)就是最典型、最廣泛、最普及的嵌入式計(jì)算機(jī)應(yīng)用系統(tǒng)。

PIC上海技術(shù)培訓(xùn)中心101.3.1單片機(jī)系統(tǒng)單片機(jī)的發(fā)展過(guò)程單片機(jī)的降臨,主要也是源于其性能價(jià)格比。一般單片機(jī)用于控制的目的,而對(duì)于其承擔(dān)的計(jì)算功能卻要求不高,只要能按照一定的程式進(jìn)行在線檢測(cè)和即時(shí)控制工作。目前,各個(gè)單片機(jī)生產(chǎn)廠家還是立足于8位單片機(jī)的競(jìng)爭(zhēng),因?yàn)閺钠浣蹬R以來(lái),一直成為應(yīng)用最廣泛的器件。2002年美國(guó)MICROCHIP和MOTOROLA兩家公司,已占據(jù)著世界8位單片機(jī)產(chǎn)量最高的前兩個(gè)芯片制造商。PIC上海技術(shù)培訓(xùn)中心11PIC上海技術(shù)培訓(xùn)中心11

一般的單片機(jī)的結(jié)構(gòu)可以用圖1.2所示的方塊圖描述,用三大總線(DB、AB、CB)實(shí)現(xiàn)模塊之間的信息傳遞。單片機(jī)內(nèi)部結(jié)構(gòu)PIC上海技術(shù)培訓(xùn)中心12

單片機(jī)內(nèi)部結(jié)構(gòu)PIC上海技術(shù)培訓(xùn)中心12

單片機(jī)的主要應(yīng)用

人有所思,單片機(jī)就可為。單片機(jī)的應(yīng)用必將隨著社會(huì)的發(fā)展和技術(shù)的進(jìn)步,而獲得更廣闊應(yīng)用。(系列化的單片機(jī)?).電信.家用電器.工業(yè)控制.儀器儀表.汽車.玩具PIC上海技術(shù)培訓(xùn)中心13

單片機(jī)的主要應(yīng)用

人有所思,單單片機(jī)有哪些特點(diǎn)

單片機(jī)具備體積小、價(jià)格低、性能強(qiáng)、速度快、用途廣、可靠性高、靈活性強(qiáng)等優(yōu)點(diǎn),它與通用的計(jì)算機(jī)相比,還具有以下一些特點(diǎn):.存儲(chǔ)器ROM和RAM的相互獨(dú)立.采用面向控制的指令系統(tǒng).輸入/輸出端口的強(qiáng)大功能PIC上海技術(shù)培訓(xùn)中心14單片機(jī)有哪些特點(diǎn)

單片機(jī)具備體積1.3.2PIC系列單片機(jī)

PIC系列單片機(jī),可以滿足用戶的各種需要。從中檔產(chǎn)品PIC16F877作為切入點(diǎn),提供非常完備、易學(xué)易用的MPLAB-ICD集成開發(fā)環(huán)境。特別是對(duì)于單片機(jī)的新手,仿佛從茫然迷惑的大海搭上一艘便捷平穩(wěn)的小船,感到非常輕松自如。

PIC上海技術(shù)培訓(xùn)中心151.3.2PIC系列單片機(jī) PIC第2章PIC單片微機(jī)的組成

PIC(PeripheryInterfaceChip)單片微機(jī)是美國(guó)Microchip公司生產(chǎn)的PIC系列單片機(jī)。PIC系列單片機(jī)的硬件系統(tǒng)設(shè)計(jì)簡(jiǎn)潔,指令系統(tǒng)設(shè)計(jì)精煉。在所有的單片機(jī)品種中,PIC具有性能完善、功能強(qiáng)大、學(xué)習(xí)容易、開發(fā)應(yīng)用方便、人機(jī)界面友好等突出優(yōu)點(diǎn)。

PIC上海技術(shù)培訓(xùn)中心16第2章PIC單片微機(jī)的組成PIC(P2.1PIC系列單片機(jī)概述

Microchip公司是一家專門致力于單片機(jī)開發(fā)、研制和生產(chǎn)的制造商,其產(chǎn)品設(shè)計(jì)起點(diǎn)高,技術(shù)領(lǐng)先,性能優(yōu)越。它不是在一般微型計(jì)算機(jī)CPU的基礎(chǔ)上加以改造,而是獨(dú)樹一幟,采用全新的流水線結(jié)構(gòu)、單字節(jié)指令體系、嵌入閃存以及10位A/D轉(zhuǎn)換器,使之具有卓越的性能,代表著單片機(jī)發(fā)展的新方向。PIC系列單片機(jī),具有高、中、低三個(gè)檔次,可以滿足不同用戶開發(fā)的需要,適合在各個(gè)領(lǐng)域中的應(yīng)用。它具有如下特點(diǎn):2.1.1PIC系列單片機(jī)特點(diǎn)PIC上海技術(shù)培訓(xùn)中心172.1PIC系列單片機(jī)概述Microch單片機(jī)總線結(jié)構(gòu)

單片微型計(jì)算機(jī)通常采用兩種體系結(jié)構(gòu):一種是普林斯頓體系結(jié)構(gòu);另一種是哈佛體系結(jié)構(gòu)。在普林斯頓體系結(jié)構(gòu)中,其程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器統(tǒng)一編址,也就是說(shuō)兩種存儲(chǔ)器位于同一邏輯空間。這種單片機(jī)的取指令和存取數(shù)據(jù)必須分時(shí)地進(jìn)行,影響了執(zhí)行指令的速度。

哈佛體系結(jié)構(gòu)的程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器獨(dú)立編址,也就是說(shuō)兩種存儲(chǔ)器有不同的邏輯空間。

PIC上海技術(shù)培訓(xùn)中心18單片機(jī)總線結(jié)構(gòu)單片微型計(jì)算機(jī)通常采用兩種體系結(jié)

PIC系列單片機(jī)采用哈佛總線結(jié)構(gòu),在芯片內(nèi)部數(shù)據(jù)總線和指令總線分離,容許采用不同的字節(jié)寬度。這樣,就為實(shí)現(xiàn)指令提取和執(zhí)行的“流水作業(yè)”提供結(jié)構(gòu)保證,即在執(zhí)行一條指令的同時(shí)對(duì)下一條指令進(jìn)行取指操作。兩總線的分離,也為PIC實(shí)現(xiàn)全部指令的單字節(jié)化和單周期化創(chuàng)造條件,從而大大提高CPU執(zhí)行指令的速度和工作效率。1.哈佛總線結(jié)構(gòu)

PIC上海技術(shù)培訓(xùn)中心19PIC系列單片機(jī)采用哈佛總線結(jié)構(gòu),在芯片內(nèi)部數(shù)據(jù)單片機(jī)總線結(jié)構(gòu)比較

從同一存儲(chǔ)器空間取指令和取操作數(shù)據(jù)。限制了數(shù)據(jù)流量。

從兩個(gè)獨(dú)立的存儲(chǔ)空間分別取指令和存取操作數(shù)。數(shù)據(jù)流量增加。針對(duì)程序區(qū)和數(shù)據(jù)區(qū)可以設(shè)計(jì)不同的數(shù)據(jù)線寬度。程序和數(shù)據(jù)存儲(chǔ)器馮-紐曼結(jié)構(gòu)8-位CPU程序存儲(chǔ)器數(shù)據(jù)存儲(chǔ)器8-位12/14/16-位哈佛結(jié)構(gòu)CPUPIC上海技術(shù)培訓(xùn)中心20單片機(jī)總線結(jié)構(gòu)比較從同一存儲(chǔ)器空間取指令和

PIC系列單片機(jī)的指令系統(tǒng),由于采用RISC技術(shù),和一般單片機(jī)指令系統(tǒng)通常有上百條指令相比要少得多。2.RISC技術(shù)

PIC上海技術(shù)培訓(xùn)中心21PIC系列單片機(jī)的指令系統(tǒng),由于采用RISC技術(shù)

PIC系列單片機(jī)只有4種尋址方式:寄存器間接尋址、立即數(shù)尋址、直接尋址和位尋址,比較容易掌握。PIC系列單片機(jī)的程序、數(shù)據(jù)、堆棧三者各自采用互相獨(dú)立的地址空間,前兩者的地址訪問(wèn)需要用戶特別注意四個(gè)分區(qū)的范圍,而堆棧過(guò)程用戶不必參與和操心。代碼壓縮率,就是指相同程序存儲(chǔ)器空間所能容納有效指令的數(shù)量。3.指令特色

PIC上海技術(shù)培訓(xùn)中心22PIC系列單片機(jī)只有4種尋址方式:寄存器間接尋址由于PIC系列單片機(jī)采用CMOS結(jié)構(gòu),使其功率消耗極低,是目前世界上最低功耗的單片機(jī)品種之一。其中有些型號(hào),在4MHz時(shí)鐘下工作時(shí)耗電不超過(guò)2mA,而在睡眠模式下耗電可低到1μA以下。因此,PIC系列單片機(jī),尤其適用于野外移動(dòng)儀表的控制以及戶外免維護(hù)的控制系統(tǒng)。5.功耗低

PIC上海技術(shù)培訓(xùn)中心23由于PIC系列單片機(jī)采用CMOS結(jié)構(gòu),使其功率消耗

I/0端口驅(qū)動(dòng)負(fù)載的能力較強(qiáng),每個(gè)輸出引腳可以驅(qū)動(dòng)多達(dá)20-25mA的負(fù)載,既能夠高電平直接驅(qū)動(dòng)發(fā)光二極管LED、光電藕合器、小型繼電器等,也可以低電平直接驅(qū)動(dòng),這樣可大大簡(jiǎn)化控制電路。不過(guò),請(qǐng)讀者注意,每個(gè)引腳的驅(qū)動(dòng)能力并不表示端口引腳同時(shí)都具有這樣的功效。一般端口驅(qū)動(dòng)能力約60-70mA,而所有輸入輸出驅(qū)動(dòng)小于200mA,詳細(xì)數(shù)據(jù)可參考有關(guān)數(shù)據(jù)手冊(cè)。6.驅(qū)動(dòng)能力強(qiáng)

PIC上海技術(shù)培訓(xùn)中心24I/0端口驅(qū)動(dòng)負(fù)載的能力較強(qiáng),每個(gè)輸出引腳可以驅(qū)PIC主要是采用哈佛總線結(jié)構(gòu),可以同時(shí)進(jìn)行指令讀取和指令執(zhí)行的流水線作業(yè)方式。如:MCS-5112M,指令執(zhí)行時(shí)間為1s~4sPIC12M時(shí)鐘周期,指令執(zhí)行時(shí)間為0.3~0.6s

7.運(yùn)行速度高PIC上海技術(shù)培訓(xùn)中心25PIC主要是采用哈佛總線結(jié)構(gòu),可以同時(shí)

PIC系列單片機(jī)的一些型號(hào)具有同步串行口,可以滿足I2C(主控/從動(dòng))和SPI(主控)總線要求。I2C和SPI(SerialPeripheralInterface)分別是PHILIPS公司和MOTOROLA公司研制的兩種廣泛流行的串行總線標(biāo)準(zhǔn),是一種在芯片之間實(shí)現(xiàn)同步串行數(shù)據(jù)傳輸?shù)募夹g(shù)。利用單片機(jī)串行總線端口可以方便而靈活地?cái)U(kuò)展外圍器件,目前已在許多電子產(chǎn)品中得到廣泛應(yīng)用。8.同步串行數(shù)據(jù)傳送方式

PIC上海技術(shù)培訓(xùn)中心26PIC系列單片機(jī)的一些型號(hào)具有同步串行口,可以滿

2.1.2PIC16F877的結(jié)構(gòu)

從其執(zhí)行功能考慮,可以將單片機(jī)分成兩大組件,即基本功能模塊和專用功能模塊。PIC上海技術(shù)培訓(xùn)中心272.1.2PIC16F877的結(jié)構(gòu)

PIC上海技術(shù)培訓(xùn)中心28PIC上海技術(shù)培訓(xùn)中心28

PICl6F87X系列單片機(jī)有雙列直插式28引腳和40引腳及表面貼裝式44引腳等幾種封裝形式。多數(shù)I/O引腳都設(shè)計(jì)有第2功能,甚至第3功能。采用引腳復(fù)用技術(shù),以便使單片機(jī)增加功能而又不增大體積和引腳數(shù)量。2.1.3PIC16F877的引腳

PIC上海技術(shù)培訓(xùn)中心29PICl6F87X系列單片機(jī)有雙列直插式28引腳PIC上海技術(shù)培訓(xùn)中心30PIC上海技術(shù)培訓(xùn)中心30

F877單片機(jī)內(nèi)部配置了較完善的多個(gè)存儲(chǔ)器,可分為數(shù)據(jù)存儲(chǔ)器和程序存儲(chǔ)器兩種,為一般用戶提供很大的方便。但它們?cè)谛问缴?,具有很豐富的內(nèi)涵。

2.2存儲(chǔ)器概述

PIC上海技術(shù)培訓(xùn)中心31F877單片機(jī)內(nèi)部配置了較完善的多個(gè)存儲(chǔ)器,可分

F877單片機(jī)內(nèi)部配置了8K╳l4位的閃爍(FLASH)程序存儲(chǔ)器,可以很方便進(jìn)行在線擦除和燒寫,壽命可達(dá)1000次以上。在PIC系列單片機(jī)教學(xué)實(shí)驗(yàn)和科研開發(fā)中,顯示出無(wú)窮的魅力和寬廣的應(yīng)用前景。相應(yīng)的地址編碼范圍為0000H~lFFFH。2.2.1程序存儲(chǔ)器

PIC上海技術(shù)培訓(xùn)中心32F877單片機(jī)內(nèi)部配置了8K╳l4位的閃爍(程序存儲(chǔ)器結(jié)構(gòu)

PIC上海技術(shù)培訓(xùn)中心33程序存儲(chǔ)器結(jié)構(gòu)PIC上海技術(shù)培訓(xùn)中心33

F877單片機(jī)內(nèi)部配置兩類數(shù)據(jù)存儲(chǔ)器,普通RAM數(shù)據(jù)存儲(chǔ)器和EEPROM失電保持?jǐn)?shù)據(jù)存儲(chǔ)器。

RAM總的地址空間為512個(gè)單元,其中包括部分無(wú)效單元,但每一個(gè)有效單位均可以象寄存器一樣進(jìn)行移位、置位、復(fù)位和位測(cè)試等操作。PIC單片機(jī)的數(shù)據(jù)存儲(chǔ)器和其他單片機(jī)一樣,在配置結(jié)構(gòu)上可分為通用寄存器和特殊功能寄存器兩大類,前者給用戶使用,而后者通常定義給某些功能模塊,是一種具有特殊目的的功能寄存器。2.2.2數(shù)據(jù)存儲(chǔ)器

PIC上海技術(shù)培訓(xùn)中心34F877單片機(jī)內(nèi)部配置兩類數(shù)據(jù)存儲(chǔ)器,普通RAM數(shù)據(jù)存儲(chǔ)同時(shí)在PIC16F877片內(nèi)又配置另一種可掉電保護(hù)的數(shù)據(jù)存儲(chǔ)器EEPROM,共有256×8位寬的存儲(chǔ)單元,可以長(zhǎng)期存放用戶或系統(tǒng)的重要參數(shù):如時(shí)間、配置及數(shù)據(jù)表格等,是一種非常重要的硬件資源。PIC上海技術(shù)培訓(xùn)中心35同時(shí)在PIC16F877片內(nèi)又配置另一種可掉電保護(hù)的數(shù)據(jù)數(shù)據(jù)存儲(chǔ)器單元功能分配

體(BANK)0體(BANK)1體(BANK)2體(BANK)3

PIC上海技術(shù)培訓(xùn)中心36數(shù)據(jù)存儲(chǔ)器單元功能分配體(BANK)0體(BANK)存儲(chǔ)器是單片機(jī)中一個(gè)非常重要的部件,專門用于存放指令、數(shù)據(jù)和運(yùn)算結(jié)果。分析F877單片機(jī)存儲(chǔ)器構(gòu)架,可以從其配置的三大模塊著手進(jìn)行,它們是:8K╳l4位FLASH程序存儲(chǔ)器512╳8位數(shù)據(jù)存儲(chǔ)器RAM256╳8位可掉電保護(hù)數(shù)據(jù)的EEPROM存儲(chǔ)器模塊。第3章PIC存儲(chǔ)器

PIC上海技術(shù)培訓(xùn)中心37存儲(chǔ)器是單片機(jī)中一個(gè)非常重要的部件,專門用于存放存儲(chǔ)器從使用功能上來(lái)分,可分為隨機(jī)存儲(chǔ)器RAM(RandomAccessMemory)和只讀存儲(chǔ)器ROM(ReadOnlyMemory)兩類。3.1存儲(chǔ)器分類

PIC上海技術(shù)培訓(xùn)中心38存儲(chǔ)器從使用功能上來(lái)分,可分為隨機(jī)存儲(chǔ)器RAM(

F877程序存儲(chǔ)器具有13位寬的程序計(jì)數(shù)器PC。PC指針?biāo)a(chǎn)生的13位地址最大可尋址的程序存儲(chǔ)器空間為8K,相應(yīng)的地址編碼范圍為0000H~lFFFH。F877歸屬于中檔單片機(jī),其指令字節(jié)寬度為14位,內(nèi)部構(gòu)架配置了8K╳l4位的閃爍FLASH程序存儲(chǔ)器。3.2程序存儲(chǔ)器構(gòu)架

PIC上海技術(shù)培訓(xùn)中心39F877程序存儲(chǔ)器具有13位寬的程序計(jì)數(shù)器PC。一般將整個(gè)程序存儲(chǔ)器以2KB為單位進(jìn)行分頁(yè)(PAGE),如圖3-1所示F877單片機(jī),8KB程序存儲(chǔ)器共分作4頁(yè),分別稱為“頁(yè)0”、“頁(yè)l”、“頁(yè)2”和“頁(yè)3”。程序計(jì)數(shù)器高8位PCLATH的Bit4-Bit3位構(gòu)成程序存儲(chǔ)器分頁(yè)的選擇位,對(duì)應(yīng)的地址空間如下:PCLATHBit4:Bit3:00頁(yè)0:0000H~07FFH01頁(yè)l:0800H~0FFFH10頁(yè)2:1000H~17FFH11頁(yè)3:1800H~1FFFHPIC上海技術(shù)培訓(xùn)中心40一般將整個(gè)程序存儲(chǔ)器以2KB為單位進(jìn)行分PIC上海技術(shù)培訓(xùn)中心41PIC上海技術(shù)培訓(xùn)中心41PIC上海技術(shù)培訓(xùn)中心42PIC上海技術(shù)培訓(xùn)中心42PIC16F877單片機(jī)架構(gòu)程序存儲(chǔ)器最大8K字(13位)程序存儲(chǔ)空間程序空間按頁(yè)面劃分,每頁(yè)2K字(11位);最多四頁(yè)。頁(yè)面選擇PCLATH<4:3>復(fù)位向量地址0000h中斷向量地址0004hPage00000h0004h07FFhInterruptResetPage10800h0FFFhPage21000h17FFhPage31800h1FFFhPCLATH<4:3>=00PCLATH<4:3>=01PCLATH<4:3>=10PCLATH<4:3>=11PIC上海技術(shù)培訓(xùn)中心43PIC16F877單片機(jī)架構(gòu)程序存儲(chǔ)器最大8K字(13位程序存儲(chǔ)器中有2個(gè)單元地址比較特殊,除了具備同其他單元地址一樣的普通用途外,還具有專門用途:0000H:用作單片機(jī)系統(tǒng)的復(fù)位矢量;0004H:用作系統(tǒng)特殊模塊的中斷矢量。

復(fù)位矢量中斷矢量PIC上海技術(shù)培訓(xùn)中心44程序存儲(chǔ)器中有2個(gè)單元地址比較特殊,除了具備同其他

F877用于存儲(chǔ)數(shù)據(jù)的RAM單元比一般單片機(jī)RAM的功能要強(qiáng)大得多,它除了具備普通RAM的功能之外,每一個(gè)單元都能實(shí)現(xiàn)移位、置位、復(fù)位和位測(cè)試等通常由寄存器才能完成的功能操作。3.3數(shù)據(jù)存儲(chǔ)器構(gòu)架PIC上海技術(shù)培訓(xùn)中心45F877用于存儲(chǔ)數(shù)據(jù)的RAM單元比一般單片機(jī)RA

RAM數(shù)據(jù)存儲(chǔ)器和FLASH程序存儲(chǔ)器一樣在空間構(gòu)架上,進(jìn)行類似方式進(jìn)行分區(qū)。按橫向排列,分為4個(gè)“體”(BANK),從左到右分別記為“體0”、“體1”、“體2”和“體3”,每個(gè)體為128個(gè)8位寬的存儲(chǔ)器單元。RP1:RP0體域寄存器地址00體0:000H~07FH01體1:080H~0FFH10體2:100H~l7FH11體3:180H~lFFH

數(shù)據(jù)存儲(chǔ)器分區(qū)PIC上海技術(shù)培訓(xùn)中心46RAM數(shù)據(jù)存儲(chǔ)器和FLASH程序存儲(chǔ)器一樣在空間

數(shù)據(jù)存儲(chǔ)器四個(gè)存儲(chǔ)體每個(gè)128字節(jié)特殊功能寄存器存儲(chǔ)體選擇通過(guò)Status中的RP0,1和IRP512單元368有效GPRGPRsSFRsBank0000h01Fh020h07FhGPRsSFRsBank1080h09Fh0A0h0FFh0F0hGPRsSFRsBank2100h11Fh120h17Fh170hGPRsSFRsBank3180h19Fh1A0h1FFh1F0hRP<1:0>RP<1:0>RP<1:0>RP<1:0>=00=01=10=11PIC上海技術(shù)培訓(xùn)中心47

數(shù)據(jù)存儲(chǔ)器四個(gè)存儲(chǔ)體每個(gè)128字節(jié)GPRsSFRsBaPIC上海技術(shù)培訓(xùn)中心48PIC上海技術(shù)培訓(xùn)中心48有些寄存器單元在4個(gè)體上是互相映射的,如狀態(tài)寄存器STATUS、間接尋址寄存器INDF、程序計(jì)數(shù)器低8位PCL、文件選擇寄存器FSR、程序計(jì)數(shù)器高8位PCLATH和中斷控制寄存器INTCON。所謂互為映射就是說(shuō),在4個(gè)體內(nèi)的相同位置,物理上對(duì)應(yīng)同一個(gè)寄存器單元,所以該單元具備4個(gè)不同的地址。

互相映射PIC上海技術(shù)培訓(xùn)中心49有些寄存器單元在4個(gè)體上是互相映射的,如狀態(tài)寄存器

F877單片機(jī)的通用寄存器GPR(GeneralPurposeRegisters),可由用戶自行支配存放隨機(jī)數(shù)據(jù)。地址區(qū)域:F0H~FFH、170H~l7FH和1F0H~1FFH,都可以索引(或映射)到體0的16個(gè)RAM單元。這樣安排是為了便于中斷服務(wù)程序的設(shè)計(jì)和數(shù)據(jù)處理,就可以在程序設(shè)計(jì)中能夠有效突破體的限制而定義通用的變量函數(shù)3.3.1通用寄存器

PIC上海技術(shù)培訓(xùn)中心50F877單片機(jī)的通用寄存器GPR(General特殊功能寄存器SFR(SpecialFunctionRegisters)是用于專用目的的寄存器,每個(gè)寄存器單元,甚至其中的每一位,都有它自己特定的名稱和用途。主要涉及PIC內(nèi)核結(jié)構(gòu)、外圍功能模塊的配置和數(shù)據(jù)通信方式的定義,是單片機(jī)賴于正常運(yùn)行的工作平臺(tái)。所以,特殊功能寄存器又稱為專用寄存器。可以依據(jù)它們不同的用途分為兩類:一類是與CPU內(nèi)核相關(guān)的寄存器;另一類是與外圍模塊相關(guān)的寄存器。3.3.2特殊功能寄存器

PIC上海技術(shù)培訓(xùn)中心51特殊功能寄存器SFR(SpecialFuncti狀態(tài)寄存器的內(nèi)容用來(lái)記錄算術(shù)邏輯單元ALU的運(yùn)算結(jié)果狀態(tài)、CPU的特殊運(yùn)行狀態(tài)以及RAM數(shù)據(jù)存儲(chǔ)器體間選擇等信息。1.狀態(tài)寄存器STATUS

PIC上海技術(shù)培訓(xùn)中心52狀態(tài)寄存器的內(nèi)容用來(lái)記錄算術(shù)邏輯單元ALU的運(yùn)算Bit0/C:進(jìn)位/借位標(biāo)志,被動(dòng)參數(shù)。0:執(zhí)行加法(或減法)指令時(shí),如果最高位無(wú)進(jìn)位(或有借位);1:執(zhí)行加法(或減法)指令時(shí),如果最高位有進(jìn)位(或無(wú)借位)。Bit1/DC:輔助進(jìn)位/借位標(biāo)志,被動(dòng)參數(shù)。0:執(zhí)行加法(或減法)指令時(shí),如果低4位向高4位無(wú)進(jìn)位(或有借位);1:執(zhí)行加法(或減法)指令時(shí),如果低4位向高4位有進(jìn)位(或無(wú)借位)。Bit2/Z:零標(biāo)志,被動(dòng)參數(shù)。0:算術(shù)或邏輯運(yùn)算結(jié)果不為0;1:算術(shù)或邏輯運(yùn)算結(jié)果為全0。

狀態(tài)標(biāo)志位

PIC上海技術(shù)培訓(xùn)中心53Bit0/C:進(jìn)位/借位標(biāo)志,被動(dòng)參數(shù)。狀態(tài)標(biāo)志位PIC上Bit6-Bit5/RP1-RP0:RAM數(shù)據(jù)存儲(chǔ)器體選位,僅用于直接尋址。兩位復(fù)合選擇RAM數(shù)據(jù)存儲(chǔ)器4個(gè)體,具體關(guān)系如下:

RP1、RP0=00選中體0

RP1、RP0=01選中體1

RP1、RP0=10選中體2

RP1、RP0=11選中體3Bit7/IRP:RAM數(shù)據(jù)存儲(chǔ)器體選位,僅用于間接尋址。0:選擇數(shù)據(jù)存儲(chǔ)器低位體:即體0(FSR的Bit7=0)或體1(FSR的Bit7=1);1:選擇數(shù)據(jù)存儲(chǔ)器高位體:即體2(FSR的Bit7=0)或體3(FSR的Bit7=1)。

數(shù)據(jù)存儲(chǔ)器體選位

PIC上海技術(shù)培訓(xùn)中心54Bit6-Bit5/RP1-RP0:RAM數(shù)據(jù)存儲(chǔ)器體選在RAM數(shù)據(jù)存儲(chǔ)器中,有一個(gè)非常特別的寄存器INDF它的專有功能是與FSR寄存器配合,實(shí)現(xiàn)間接尋址。當(dāng)訪問(wèn)地址INDF時(shí),實(shí)際上是訪問(wèn)以FSR內(nèi)容為地址的數(shù)據(jù)存儲(chǔ)器RAM單元。

2.間接尋址的寄存器INDF和FSR

PIC上海技術(shù)培訓(xùn)中心55在RAM數(shù)據(jù)存儲(chǔ)器中,有一個(gè)非常特別的寄存器IND在直接尋址中,體選碼來(lái)自狀態(tài)寄存器STATUS的RP1和RPO位,體內(nèi)的單元地址直接來(lái)自指令機(jī)器碼。而在間接尋址中,體選碼由STATUS的IRP位和FSR寄存器的BIT7組成

直接尋址/間接尋址方式的示意圖

PIC上海技術(shù)培訓(xùn)中心56在直接尋址中,體選碼來(lái)自狀態(tài)寄存器STATUS的RP程序計(jì)數(shù)器PC指針寬13位,它的內(nèi)容指向CPU將要執(zhí)行的下一條指令所在程序存儲(chǔ)器單元的地址。

低8位PCL有自己的地址,可讀可寫;而高5位PCH和其它單片機(jī)不一樣,即沒(méi)有自己的地址,不能用軟件訪問(wèn),也就不能直接寫人,只能用寄存器PCLATH裝載的方式進(jìn)行間接寫人。

3.與PC相關(guān)的寄存器PCL和PCLATH

PIC上海技術(shù)培訓(xùn)中心57程序計(jì)數(shù)器PC指針寬13位,它的內(nèi)容指向CPU將兩種情況下PC值的裝入過(guò)程

PCLATH對(duì)于高5位PCH的裝載分兩種情況:一種情況是當(dāng)執(zhí)行以PCL為目標(biāo)的寫操作指令時(shí),PC的低8位來(lái)自算術(shù)邏輯單元ALU,PC的高5位來(lái)自PCLATH的低5位;另一種情況是當(dāng)執(zhí)行跳轉(zhuǎn)指令GOTO或調(diào)用子程序指令CALL時(shí),PC的低11位來(lái)自指令碼中直接攜帶的11位地址,高2位由PCLATH3-4提供。

PIC上海技術(shù)培訓(xùn)中心58兩種情況下PC值的裝入過(guò)程PCLATH對(duì)于高5程序存儲(chǔ)器:PC絕對(duì)尋址OPCODEkkkk14-位call和goto指令kkkkkkk通過(guò)CALL和GOTO修改PC(程序指針)kkkkkkkkkxxxkkxxxPCLATH寄存器有效的13-位程序存儲(chǔ)器地址11-位來(lái)自指令2-位來(lái)自PCLATHkkkkPIC上海技術(shù)培訓(xùn)中心59程序存儲(chǔ)器:PC絕對(duì)尋址OPCODEkkkk14-位PCH<5>PCL<8>13-位程序指針PCLATH<5>內(nèi)部數(shù)據(jù)總線<8>558movlw HIGHDelaymovwf PCLATHmovlw LOWDelaymovwf PCL

*對(duì)于讀PC值時(shí):僅從PCL讀低8位值,

PCH不會(huì)被載入到PCLATH程序存儲(chǔ)器:PC相對(duì)尋址PIC上海技術(shù)培訓(xùn)中心60PCH<5>PCL<8>13-位程序指針PCLATH<主要用于設(shè)置定時(shí)/計(jì)數(shù)器TMR0、前后分頻器、外部INT中斷以及B端口的弱上拉功能等各種控制位。

4.選項(xiàng)寄存器OPTION_REG

PIC上海技術(shù)培訓(xùn)中心61主要用于設(shè)置定時(shí)/計(jì)數(shù)器TMR0、前后分頻器、外部Bit2-Bit0/PS2-PS0:分頻器倍率選擇位

PIC上海技術(shù)培訓(xùn)中心62Bit2-Bit0/PS2-PS0:分頻器倍率選擇位PICBit3/PSA:前后分頻器分配位,主動(dòng)參數(shù)。0:分配給TMR0,作為TMR0的前分頻器;1:分配給WDT,作為WDT的后分頻器。Bit4/T0SE:TMR0用于計(jì)數(shù)器,計(jì)數(shù)脈沖信號(hào)邊沿選擇位,主動(dòng)參數(shù)。0:RA4/T0CKI引腳上的上升沿增量;1:RA4/T0CKI引腳上的下降沿增量。Bit5/T0CS:定時(shí)/計(jì)數(shù)器TMR0時(shí)鐘源選擇位,主動(dòng)參數(shù)。0:用內(nèi)部指令周期時(shí)鐘(CLKOUT)作為TMR0的觸發(fā)脈沖;1:用T0CKI引腳上的外部時(shí)鐘作為TMR0的觸發(fā)脈沖。Bit6/INTEDG:INT中斷信號(hào)觸發(fā)邊沿選擇位,主動(dòng)參數(shù)。0:BR0/INT引腳上的上升沿觸發(fā);1:BR0/INT引腳上的下降沿觸發(fā)。Bit7/RBPU:B端口弱上拉使能位,主動(dòng)參數(shù)。0:RB0-RB7引腳弱上拉使能;1:RB0-RB7引腳弱上拉不使能。

PIC上海技術(shù)培訓(xùn)中心63Bit3/PSA:前后分頻器分配位,主動(dòng)參數(shù)。PIC上海技術(shù)主要用于中斷控制方式的設(shè)置。5.中斷控制寄存器INTCONPIC上海技術(shù)培訓(xùn)中心64主要用于中斷控制方式的設(shè)置。5.中斷控制寄存器IN端口寄存器PORTA(B)(C)(D)(E)端口I/O定義寄存器TRISA(B)(C)(D)(E)Di=0定義為輸出狀態(tài)Di=1定義為輸入狀態(tài)

6.端口寄存器PIC上海技術(shù)培訓(xùn)中心656.端口寄存器PIC上海技術(shù)培訓(xùn)中心65指令是單片機(jī)的領(lǐng)導(dǎo)核心,就是指揮CPU按要求進(jìn)行一系列操作的命令。一般來(lái)說(shuō),單片機(jī)都具有自己特有的指令系統(tǒng),相互之間大都互不兼容。

PIC單片機(jī)系列按照不同用戶的要求分成三個(gè)不同的應(yīng)用檔次。

第4章PIC指令系統(tǒng)

PIC上海技術(shù)培訓(xùn)中心66指令是單片機(jī)的領(lǐng)導(dǎo)核心,就是指揮CPU按要求進(jìn)行一指令的執(zhí)行時(shí)間總是分解成兩部分:取指過(guò)程和執(zhí)行過(guò)程,取指的快慢直接與指令的字節(jié)數(shù)有關(guān),而指令的執(zhí)行快慢與時(shí)鐘的振蕩頻率有關(guān)。

在以往的單片機(jī)結(jié)構(gòu)中,程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器的地址空間和數(shù)據(jù)傳輸通道都相互并用,必須采用分時(shí)操作順序執(zhí)行。而PIC單片機(jī)指令的執(zhí)行過(guò)程是遵循著一種全新哈佛總線體系結(jié)構(gòu)的原則,充分利用計(jì)算機(jī)系統(tǒng)在程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器之間地址空間的相互獨(dú)立性,取指過(guò)程和執(zhí)行程序可以流水線操作同時(shí)進(jìn)行。

4.1指令流水線操作原則

PIC上海技術(shù)培訓(xùn)中心67指令的執(zhí)行時(shí)間總是分解成兩部分:取指過(guò)程和執(zhí)行過(guò)程FlushFetch4FetchSUB_1

Tcy0Tcy1Tcy2Tcy3Tcy4

PIC單片機(jī)指令流水線示意

Execute1Fetch31.MOVLW55h

Fetch1Execute3Fetch2Execute2

Fetch42.MOVWFPORTB3.CALLSUB_14.BSFPORTA,BIT3PIC上海技術(shù)培訓(xùn)中心68FlushFetch4FetchSUB_1

在這種尋址方式中,操作數(shù)或其中之一(另一個(gè)是W)是立即數(shù),隨指令碼攜帶,而無(wú)需再到其他地方去尋找。指令中的操作數(shù)為8-位常數(shù).使用立即數(shù)尋址方式的指令有:movlw,addlw,retlw,etc.如:ADDLW 16H指令尋址方式說(shuō)明1.寄存器立即尋址14-位立即尋址指令OPCODEkkkkkkkkPIC上海技術(shù)培訓(xùn)中心69指令尋址方式說(shuō)明1.寄存器立即尋址14-位立即尋址指2.寄存器直接尋址7-位直接從指令中獲取2-位從‘STATUS’寄存器中獲取如:IORWF 26H,09-位有效寄存器地址IRPRP1RP0OPCODETOPDZDCCSTATUS寄存器14-位指令fffffffRP1RP0fffffff7-位來(lái)自指令字2-位來(lái)自STATUS寄存器PIC上海技術(shù)培訓(xùn)中心702.寄存器直接尋址7-位直接從指令中獲取9-位有效寄存器3.寄存器間接尋址8-位間接地址來(lái)自FSR(選擇寄存器).1-位來(lái)自STATUS寄存器.例如:MOVWFINDFIRPfffffffffIRPRP1RP0TOPDZDCCfffffffSTATUS寄存器8-位FSR寄存器有效的9-位寄存器地址8-位來(lái)自FSR1-位來(lái)自STATUS寄存器

這是一種比較特別的尋址方式,是通過(guò)兩個(gè)寄存器INDF和FSR的組合而實(shí)現(xiàn)功能的。操作數(shù)是FSR寄存器內(nèi)容位指針,所指向寄存器單元的內(nèi)容。

PIC上海技術(shù)培訓(xùn)中心713.寄存器間接尋址8-位間接地址來(lái)自FSR(選擇寄存器間接尋址實(shí)例運(yùn)行機(jī)制:

a)清從0x20to0x7F所有的RAM區(qū)域

b)間接地址載入FSRc)每一次對(duì)‘INDF’運(yùn)行,由FSR指向的寄存器被使用例子:

movlw 0x20 movwf FSRLOOP clrf INDF incf FSR,F btfss FSR,7 goto LOOP <nextinstruction>0000000000000000FSR=20hINDF00h04h20h7Fh數(shù)據(jù)記憶區(qū)PIC上海技術(shù)培訓(xùn)中心72間接尋址實(shí)例運(yùn)行機(jī)制: movlw 0x20000000這是PIC單片機(jī)的特色之一,它可以對(duì)所有的RAM數(shù)據(jù)存儲(chǔ)器進(jìn)行位尋址,即置位和清零等。如:BSF26H,4 ;(26H原為26H)4.位尋址PIC上海技術(shù)培訓(xùn)中心73這是PIC單片機(jī)的特色之一,它可以對(duì)所每條指令的字節(jié)長(zhǎng)度為14位,主要由說(shuō)明指令功能的操作碼和參與指令處理的操作數(shù)組成。

操作碼部分,簡(jiǎn)稱助記符,如表4-2核心助記符,是借用英語(yǔ)單詞來(lái)間接表達(dá)和定義其操作功能。

操作數(shù)部分,是按照操作碼的操作功能,對(duì)操作數(shù)進(jìn)行處理。

根據(jù)操作數(shù)的源地址和目標(biāo)地址的訪問(wèn)性質(zhì),可以有多種表現(xiàn)形式:主要有直接尋址、間接尋址、立即尋址和位尋址四類。

4.2指令集說(shuō)明

PIC上海技術(shù)培訓(xùn)中心74每條指令的字節(jié)長(zhǎng)度為14位,主要由說(shuō)明指令功能的核心助記符

PIC上海技術(shù)培訓(xùn)中心75核心助記符PIC上海技術(shù)培訓(xùn)中心75指令系統(tǒng)補(bǔ)充字符說(shuō)明

PIC上海技術(shù)培訓(xùn)中心76指令系統(tǒng)補(bǔ)充字符說(shuō)明PIC上海技術(shù)培訓(xùn)中心76數(shù)據(jù)傳送類指令共有4條指令,主要功能是將數(shù)據(jù)從源地址(或立即數(shù))傳送至目標(biāo)地址中。4.2.1數(shù)據(jù)傳送類指令

PIC上海技術(shù)培訓(xùn)中心77數(shù)據(jù)傳送類指令共有4條指令,主要功能是將數(shù)據(jù)從源地【例題4-1】請(qǐng)利用數(shù)據(jù)傳送類指令編寫一段子程序,將立即數(shù)20H傳送到通用寄存器20H中。

【例題4-2】請(qǐng)利用數(shù)據(jù)傳送類指令編寫一段子程序,將通用寄存器20H和30H中的內(nèi)容進(jìn)行交換。

PIC上海技術(shù)培訓(xùn)中心78【例題4-1】請(qǐng)利用數(shù)據(jù)傳送類指令編寫一段子程序,將立即算術(shù)運(yùn)算類指令是PIC單片機(jī)指令系統(tǒng)中,承擔(dān)運(yùn)算功能的重要部分,共有6條指令。主要有加減指令、增量和減量指令

4.2.2算術(shù)運(yùn)算類指令

PIC上海技術(shù)培訓(xùn)中心79算術(shù)運(yùn)算類指令是PIC單片機(jī)指令系統(tǒng)中,承擔(dān)運(yùn)算功【例題4-3】請(qǐng)將通用寄存器20H、30H構(gòu)成的16位數(shù)據(jù)與通用寄存器40H、50H構(gòu)成的16位數(shù)據(jù)相加后放入40H、50H中,已知其和不會(huì)超出65535。

PIC上海技術(shù)培訓(xùn)中心80【例題4-3】請(qǐng)將通用寄存器20H、30H構(gòu)成的16位數(shù)

邏輯運(yùn)算類指令是一組比較復(fù)雜的指令,形式較多,可以對(duì)位和字節(jié)進(jìn)行邏輯操作。主要有與、或、異或、清零、置位、取反和左右移位等14條指令

4.2.3邏輯運(yùn)算類指令

PIC上海技術(shù)培訓(xùn)中心81邏輯運(yùn)算類指令是一組比較復(fù)雜的指令,形式較多,可以【例題4-4】請(qǐng)將數(shù)據(jù)存儲(chǔ)器20H和30H中的數(shù)據(jù)分別與立即數(shù)20H、30H相與和相或后相加,結(jié)果放入40H存儲(chǔ)器中,請(qǐng)編寫相應(yīng)的程序。

【例題4-5】請(qǐng)編寫一個(gè)完整的程序,將數(shù)據(jù)存儲(chǔ)器20H低4位和30H高4位組合成一個(gè)八位二進(jìn)制數(shù)據(jù),并從RC端口輸出。

PIC上海技術(shù)培訓(xùn)中心82【例題4-4】請(qǐng)將數(shù)據(jù)存儲(chǔ)器20H和30H中的數(shù)據(jù)分別與

控制轉(zhuǎn)移類指令,是在指令系統(tǒng)中形式靈活、功能較強(qiáng)的一組指令,共11條。它們是構(gòu)成程序循環(huán)和跳轉(zhuǎn)的關(guān)鍵要素,一般可以分為有條件跳轉(zhuǎn)和無(wú)條件跳轉(zhuǎn)兩大類。

4.2.4控制轉(zhuǎn)移類指令

PIC上海技術(shù)培訓(xùn)中心83控制轉(zhuǎn)移類指令,是在指令系統(tǒng)中形式靈活、功能較強(qiáng)這是一種比較特殊的轉(zhuǎn)移形式,根據(jù)位測(cè)試或加減1后的內(nèi)容判斷條件的成立與否,而決定程序繼續(xù)執(zhí)行還是間跳執(zhí)行指令。

當(dāng)前判斷語(yǔ)句A

下一條語(yǔ)句B再下一條語(yǔ)句C1.相對(duì)轉(zhuǎn)移間跳

PIC上海技術(shù)培訓(xùn)中心84這是一種比較特殊的轉(zhuǎn)移形式,根據(jù)位測(cè)試或加減1后PIC指令系統(tǒng)的絕對(duì)轉(zhuǎn)移,主要由CALL和GOTO語(yǔ)句引出。在指令機(jī)器碼內(nèi)部本身并沒(méi)有攜帶完整的轉(zhuǎn)移目標(biāo)地址,只包含低11位地址,而高2位將由PCLATH寄存器給出。 【例題4-6】請(qǐng)將通用寄存器單元20H-2FH,分別對(duì)應(yīng)賦值20H-2FH,請(qǐng)編寫相應(yīng)的軟件程序。

2.絕對(duì)轉(zhuǎn)移和調(diào)用

PIC上海技術(shù)培訓(xùn)中心85PIC指令系統(tǒng)的絕對(duì)轉(zhuǎn)移,主要由CALL和GOT【例題4-7】請(qǐng)分析以下程序片段,并指出當(dāng)程序執(zhí)行完后,涉及到的所有存儲(chǔ)器單元的結(jié)果。

MOVLW 22H MOVWF 22H MOVWF FSR ADDWF INDF,F INCF INDF SWAPF 22H,W RLF 22H,W DECF FSR,F MOVWFINDF BSF INDF,7【例題4-6】編寫散轉(zhuǎn)指令程序PIC上海技術(shù)培訓(xùn)中心86【例題4-7】PIC上海技術(shù)培訓(xùn)中心86Microchip公司為PIC系列單片機(jī)配備了功能強(qiáng)大、基于Windows、易學(xué)易用的軟件集成開發(fā)環(huán)境MPLAB。該開發(fā)環(huán)境可以使人們?cè)谧约旱奈C(jī)系統(tǒng)上,對(duì)PIC系列單片機(jī)進(jìn)行程序的創(chuàng)建、錄入、編輯以及匯編,還能方便而靈活地實(shí)現(xiàn)程序的模擬運(yùn)行和動(dòng)態(tài)調(diào)試,可以對(duì)實(shí)際應(yīng)用系統(tǒng)進(jìn)行在線仿真和功能模塊開發(fā)。

第5章PIC集成開發(fā)系統(tǒng)

PIC上海技術(shù)培訓(xùn)中心87Microchip公司為PIC系列單片機(jī)配備了功能PIC單片機(jī)指令系統(tǒng)和其它單片機(jī)一樣,是較為低級(jí)的語(yǔ)言系統(tǒng),是一套控制和指揮CPU工作的編碼,即機(jī)器語(yǔ)言。單片機(jī)只能識(shí)別和執(zhí)行由二進(jìn)制數(shù)組成的機(jī)器語(yǔ)言,然而,這樣一種二進(jìn)制代碼的機(jī)器語(yǔ)言是很難為人們直接理解和分析。為了能較好表達(dá)人們的設(shè)計(jì)思路,便于記憶和使用,人們?cè)诘图?jí)語(yǔ)言之上設(shè)計(jì)出一種新的符號(hào)語(yǔ)言,即匯編語(yǔ)言。

第6章匯編語(yǔ)言程序設(shè)計(jì)

PIC上海技術(shù)培訓(xùn)中心88PIC單片機(jī)指令系統(tǒng)和其它單片機(jī)一樣,是較為低級(jí)PIC單片機(jī)指令系統(tǒng)和其它單片機(jī)一樣,是較為低級(jí)的語(yǔ)言系統(tǒng),是一套控制和指揮CPU工作的編碼,即機(jī)器語(yǔ)言。為了能較好表達(dá)人們的設(shè)計(jì)思路,便于記憶和使用,人們?cè)诘图?jí)語(yǔ)言之上設(shè)計(jì)出一種新的符號(hào)語(yǔ)言,即匯編語(yǔ)言。

6.1匯編語(yǔ)言指令格式

PIC上海技術(shù)培訓(xùn)中心89PIC單片機(jī)指令系統(tǒng)和其它單片機(jī)一樣,是較為低級(jí)根據(jù)指令的功能和作用,只有操作碼是必須存在的,它主要決定了指令的操作性質(zhì),而其它部分是指令語(yǔ)句的重要補(bǔ)充和說(shuō)明,有時(shí)可以缺省。PIC上海技術(shù)培訓(xùn)中心90根據(jù)指令的功能和作用,只有操作碼是必須存在的,它標(biāo)號(hào)位于指令助記符前面,它一般是用于表示指令所在的地址,例如表示主程序或子程序的起始地址、轉(zhuǎn)移語(yǔ)句的入口地址等。

1.標(biāo)號(hào)

PIC上海技術(shù)培訓(xùn)中心91標(biāo)號(hào)位于指令助記符前面,它一般是用于表示指令所在標(biāo)號(hào)并不是指令的必須部分,只有那些欲被其他語(yǔ)句引用的指令之前,才必須附加標(biāo)號(hào)。標(biāo)號(hào)不一定和語(yǔ)句同行,可以單獨(dú)在語(yǔ)句上方作為一行使用。標(biāo)號(hào)最多可以由32個(gè)字母、數(shù)字和其它一些字符組成,但第一個(gè)字符必須是字母或下劃線。標(biāo)號(hào)不能用系統(tǒng)保留字,即系統(tǒng)禁用指令助記符、寄存器名、標(biāo)志符等作為標(biāo)號(hào),如:ADD、PCLATH等。一個(gè)標(biāo)號(hào)只能表示一個(gè)地址,不允許多個(gè)地址用一個(gè)標(biāo)號(hào)重復(fù)定義。標(biāo)號(hào)的定義和引用必須一致,其中的大小寫可以混寫但必須相同。標(biāo)號(hào)必須頂格書寫,結(jié)束不用冒號(hào)。

使用標(biāo)號(hào)的要點(diǎn)是:

PIC上海技術(shù)培訓(xùn)中心92標(biāo)號(hào)并不是指令的必須部分,只有那些欲被其他語(yǔ)句引用的指令之前操作碼決定著指令的操作類型和操作性質(zhì),是匯編語(yǔ)言語(yǔ)句中的核心要素,每一條匯編指令都不可缺少,而其它三部分有些指令可以缺省。

2.操作碼

PIC上海技術(shù)培訓(xùn)中心93操作碼決定著指令的操作類型和操作性質(zhì),是匯編語(yǔ)言操作碼所對(duì)應(yīng)的指令助記符,其中的符號(hào)大小寫可以混寫,而不會(huì)影響操作碼的含意,這一點(diǎn)和標(biāo)號(hào)、操作數(shù)符號(hào)變量的表達(dá)方式是有本質(zhì)區(qū)別。指令助記符不能頂格書寫,當(dāng)前面沒(méi)有標(biāo)號(hào)時(shí),必須至少保留一個(gè)空格。操作碼核心助記符部分比較簡(jiǎn)單,初學(xué)者必須熟悉復(fù)合助記符部分的功能。

有關(guān)操作碼(指令助記符)的要點(diǎn)是:

PIC上海技術(shù)培訓(xùn)中心94操作碼所對(duì)應(yīng)的指令助記符,其中的符號(hào)大小寫可以混寫,而不會(huì)影在PIC匯編語(yǔ)言語(yǔ)句中,操作數(shù)的形式和內(nèi)容最為豐富,它是指令助記符操作的對(duì)象,一般以數(shù)據(jù)或地址的形式出現(xiàn),也可以用符號(hào)變量所表示的數(shù)據(jù)或地址。

3.操作數(shù)

PIC上海技術(shù)培訓(xùn)中心95在PIC匯編語(yǔ)言語(yǔ)句中,操作數(shù)的形式和內(nèi)容最為豐使用操作數(shù)的要點(diǎn)是:

若操作數(shù)有二項(xiàng),中間應(yīng)該用逗號(hào)(半角)分開。以A、B、C、D、E、F開頭的數(shù),前面應(yīng)加0作為引導(dǎo)。MPASM編輯環(huán)境默認(rèn)進(jìn)制為十六進(jìn)制,也可按用戶需要進(jìn)行重新設(shè)置。操作數(shù)部分的符號(hào)變量必須區(qū)分大小寫。重視d參數(shù)的應(yīng)用,目標(biāo)地址為:F(d=1);W(d=0)。

PIC上海技術(shù)培訓(xùn)中心96使用操作數(shù)的要點(diǎn)是:若操作數(shù)有二項(xiàng),中間應(yīng)該用逗號(hào)(各種進(jìn)制168的表示形式

PIC上海技術(shù)培訓(xùn)中心97各種進(jìn)制168的表示形式PIC上海技術(shù)培訓(xùn)中心97注釋內(nèi)容用分號(hào)引出,是匯編語(yǔ)言語(yǔ)句功能的一種補(bǔ)充說(shuō)明,主要是便于人們閱讀、分析、修改和程序的調(diào)試。

4.注釋

PIC上海技術(shù)培訓(xùn)中心98注釋內(nèi)容用分號(hào)引出,是匯編語(yǔ)言語(yǔ)句功能的一種補(bǔ)充說(shuō)

用(半角)分號(hào)引出注釋內(nèi)容,可以緊跟指令之后,也可以獨(dú)立一行或多行書寫,但每一行均需由分號(hào)引出。注釋內(nèi)容可以英文書寫,也能用中文書寫(來(lái)源于文本編輯內(nèi)容)。

使用注釋的要點(diǎn)是:PIC上海技術(shù)培訓(xùn)中心99使用注釋的要點(diǎn)是:PIC上海技術(shù)培訓(xùn)中心99 各種單片機(jī)的匯編程序除了指令系統(tǒng)語(yǔ)句以外,一般都還定義許多非正式指令的語(yǔ)句,即偽指令。大多數(shù)偽指令匯編時(shí)并不產(chǎn)生機(jī)器碼,僅為源程序提供匯編控制信息。6.2系統(tǒng)偽指令

PIC上海技術(shù)培訓(xùn)中心100 各種單片機(jī)的匯編程序除了指令系統(tǒng)語(yǔ)句以外,一般都還定義格式:ORGnnnn說(shuō)明:ORG偽指令指出緊跟在該偽指令后的機(jī)器碼指令的匯編地址,即經(jīng)匯編后生成的機(jī)器碼目標(biāo)程序或數(shù)據(jù)塊在單片機(jī)程序存儲(chǔ)器中的起始存放地址。1.定位偽指令:ORG(Origin)

PIC上海技術(shù)培訓(xùn)中心101格式:ORGnnnn1.定位偽指令:ORG(O格式:符號(hào)名 EQUnn說(shuō)明:EQU偽指令幾乎每一個(gè)程序中都用到,其操作含意是使EQU兩端的值相等。一般在PIC的程序設(shè)計(jì)中,原則上每次遇到新的符號(hào)參數(shù),都必須在前面補(bǔ)充定義符號(hào)名的初始數(shù)值或存儲(chǔ)器地址。符號(hào)名一旦被EQU賦值,其值便不能被再重新定義。這里的符號(hào)名,既可以是PIC中的特殊功能寄存器、一個(gè)常數(shù),或者是表示一個(gè)通用數(shù)據(jù)存儲(chǔ)器地址。

2.賦值偽指令:EQU(Equate)

PIC上海技術(shù)培訓(xùn)中心102格式:符號(hào)名 EQUnn2.賦值偽指令實(shí)際上對(duì)于偽指令:ABCEQU 20H,其中ABC既可以認(rèn)為是符號(hào)變量,因?yàn)锳BC代表20H地址;又可以認(rèn)為是符號(hào)常量,因?yàn)锳BC可以代表符號(hào)常量20H。所以對(duì)于一個(gè)定義的符號(hào)量,應(yīng)結(jié)合引用的指令進(jìn)行分析才能真正確定符號(hào)量的類型。分析ABCEQU 20HPIC上海技術(shù)培訓(xùn)中心103實(shí)際上對(duì)于偽指令:ABCEQU 20H,其中【例題6-2】正確區(qū)別符號(hào)變量和符號(hào)常量之間的關(guān)系A(chǔ)BC EQU 20H ;定義符號(hào)量ABCORG 0000HNOP MOVLW77H MOVWF20H MOVLW88H MOVFABC,0 ;ABC為數(shù)據(jù)存儲(chǔ)器地址20H MOVLWABC;ABC為常量20H NOPENDPIC上海技術(shù)培訓(xùn)中心104【例題6-2】正確區(qū)別符號(hào)變量和符號(hào)常量之間的關(guān)系PIC上海在符號(hào)名定義和引用過(guò)程中,必須保證大小寫屬性的一致性,注意不能混合使用以及所代表角色功能。如果有定義:ABC EQU 20H 在引用符號(hào)名ABC時(shí),不能改變其大小寫的屬性,即Abc、aBC或ABc與ABC是不一樣的,在匯編時(shí)均會(huì)發(fā)生出錯(cuò)信息。PIC上海技術(shù)培訓(xùn)中心105在符號(hào)名定義和引用過(guò)程中,必須保證大小寫屬性的一格式:END說(shuō)明:END偽指令表示匯編語(yǔ)言源程序(*.ASM)的結(jié)束,MPASM匯編器匯編時(shí)遇到END就認(rèn)為程序已結(jié)束,對(duì)其后的程序段不再進(jìn)行匯編。3.程序結(jié)束偽指令:END

PIC上海技術(shù)培訓(xùn)中心106格式:END3.程序結(jié)束偽指令:ENDPIC上海格式:LIST[可選項(xiàng),可選項(xiàng),]說(shuō)明:LIST偽指令用于設(shè)置各種匯編參數(shù),以便控制整個(gè)匯編過(guò)程或?qū)Υ蛴≥敵龅牧斜砦募M(jìn)行格式化。1)P=<設(shè)置微控制器類型即單片機(jī)型號(hào)>例如:P=16F8772)R=<定義默認(rèn)的數(shù)值進(jìn)位制的基數(shù)>例如:R=DEC(十進(jìn)制);R=HEX(十六進(jìn)制);R=BIN(二進(jìn)制);默認(rèn)為十六進(jìn)制。4.列表選項(xiàng)偽指令:LIST

PIC上海技術(shù)培訓(xùn)中心107格式:LIST[可選項(xiàng),可選項(xiàng),]4.列表格式:INCLUDE“文件名”說(shuō)明:INCLUDE偽指令的主要功能是將外部預(yù)先編寫好的指定文件納入本源程序的匯編內(nèi)容,這樣可以減少重復(fù)勞動(dòng),提高編程效率。如:P16F877.INC為F877單片機(jī)的復(fù)位矢量、專用寄存器的地址及其控制位和狀態(tài)位的位地址的原始定義,有些參考書把P16F877.INC稱為F877的頭文件。5.外調(diào)程序偽指令:INCLUDE

PIC上海技術(shù)培訓(xùn)中心108格式:INCLUDE“文件名”5.外調(diào)程序偽指令格式:RADIX<進(jìn)制表達(dá)式>說(shuō)明:RADIX偽指令用于設(shè)置在MPLAB-ICD集成開發(fā)環(huán)境中采用的進(jìn)制方式,如定義十進(jìn)制、八進(jìn)制和十六進(jìn)制等參數(shù),MPLAB-ICD集成開發(fā)系統(tǒng)缺省為十六進(jìn)制。例如:RADIXDEC;定義為十進(jìn)制

RADIXHEX;定義為十六進(jìn)制

RADIXOCT;定義為八進(jìn)制6.進(jìn)制定義偽指令:RADIX

PIC上海技術(shù)培訓(xùn)中心109格式:RADIX<進(jìn)制表達(dá)式>6.進(jìn)制定義偽在PIC單片機(jī)中,有兩個(gè)概念是令初學(xué)者感到頭痛的事情,也是本課程的難點(diǎn)和重點(diǎn),對(duì)于正確進(jìn)行程序設(shè)計(jì)至關(guān)重要。一個(gè)是數(shù)據(jù)存儲(chǔ)器四體的體選方式,需要時(shí)刻考慮每一個(gè)訪問(wèn)的特殊功能寄存器和通用數(shù)據(jù)存儲(chǔ)器的體位;另一個(gè)是程序存儲(chǔ)器四頁(yè)的頁(yè)選方式,特別是在發(fā)生轉(zhuǎn)移或跳轉(zhuǎn)時(shí),須密切注意是否會(huì)發(fā)生頁(yè)面轉(zhuǎn)換。6.3存儲(chǔ)器選擇方式

PIC上海技術(shù)培訓(xùn)中心110在PIC單片機(jī)中,有兩個(gè)概念是令初學(xué)者感到頭痛的

F877單片機(jī)的數(shù)據(jù)存儲(chǔ)器是一個(gè)具有空間為512字節(jié)的存儲(chǔ)器,其中只有19個(gè)字節(jié)是無(wú)效存儲(chǔ)單元。為了能完全選擇512字節(jié)內(nèi)的數(shù)據(jù),需要9根地址線。而根據(jù)9根地址線的組合方式不同,形成兩種迥然不同的尋址方式:即直接尋址和間接尋址。6.3.1數(shù)據(jù)存儲(chǔ)器體選方式

PIC上海技術(shù)培訓(xùn)中心111F877單片機(jī)的數(shù)據(jù)存儲(chǔ)器是一個(gè)具有空間為512根據(jù)直接尋址和間接尋址操作碼攜帶址址信息情況,一般把512字節(jié)(包括無(wú)效地址)的數(shù)據(jù)存儲(chǔ)器分成4個(gè)區(qū)域,在PIC中被稱為“體”(BANK)。體0(000H~07FH)體1(080H~1FFH)體2(100H~17FH)體3(180H~1FFH)數(shù)據(jù)存儲(chǔ)器體域

PIC上海技術(shù)培訓(xùn)中心112根據(jù)直接尋址和間接尋址操作碼攜帶址址信息情況,一在指令機(jī)器碼中操作數(shù)所攜帶的尋址信息是低7位地址,這不是一個(gè)完備的數(shù)據(jù)信息,每一個(gè)體中均會(huì)有一個(gè)相關(guān)的地址與之對(duì)應(yīng)。要惟一確定地址單元,還必須依托其它的數(shù)據(jù)線進(jìn)行復(fù)合選擇。利用狀態(tài)標(biāo)志STATUS位中的RP1和RP0,與直接尋址機(jī)器碼中低7位地址共同選擇相應(yīng)數(shù)據(jù)存儲(chǔ)器的內(nèi)容參與操作。1.直接尋址訪問(wèn)數(shù)據(jù)存儲(chǔ)器

PIC上海技術(shù)培訓(xùn)中心113在指令機(jī)器碼中操作數(shù)所攜帶的尋址信息是低7位地址在指令機(jī)器碼中真正攜帶的尋址信息是低8位地址,這也不是一個(gè)完備的數(shù)據(jù)信息,在整個(gè)數(shù)據(jù)存儲(chǔ)器中有二個(gè)相關(guān)的地址與之對(duì)應(yīng)。要惟一確定地址單元,也必須依托另一根數(shù)據(jù)線進(jìn)行復(fù)合選擇。主要是依托狀態(tài)標(biāo)志位的IRP,才能準(zhǔn)確選擇相應(yīng)數(shù)據(jù)存儲(chǔ)器的內(nèi)容參與操作。

2.間接尋址訪問(wèn)數(shù)據(jù)存儲(chǔ)器

PIC上海技術(shù)培訓(xùn)中心114在指令機(jī)器碼中真正攜帶的尋址信息是低8位地址,這

F877單片機(jī)的程序存儲(chǔ)器(FLASH)是一個(gè)具有空間為8K×14位的存儲(chǔ)器,其中14位為單元字節(jié)長(zhǎng)度。為了能完全選擇8K的程序存儲(chǔ)器,需要合成13根地址選擇線。6.3.2程序存儲(chǔ)器頁(yè)選方式

PIC上海技術(shù)培訓(xùn)中心115F877單片機(jī)的程序存儲(chǔ)器(FLASH)是一個(gè)具復(fù)位地址0000H,直接給出13根地址選擇線;中斷地址0004H,直接給出13根地址選擇線;指令寄存器,是在每一個(gè)指令的執(zhí)行周期自動(dòng)加1而形成當(dāng)前程序的執(zhí)行方向;執(zhí)行以PCL為目標(biāo)地址的算術(shù)邏輯類指令;調(diào)用子程序方式,即CALL語(yǔ)句以及相應(yīng)的返回語(yǔ)句(RETRUN、RETFIE、RETLW)。轉(zhuǎn)移指令方式,即GOTO語(yǔ)句;程序存儲(chǔ)器指令語(yǔ)句的選擇主要有以下幾種途徑:

PIC上海技術(shù)培訓(xùn)中心116復(fù)位地址0000H,直接給出13根地址選擇線;程序存儲(chǔ)器指令執(zhí)行以PCL為目標(biāo)地址的算術(shù)邏輯類指令執(zhí)行跳轉(zhuǎn)指令(call、goto、retrun、retfie、retlw)兩類指令的執(zhí)行過(guò)程中的裝載效能

PIC上海技術(shù)培訓(xùn)中心117執(zhí)行以PCL為目標(biāo)地址的算術(shù)邏輯類指令兩類指令的執(zhí)行過(guò)程中的ABC EQU 20H ORG 0100HBANKSELABC

MOVLW 00H ;常數(shù)00送入WMOVWF ABC ;W送入ABC存儲(chǔ)器中ORG 0100HPAGESELABC GOTO ABC ;轉(zhuǎn)移至ABCORG 1000HABCMOVLW 00H ;常數(shù)00送入WMOVWF 20H ;W送入20H中補(bǔ)充偽指令PAGESEL、BANKSELPIC上海技術(shù)培訓(xùn)中心118ABC EQU 20H 補(bǔ)充偽指令PAGESE在程序設(shè)計(jì)中,除主程序以外還有一部分很重要的內(nèi)容就是關(guān)于子程序的設(shè)計(jì),它是為完成特定的目的而構(gòu)成的復(fù)合程序。6.4常用子程序的設(shè)計(jì)PIC上海技術(shù)培訓(xùn)中心119在程序設(shè)計(jì)中,除主程序以外還有一部分很重要的內(nèi)容轉(zhuǎn)移和循環(huán)程序,主要是通過(guò)跳轉(zhuǎn)、判斷和位測(cè)試指令來(lái)構(gòu)成的。

1.跳轉(zhuǎn)指令

GOTO2.判斷指令

INCFSZ、DECFSZ

3.位測(cè)試指令BTFSS、BTFSC6.4.1轉(zhuǎn)移和循環(huán)子程序PIC上海技術(shù)培訓(xùn)中心120轉(zhuǎn)移和循環(huán)程序,主要是通過(guò)跳轉(zhuǎn)、判斷和位測(cè)試指令

【例題6-6】比較兩個(gè)數(shù)據(jù)寄存器20H和30H內(nèi)容的大小,將較大的數(shù)送入40H中。 【例題6-6】請(qǐng)將通用寄存器單元20H-2FH,分別對(duì)應(yīng)賦值20H-2FH,請(qǐng)編寫相應(yīng)的軟件程序?!纠}6-7】假定RB0接入一個(gè)按鍵K,當(dāng)K按下時(shí),RB0為高電平,而K為常態(tài)時(shí),RB0為低電平。請(qǐng)編寫按鍵K的監(jiān)控掃描片段程序,DELAY10MS為10M延遲程序,程序框圖如6-4所示。PIC上海技術(shù)培訓(xùn)中心121【例題6-6】比較兩個(gè)數(shù)據(jù)寄存器20H和30H內(nèi)容單片機(jī)的延時(shí)程序,在程序設(shè)計(jì)中具有很重要的地位。延時(shí)的設(shè)計(jì),一般可以通過(guò)兩種方式:硬件延時(shí)和軟件延時(shí)。所謂硬件延時(shí),就是由單片機(jī)系統(tǒng)的定時(shí)器實(shí)現(xiàn);而軟件延時(shí),是通過(guò)循環(huán)程序?qū)崿F(xiàn)。一般來(lái)說(shuō),前者適用于精確定量延時(shí),而后者常用于初略定性延時(shí)?!纠}6-8】簡(jiǎn)單循環(huán)的軟件延時(shí)子程序?!纠}6-9】請(qǐng)編寫10MS軟件延時(shí)子程序?!纠}6-10】請(qǐng)編寫1S軟件延時(shí)子程序。6.4.2軟件延時(shí)子程序

PIC上海技術(shù)培訓(xùn)中心122單片機(jī)的延時(shí)程序,在程序設(shè)計(jì)中具有很重要的地位。數(shù)據(jù)查表子程序在某些特殊場(chǎng)合是非常有用的,如共陰極LED八段顯示器以及其它具有固定顯示模式的場(chǎng)合,需根據(jù)其顯示數(shù)值去查找對(duì)應(yīng)參考數(shù)據(jù)庫(kù)編碼輸出。6.4.3數(shù)據(jù)查表子程序

PIC上海技術(shù)培訓(xùn)中心123數(shù)據(jù)查表子程序在某些特殊場(chǎng)合是非常有用的,如共陰

【例題6-11】將RC端口與共陰極LED八段顯示器相連,從0-9循環(huán)顯示,間隔時(shí)間為1秒,請(qǐng)編寫相應(yīng)的軟件程序。八段顯示數(shù)值(0-9)編碼

PIC上海技術(shù)培訓(xùn)中心124【例題6-11】將RC端口與共陰極LED八段顯示00000000XXXXXXXXPIC單片機(jī)架構(gòu)PC相對(duì)尋址查表實(shí)例

movlw HIGHDecode movwf PCLATH movf DisplayValue,W call Decode movwf PORTB goto ContinueDecode addwf PCL,F retlw B’00111111’;decode0 retlw B’00000110’;decode1 retlw B’01011011’;decode2 retlw B’01001111’;decode3 retlw B’01100110’;decode4 retlw B’01101101’;decode5 retlw B’01111101’;decode6 retlw B’00000111’;decode7 retlw B’01111111’;decode8 retlw B’01101111’;decode9ContinuebegafdcRB0RB1RB2RB3RB4RB5RB6bcdefgW寄存器I/OB口011011010000010101101101gafdcbePIC上海技術(shù)培訓(xùn)中心12500000000XXXXXXXXPIC單片機(jī)架構(gòu)PC相對(duì)尋址

【例題6-12】將RC端口與八個(gè)LED顯示器相連,請(qǐng)按照表6-4即跑馬燈流動(dòng)顯示方式,間隔時(shí)間為1秒,請(qǐng)編寫相應(yīng)的軟件程序。PIC上海技術(shù)培訓(xùn)中心126【例題6-12】將RC端口與八個(gè)LED顯示器相連在PIC指令系統(tǒng)中并沒(méi)有類似的語(yǔ)句,但如果借助于PIC單片機(jī)指令的特殊功能,同樣可以輕松地構(gòu)成分支跳轉(zhuǎn)。分支跳轉(zhuǎn)實(shí)際上是多條件判斷指令,條件本身是一個(gè)整數(shù)或事件,而跳轉(zhuǎn)出口應(yīng)該是整數(shù)的信息返回或事件功能內(nèi)容的具體表現(xiàn)。在程序形式上,分支功能跳轉(zhuǎn)子程序與數(shù)據(jù)查表子程序的結(jié)構(gòu)類似,只是它是用GOTO語(yǔ)句替代了RETLW語(yǔ)句。

6.4.4分支功能跳轉(zhuǎn)子程序PIC上海技術(shù)培訓(xùn)中心127在PIC指令系統(tǒng)中并沒(méi)有類似的語(yǔ)句,但如果借助于假定W為某個(gè)按鍵的輸入值

JIANGN ADDWF PCL,F(xiàn) ;確定相對(duì)偏移量

GOTO PKEY0 ;執(zhí)行PKEY0鍵盤定義功能

GOTO PKEY1 ;執(zhí)行PKEY1鍵盤定義功能

GOTO PKEY2 ;執(zhí)行PKEY2鍵盤定義功能 . . .GOTO PKEYN ;執(zhí)行PKEYN鍵盤定義功能

PIC上海技術(shù)培訓(xùn)中心128假定W為某個(gè)按鍵的輸入值PIC上海技術(shù)培訓(xùn)中心1本節(jié)給出一些常用的數(shù)學(xué)運(yùn)算類子程序,主要有加、減、乘、除等子程序,還有為外擴(kuò)系統(tǒng)設(shè)計(jì)中的數(shù)碼顯示所需的BCD碼和二進(jìn)制數(shù)據(jù)的互換子程序。均涉及入口條件及出口條件,在調(diào)用時(shí)務(wù)必加以注意。一般入口條件是指參與操作的相關(guān)源數(shù)據(jù),用S1、S2(source)等表示,而操作結(jié)果用R1、R2(result)等表示。高低8位數(shù)據(jù)分別用H、L表示,另外用Z表示中8位數(shù)據(jù)??梢詫⑦@些固定變量參數(shù)定義在PIC16F877的頭文件內(nèi),并且單元定義位于映射區(qū)域70H~7FH,這樣就可以不受程序所在頁(yè)面的影響。6.4.4常用數(shù)學(xué)運(yùn)算類子程序PIC上海技術(shù)培訓(xùn)中心129本節(jié)給出一些常用的數(shù)學(xué)運(yùn)算類子程序,主要有加、減、將兩個(gè)無(wú)符號(hào)16位數(shù)相加,編寫雙精度運(yùn)算程序。將兩個(gè)無(wú)符號(hào)16位數(shù)相減,編寫雙精度運(yùn)算程序。將兩個(gè)無(wú)符號(hào)16位數(shù)相乘,編寫雙精度運(yùn)算程序。將兩個(gè)無(wú)符號(hào)16位數(shù)相除,編寫雙精度運(yùn)算程序。將一個(gè)5位數(shù)(<65535)的BCD碼轉(zhuǎn)換成二進(jìn)制數(shù)。將一個(gè)16位二進(jìn)制數(shù)轉(zhuǎn)換成BCD碼(<65535)PIC上海技術(shù)培訓(xùn)中心130將兩個(gè)無(wú)符號(hào)16位數(shù)相加,編寫雙精度運(yùn)算程序。PIC上海技單片機(jī)的性能優(yōu)劣在很大程度上取決于I/O端口功能的強(qiáng)弱,F(xiàn)877PDIP型單片機(jī)共有40個(gè)管腳,其中有33個(gè)是I/O引腳。33個(gè)I/O引腳歸屬于5個(gè)端口,分別為PORTA(6)、PORTB(8)、PORTC(8)、PORTD(8)、PORTE(3),其中括號(hào)內(nèi)的數(shù)字為該端口的位數(shù)。第7章輸入輸出端口

PIC上海技術(shù)培訓(xùn)中心131單片機(jī)的性能優(yōu)劣在很大程度上取決于I/O端口功能

F877單片機(jī)有5個(gè)I/O端口,它們的設(shè)計(jì)思想和內(nèi)部結(jié)構(gòu)都是不同的,即使同一個(gè)端口各個(gè)引腳的內(nèi)部結(jié)構(gòu)也存在差異。但就其通用的輸入/輸出功能,基本具有類同的線路結(jié)構(gòu)。7.1I/O端口功能的通用結(jié)構(gòu)

PIC上海技術(shù)培訓(xùn)中心132F877單片機(jī)有5個(gè)I/O端口,它們的設(shè)計(jì)思想基本端口內(nèi)部結(jié)構(gòu)

PIC上海技術(shù)培訓(xùn)中心133基本端口內(nèi)部結(jié)構(gòu)PIC上海技術(shù)培訓(xùn)中心133

F877單片機(jī)共有十個(gè)外圍功能模塊,幾乎每一個(gè)或多或少都與I/O端口有關(guān)系,有些涉及到控制引腳,有些作為數(shù)據(jù)輸入輸出通道。 基本I/O端口功能的設(shè)置非常方便,只要對(duì)I/O端口的方向寄存

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論