PICCXX單片機應(yīng)用與設(shè)計_第1頁
PICCXX單片機應(yīng)用與設(shè)計_第2頁
PICCXX單片機應(yīng)用與設(shè)計_第3頁
PICCXX單片機應(yīng)用與設(shè)計_第4頁
PICCXX單片機應(yīng)用與設(shè)計_第5頁
已閱讀5頁,還剩130頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

前言面向應(yīng)用的嵌入式系統(tǒng)在我國方興未艾

微控制器,也就是單片機(MCU),在80年代進入中國。由于微控制

器容易學(xué)、容易用,倍受青瞇。這種把中央處理器、存儲器、外設(shè)器

件及I/O做在同一塊芯片上的器件總是作為應(yīng)用系統(tǒng)中的控制部件

使用?,F(xiàn)在,做在微控制器芯片上的外設(shè)部件越來越多,功能不斷增

強。針對具體的應(yīng)用,利用微控制器可以設(shè)計出十分復(fù)雜的系統(tǒng),這

種系統(tǒng)稱作嵌入式系統(tǒng)。在杭州召開的’99全國單片微機學(xué)術(shù)交流

會暨多國單片微機產(chǎn)品展覽會上,許多專家呼吁要提高對嵌入式系統(tǒng)

的認識。

目前,在全世界,嵌入式系統(tǒng)帶來的工業(yè)年產(chǎn)值已超過1萬億美

元。預(yù)計在美國,單是使用嵌入式電腦的全數(shù)字電視產(chǎn)品每年將產(chǎn)生

1500億美元的新市場。美國未來學(xué)家尼葛洛龐帝曾預(yù)言,四、五年

后,嵌入式智能工具將是繼PC和因特網(wǎng)后最偉大的發(fā)明。就目前國

內(nèi)微控制器的應(yīng)用狀況,全國微機單片機學(xué)會理事長陳章龍教授說,

從整體來講,在中國,微控制器的應(yīng)用水平還不高,主要是用8位微

控制器,用量也不大,絕大多數(shù)是用于IC卡設(shè)備等儀器儀表和控制

領(lǐng)域中。嵌入式系統(tǒng)的核心部件是各種類型的嵌入式處理器,據(jù)不完

全統(tǒng)計,全世界嵌入式處理器的品種已經(jīng)過千,流行的結(jié)構(gòu)有30多

種,其中以我們熟悉的PIC系列結(jié)構(gòu)的產(chǎn)品為最多。據(jù)中國單片機公

共實驗室高級工程師呂京建介紹,嵌入式處理器分為兩大類,一類是

以通用計算機中的CPU為基礎(chǔ)的嵌入式微控制器,另一類是微控制

器。與微處理器相比,微控制器具有單片化、體積小、功耗低、可靠

性高、芯片上的個設(shè)資源豐富等特點,目前已成為嵌入式系統(tǒng)的主流

器件。嵌入式微處理器的軟件是實現(xiàn)嵌入式系統(tǒng)功能的關(guān)鍵,為了提

高執(zhí)行速度和系統(tǒng)的可靠性,嵌入式系統(tǒng)中的軟件一般都固化在存儲

器芯片或微控制器中。

嵌入式系統(tǒng)是面向應(yīng)用的,因此它可以應(yīng)用在現(xiàn)代化工業(yè)的各個

領(lǐng)域,如:航天、航空、軍事、家用消費商品、儀器儀表、各種控制

系統(tǒng)及3c系統(tǒng)。尤其在國內(nèi)主要應(yīng)用于家電消費類產(chǎn)品、通信和計

算機外設(shè)等。

而福州高奇電子科技有限公司正在對MCU的廣泛應(yīng)用起著強大的

推動作用。高奇電子科技有限公司創(chuàng)辦于一九九三年十月,是一家專

業(yè)的半導(dǎo)體集成電路授權(quán)代理商和專業(yè)集成電路應(yīng)用、設(shè)計公司。目

前代理、銷售多家著名半導(dǎo)體廠商的產(chǎn)品,如單片機、E2PR0M、保安

器件、電壓檢測器、LCD/VFD驅(qū)動器、電話來電識別(CallerID)

以及交換機用的Switch、Codec芯片等等;同時,設(shè)有專業(yè)的研發(fā)部

門,已經(jīng)研制了一系列電子產(chǎn)品整機方案,這些方案包括完整的軟硬

件設(shè)計資料及樣機,可提供給整機廠商直接采用生產(chǎn)。公司的工程部

門還可以為客戶量身定做,增加和刪改功能以體現(xiàn)客戶的產(chǎn)品特色。

高奇公司堅持“以專業(yè)的態(tài)度和水準,供優(yōu)質(zhì)產(chǎn)品、創(chuàng)名牌服務(wù)”的

經(jīng)營理念,將全部資源專注于半導(dǎo)體IC的應(yīng)用設(shè)計、行業(yè)市場的專

用IC(ASIC)設(shè)計以及IC市場營銷,并將不斷開拓出電子產(chǎn)品新領(lǐng)

域,并縮短研發(fā)時間,使產(chǎn)品與下面就介紹一種簡單的PIC單片機系

列。時代同步。

下面就介紹一種簡單的PIC單片機系列。

第一章PIC12c5XX功能原理

PIC12C5XX是美國Microchip公司推出的8位單片機,也是世界上第

一個8腳封裝的8位單片機系列。

§1.1功能特點

一、高性能RISC結(jié)構(gòu)CPU

?精簡指令集,僅33條單字節(jié)指令,易學(xué)易用

-除地址分支跳轉(zhuǎn)指令為雙周期指令外,其余所有指令皆為

單周期指令

?執(zhí)行速度:DC?lus

?二級硬件堆棧

?直接、間接、相對三種尋址方式

二、功能部件特性

?8位定時器/計數(shù)器TIMER0,帶8位預(yù)分頻器

?大驅(qū)動電流,I/O腳可直接驅(qū)動數(shù)碼管(LED)顯示

-每個I/。引腳最大控電流25mA

-每個I/O引腳最大灌電流20mA

?內(nèi)置上電復(fù)位電路(POR)

?復(fù)位定時器,保障復(fù)位正常

?內(nèi)部MCLR復(fù)位端加上拉電路,無需外接上拉

?內(nèi)置自振式看門狗,防程序死鎖

?程序保密位,可防止程序代碼的非法拷貝

?低功耗睡眠功能

?I/O引腳可喚醒睡眠

?內(nèi)置4MHzRC型振蕩源,可省外接振蕩

?可選外接振蕩

-RC:低成本阻容振蕩

-XT:標準晶體/陶瓷振蕩

-LP:低速晶體,低功耗振蕩

三、CMOS工藝特性

?低功耗

<2mA@5V,4MHz

-15nA@3V,32KHz

-<1uA低功耗睡眠(Sleep)模式下

?全靜態(tài)設(shè)計

?寬工作電壓范圍:2.5V?5.5V

?寬工作溫度范圍:

商用級:0℃?+70℃

-工業(yè)級:一40℃?+85℃

-汽車級:一40°。?+125℃

§1.2型號及引腳介紹

PIC12c5XX目前有二種型號,見下表:

定輸

I/O封裝

型號振蕩EPROMRAM時入電壓范圍

線(DIP/SOIC)

器線

512X25X

12C508DC~4Mhz1152.5V-5.5V8

128

1024X41X

12C509DC~4Mhz1152.5V-5.5V8

128

表1.1PIC12C5XX型號功能表

各型號管腳圖如下:

PDIP,SOIC,WindowedCERDIP

圖1.112c508/509引腳

下表描述了各引腳的功能。

引腳屬緩沖類

引腳名功能

序號性型

雙向I/O口線,帶可編程弱上拉,

GP07I/OTTL/ST

并具電平變化喚醒睡眠功能

雙向I/O口線,帶可編程弱上拉,

GP16I/OTTL/ST

并具電平變化喚醒睡眠功能

雙向I/O口線,并可設(shè)置為計數(shù)

GP2/T0CK15I/OST

器TIMER0的外部信號輸入端

單向輸入口線,也可設(shè)置為芯片

復(fù)位端。當(dāng)設(shè)為復(fù)位端MCLR時,

GP3/MCLR4ITTL低電平有效。

當(dāng)作為輸入口線時,帶可編程弱

上拉及電平變化喚醒睡眠功能

雙向I/O口線,(使用片內(nèi)RC振

GP4/0SC23I/OTTL

蕩源時,也可作為晶振輸出端)

雙向I/O口線,(使用片內(nèi)RC振

GP5/OSC1/CLKIN2I/OTTL/ST蕩源時,也可作為晶振輸入端或

外部振蕩輸入端)

VDD1——正電源

VSS8——地

注:ST—斯密特觸發(fā)器

表1.2PIC12c5XX引腳功能

從上表可看出,PIC12c5XX最多可以有5根I/O口線和1根輸入

口線(GP3)o

§1.3PIC12C5XX內(nèi)部結(jié)構(gòu)

PIC12C5XX的總線結(jié)構(gòu)采用的是數(shù)據(jù)總線(8位)和指令總線(12

位)獨立分開的“哈佛結(jié)構(gòu)”,所以它具有精簡指令集(RISC)的特

點,速度快,效率高,并且功耗很低。

PIC12C5XX在一個芯片上集成了8位的算術(shù)邏輯運算單元(ALU),

0.5K?1K的12位程序存儲器,25?41個8位數(shù)據(jù)寄存器以及8位的

計數(shù)器,上電復(fù)位電路,復(fù)位定時器,看門狗等等。

圖1.2PIC12c5XX內(nèi)部結(jié)構(gòu)

ROM丘PROM-

3GPO

512x12or三

GP1

1024x12蓼

GP2TT0CKI

Program中

GP3^MCLRJVPP

Memory承

1GPWSC2

_GPWSC1/CLK1N

mxa

EfPKDM

l:Hl.

MMnofy

RC12CLSXX

§1.4指令周期和流水作業(yè)

PIC12C5XX的指令周期被分頻成4個不重疊的節(jié)拍Q1?Q4,程序

計數(shù)器PC在Q1節(jié)拍增1,而指令是在Q4節(jié)拍從程序存儲器中取出

并置入指令譯碼器,并在下一個指令周期被執(zhí)行,如下圖所示:

圖1.3指令周期

指令的執(zhí)行貫穿Q1?Q4節(jié)拍。

如上所述,當(dāng)CPU在執(zhí)行一條指令的同時,下一條指令的代碼

也同時被取出置入指令譯碼器,準備在下一指令周期執(zhí)行,這就是

PIC的流水作業(yè)方式,也是RISC結(jié)構(gòu)單片機的特點,這種特點使單

片機的運行速度可以達到很高。

除了地址分支跳轉(zhuǎn)指令的執(zhí)行周期是2個指令周期外,其余所有指令

都是單周期指令,見下圖:

圖1.4流水作業(yè)

1.MOVLW03H|Fetch1Execute1

2.MOVWFGPIOFetch2Execute2

3.CALLSUB_1Fetch3Execute3

4.BSFQPIOrBIT1Fetch4Flush

FetchSUB1ExecuteSUB1|

AJIinstructionsaresinglecycle,exceptforanyprogrambrandies.Thesetaketwocyclessincethefetch

instructionis'?flushed"fromthepipelinewhilethenewinstructionisbeingfetchedandthenexecuted.

§1.5程序存儲器和堆棧

PIC12C5XX的程序存儲器為12位長,其中PIC12C508為512字節(jié),

而PIC12c509為1024字節(jié)。復(fù)位向量為地址0,因為最后一個字節(jié)

(PIC12C508為地址1FFH,PIC12C509為地址3FFH)存放有片內(nèi)RC

實際振蕩的校正系數(shù),其形式為指令MOVLWXX,用戶不要使用這個

字節(jié),所以用戶的程序應(yīng)從地址000H開始存放,注意這點和PIC16C5X

有所不同。

Note1:AddressOOOOtibecomesttie

effectiveresetvector.Location

OlFFh(P1C12C5O8,PlC12C50aA,

PIC12CE518)orlocation03FFh

(P?C12C5O9,P1C12C509A.

P1C12CR509A.PIC12CE519)con-

tanstheMOVLMxxINTERNALRC

osallalorcalibfationvalue

圖L5程序存儲器和堆棧

PIC12c5XX把程序存儲器以512字節(jié)為單位進行分頁管理,這樣

PIC12c508有一個頁面程序區(qū),而PIC12c509有2個頁面程序區(qū),由

狀態(tài)寄存器STATUS中的PA0位(STATUS<5>)確定程序區(qū)的頁面。

這是因為PIC是RISC結(jié)構(gòu),所有指令都是單字節(jié),在PIC12c5XX中,

一條指令中所包含的地址信息只有9位,只能直接尋址一個頁面(512

字節(jié));對于12c509,則還要由PAO位來輔助尋址2個頁面(1024

字節(jié))的程序空間,即程序當(dāng)需從一個頁面跳轉(zhuǎn)到另一個頁面時

(CALL、GOT。指令),應(yīng)事先根據(jù)要跳轉(zhuǎn)去的頁面,把PA0位置為

相應(yīng)的值,請參閱狀態(tài)寄存器的描述。

PIC12c5XX的堆棧有2層,有自己獨立的空間,不占用程序存儲器。

注意它只能容納二層子程序嵌套調(diào)用。堆棧的長度是12位,和PC長

度一致,可以存放子程序調(diào)用時的PC值。

對堆棧的壓入操作由子程序調(diào)用指令CALL完成,出棧操作則由子程

序返回指令RETLW完成,請參閱第二章中這二條指令的詳介。

§1.6數(shù)據(jù)存儲器

PIC12C5XX的數(shù)據(jù)存儲器(RAM)由一些寄存器組成,分為特殊寄存

器和通用寄存器二種。在PIC單片機中,對任何部件的操作都表現(xiàn)為

對某一寄存器的操作,所以編程非常簡單明了。

地址:地址:FSR<6:5>=00FSR<6:5>=01

7070

OOhINDF*OOhINDF*20h

OlhTMROOlhTMRO

02hPCL02hPCL映

03hSTATUS03hSTATUS

04hFSR04hFSR

05hOSCCAL05hOSCCAL

06hGPIO06hGPIOBankO

07h07h

通用寄存器

■OFh2Fh

通用寄存器

■lOh通用寄存器通用寄存器30h

IFhIFhCBankO)(Bankl)

a.12C508b.12C509

*:非實際存在的寄存器,參見§1.6.1中詳介。

圖L6寄存器結(jié)構(gòu)

從上圖可看到,OOh?06h為特殊寄存器,其余為通用寄存器。

PIC12C508有25個通用寄存器,而PIC12c509則有41個通用寄存器,

其中25個在Bank。,另16個在Bankl,關(guān)于寄存器的Bank方式,請

參閱§1.6.1的FSR寄存器描述。

§1.6.1特殊寄存器

一、INDF(地址:OOh)——間址寄存器

INDF是一個物理上不存在的寄存器,只是一個邏輯寄存器,用來進

行間接尋址,實際的尋址地址為FSR<4:0》的值。

例:MOVLW10h

MOVWFFSR;實際地址10h(F10

寄存器)--*FSR

MOVLW55h

MOVWFINDF;數(shù)據(jù)55h-*F10

INCFFSR;FSR增1(FSR=llh)

MOVWFINDF;數(shù)據(jù)55h-Fil

參閱后面FSR寄存器的描述。

二、TMRO(地址:Olh)——定時器/計數(shù)器寄存器

二、TMRO(地址:Olh)——定時器/計數(shù)器寄存器

TMR0對應(yīng)于TIMER0,它是一個8位的定時器/計數(shù)器(在PIC16c5X

中稱其為RTCC),請參閱§1.8詳介。

三、PCL(地址:02h)——程序計數(shù)器PC〈7:0>

PIC12c5XX程序計數(shù)器PC最多可尋址1K(1024)程序區(qū):

型號PC長度尋址空間PC復(fù)位值

PIC12C5089512IFFh

PIC12C5091010243FFh

單片機一復(fù)位,PC值被置為全“1”指向程序區(qū)的最后一個字節(jié)。前

面我們提過,這個地址存放的是芯片出廠時已放入的MOVLWXX指令

(其中XX是片內(nèi)振蕩校正系數(shù)),所以單片機復(fù)位后會執(zhí)行這條指

令,然后PC馬上翻轉(zhuǎn)到000h,開始執(zhí)行用戶的程序代碼。注意,頁

面選擇位PA0復(fù)位時也被清零,所以這時頁面處于0頁,請參閱有

關(guān)狀態(tài)寄存器STATUS的描述。

對于“GOTO”指令,它的指令碼中含有跳轉(zhuǎn)地址的低9位,即PC〈8:0〉,

對于PIC12c509來說,狀態(tài)寄存器的第5位(STATUS<5>)還會被置

入PC〈9》,以選擇程序頁面,從而尋址1K的程序空間。

GOTOInstruction

11109870

-IIIII卻"l

T1

|instruetexiWord|

PAO

70

□IIIIm

S1AJUS

圖1.7GOTO指令尋址方式

對于“CALL”指令或其他涉及會修改PCL的指令,它們的指令碼中僅

包含目的地址的低8位,即PC〈7:0〉,而PC〈8>總是會被硬件自動清

零,狀態(tài)寄存器第5位(STATUS〈5>)也會被置入PC〈9>以選擇程序

頁面(對于PIC12c509而言)。見下圖:

圖1.8CALL指令或修改PCL的指令尋址方式

從上圖可看出,由于執(zhí)行這些指令硬件總會清PC<8>=0,所以它們的

起始地址都必須限于放在每個程序頁面的上半?yún)^(qū),即頭上的256個字

節(jié)空間內(nèi)(Oh?FFh或200h?2FFh)。

四、STATUS(地址:03h)狀態(tài)寄存器

STATUS寄存器包含了ALU的算術(shù)狀態(tài)、芯片復(fù)位狀態(tài)、程序頁面位

等信息。STATUS可以被讀/寫,但是其中的復(fù)位狀態(tài)位TO、PD不能

由軟件設(shè)置,它們的狀態(tài)如何決定§1.12.7會有詳細描述。

圖L9狀態(tài)寄存器

在加法運算時,c是進位位;在減法運算時,C是借位的反。

例a:

CLRFF10;F10=0

MOVLW1;W=1

SUBWFF10;F10-W=-l(FFH),

C=0(運算結(jié)果為負)

例b:

MOVLW1;W=1

MOVWFF10;F10=l

CLRW;W=0

SUBWFF10;F1O-W=1,C=1(運算

結(jié)果為正)

PD和TO兩位可用來判斷芯片復(fù)位的原因,GPWUF位也是用來判斷芯

片復(fù)位類型,請參閱§1.12.7描述。

五、FSR(地址:04h)——選擇寄存器

FSR和INDF寄存器(地址:00h)配合完成間接尋址,請參閱前面有

關(guān)INDF寄存器的描述。FSR寄存器寬度為5位,F(xiàn)SR〈4:0>用來間接

尋址32個寄存器,F(xiàn)SR<5>則用來選擇寄存器體(Bank),見下圖:

直接尋址方式間接尋址方式

FSRV5葭……國B<4:0>FSR<5>43210

I體選擇I,寄存器選擇|

I體選擇II寄存器選擇II______I_______I

>0001^——1

OOh?——―?20h

(映像到

BarikO)

OFh2Fh

10h30h

IFh1113Fh

BankOBankl

圖1.10直接/間接尋址方式

a、PIC12C508:不存在寄存器體選,F(xiàn)SR〈5>恒為“1”

b、PIC12C509:FSR<5>=1Bankl,

FSR<5>=0BankOo

六、OSCCAL(地址:05h)——內(nèi)部振蕩校正系數(shù)寄存器

PIC12c5XX內(nèi)部集成有RC振蕩供用戶選擇使用,0SCCAL〈7:4〉包含

了該振蕩電路的校正系數(shù),其上電初始值為“0H1”,請參閱§1.11.4

有關(guān)內(nèi)部RC振蕩的描述。

七、GPIO(地址:06h)——I/O寄存器

PIC12C5XX有一個6位的I/O口,它在寄存器中的映像就是GPIO寄

存器,GPI0<5:0>對應(yīng)于I/O口線GP5:GP0,GPI0<7:6>未用,恒為“0”。

八、TRIS——I/O方向控制寄存器

TRIS是GP口線方向控制寄存器,用戶不能直接尋址,必須通過執(zhí)行

“TRIS6”指令來設(shè)置它。當(dāng)執(zhí)行“TRIS6”指令后,W寄存

器的內(nèi)容即會被置入TRIS中?!?”將相應(yīng)的I/O口線設(shè)為輸入態(tài)(高

阻態(tài)),“0”則被設(shè)為輸出態(tài)。但是有二點例外,即GP3永遠是輸

入態(tài)而GP2有可能由OPTION寄存器設(shè)置為輸入態(tài)(TOCKI),而不理

會TRIS中的設(shè)置內(nèi)容。請參閱§1.2關(guān)于I/O口的描述。

例:

MOVLWOFh;W="00001111”

TRIS6;TRIS="001111”,

GP0:GP3為輸入態(tài)

GP4:GP5為輸出態(tài)

各種復(fù)位都會置TRIS為全“1”。

九、OPTION——參數(shù)定義寄存器

OPTION用來定義一些芯片工作參數(shù),見下圖所示:

GPWUGPPUT0SCTOSEPSAPS2PSIPSO

預(yù)分除魏

11iTMRD比率WDT比率

0001:211

0011:412

0101:814

Oil1:1618

1001:321:16

1011:641:32

1101:1281:64

1111:2561:128

預(yù)分囑1分彘

0:分給TIMER0定時器

1:分給WDT看門狗

TIMER0觸發(fā)沿選擇

0:上升沿觸發(fā)

1:下降^觸發(fā)

TIMER0信號源

0:內(nèi)吾計旨令周期

1:外部T0CKI引腳

GPO,GP1,GP3霞上拉選擇

0=使能

1=關(guān)閉

GP0,GP1,GP3電平變化喚醒選擇

0=使能

1=關(guān)閉

圖1.11OPTION寄存器

OPTION也是不能由用戶直接尋址的,必須由執(zhí)行“OPTION”指令來

把W寄存器中的內(nèi)容置入OPTION寄存器,如下例:

MOVLW7;W=“00000111”

OPTION;W-OPTION

各種復(fù)位都會置OPTION為全“1”。

注意即使TRIS中相應(yīng)的GP2方向位是“0”,如果將TOCS置為“1”,

則GP2也會被強置為輸入態(tài),即為T0CKI輸入線。

有關(guān)OPTION各位的定義,請參閱各自相應(yīng)的章節(jié)。

十、W——工作寄存器

W寄存器用來存放指令中的第二個操作數(shù),或用來進行內(nèi)部數(shù)據(jù)傳送,

或存放運算結(jié)果,是最常用的寄存器。

§1.6.2通用寄存器

PIC12C508:07h—IFh;BankO

PIC12C509:07h—IFh;BankO

30h—3Fh;Bankl

通用寄存器在上電后的值是隨機的,所以它屬RAM性質(zhì)。

§1.7I/O口

PIC12c5XX只有一個I/O口,對應(yīng)的映像寄存器為GPIO(地址:06h),

其中GPI0<5:0>對應(yīng)GP5:GP0,GPI0<7:6〉未用,永為“0”。注意,

GP3僅可作為輸入,是單向I/??诰€。另外,GP5、GP4、GP3及GP2

還可以由用戶定義成各種特殊功能口線,一旦它們被用作特殊用途,

則永遠讀為“0”。GPO、GP1和GP3還帶有可編程的弱上拉和“電平

變化喚醒功能”(即喚醒正處于睡眠狀態(tài)下的芯片),關(guān)于這點請參

閱OPTION寄存器的描述。如果GP3被用戶定義為復(fù)位輸入端(MCLR),

則它的弱上拉自動有效,但“電平變化喚醒”特性被自動關(guān)閉。

GPIO口線的方向由TRIS寄存器控制,詳情參見§1.6.1中有關(guān)TRIS

寄存器的描述。

§1.7.1I/O口結(jié)構(gòu)

一根I/O口線的結(jié)構(gòu)如下圖所示:

圖1.12I/O口結(jié)構(gòu)

除了GP3只能單向作為輸入口外,其余的GPIO口皆可由用戶定義為

輸入/輸出態(tài)。作為輸入口時沒有鎖存,外部信號必須保持到讓CPU

讀入為止(例如:MOVFGPIO,W)o作為輸出則有鎖存,可以保持

直到被新的值取代為止。

I/O端的輸入/輸出態(tài)由TRIS寄存器的值控制,當(dāng)TRIS將“1”置入

I/O控制器時Q1和Q2都處于截止態(tài),所以I/O端即呈高阻態(tài)(輸入

態(tài))。當(dāng)執(zhí)行I/O讀指令(如MOVF6,W),把當(dāng)前I/O

端的狀態(tài)讀入數(shù)據(jù)總線。當(dāng)TRIS將“0”置入I/O控制器時,Q1和

Q2的導(dǎo)通情況將要由數(shù)據(jù)鎖存器Q端的狀態(tài)來決定。當(dāng)寫入數(shù)據(jù)為

“1”時,Q端為低電平0,則Q1導(dǎo)通,I/O輸出為高電平。反之,

當(dāng)寫入數(shù)據(jù)為“0”時,Q端為“1”,則Q2導(dǎo)通,I/O端輸出為低電

平。I/O讀寫時序如圖1.13所示。

§1.7.2I/O口使用注意事項

1、I/O方向轉(zhuǎn)置的問題

某時候可能需要一個I/O口一會做輸入,一會又做輸出。這就是I/O

方向的轉(zhuǎn)置。在編寫這種I/O轉(zhuǎn)置程序時必須注意,有些指令如位設(shè)

置指令(BSF、BCF)寫I/O口時是先從I/O讀入其狀態(tài),執(zhí)行位操作

后再將結(jié)果寫回去覆蓋原來的內(nèi)容(輸出的結(jié)果放在I/O口的數(shù)據(jù)鎖

存器)。

舉個例子來說:“BSF6,5”這條指令的目的是要把B口的第6

位置為高電平“1”。執(zhí)行這條指令時,先把整個B口當(dāng)前的狀態(tài)內(nèi)

容讀入到CPU,把第6位置成“1”后再把結(jié)果(8個位)重新輸出到

B口。如果B口中的有一個I/O端是需要方向轉(zhuǎn)置的(比如說bitl),

而這時是處于輸入態(tài),那么B口的狀態(tài)值重新寫入后,B口的數(shù)據(jù)鎖

存器1的鎖存值就是當(dāng)前B口Bitl的狀態(tài)。這可能和先前Bitl作

為輸出時所鎖存的值不同,所以當(dāng)Bitl再轉(zhuǎn)置成輸出態(tài)時,出現(xiàn)在

Bitl端的狀態(tài)就可能和先前的輸出態(tài)不同了。

2、I/O的“線或”和“線與”

從圖1.12看出PICI/O端輸出電路為CMOS互補推挽輸出電路。因此

與其他這類電路一樣,當(dāng)某個PICI/O端設(shè)置為輸出狀態(tài)時,不能與

其他電路的輸出端接成“線或”或“線與”的形式,否則可能引起輸

出電流過載,燒壞PIC。如需要與其他電路接成“線或”電路時,PIC

I/O端必須置于“1”狀態(tài)或輸入狀態(tài),并外接下拉電阻。電阻的阻

值根據(jù)實際電路和PICI/O端最大電流來決定。

3、I/O口的連續(xù)操作

一條寫I/O的指令,對I/。真正寫操作是發(fā)生在指令的后半周期(參

照圖L13)。而讀I/O的指令卻是在指令的周期開始就讀取I/O端

狀態(tài)。所以當(dāng)你連續(xù)對一個I/O端寫入再讀出時,必須要讓I/O端上

的寫入電平有一個穩(wěn)定的時間,否則讀入的可能是前一個狀態(tài),而不

是最新的狀態(tài)值。一般推薦在兩條連續(xù)的寫,讀I/O口指令間至少加

一條NOP指令。

例:

MOVWF6;寫I/O

NOP;穩(wěn)定I/O電平

MOVF6,W;讀1/0

4、噪聲環(huán)境下的I/O操作

在噪聲環(huán)境下(如靜電火花),I/O控制寄存器可能因受干擾而變化。

比如I/O口可能會從輸入態(tài)自己變成輸出態(tài),對于這種情形,WDT也

是無法檢測出來的。因此如果你的應(yīng)用環(huán)境是較惡劣的,建議你每隔

一定的間隔,都重新定義一下I/O控制寄存器。最保險的方法當(dāng)然是

對I/。讀寫前都定義一下I/??刂萍拇嫫鳎ǖ菍嵺`證明對于大多數(shù)

的應(yīng)用都不必做到這樣,只是提請你注意噪聲干擾)。

□1|Q2|Q1|Q2|Q3\04;Qi|Q2|Q3|04Q1|Q2|Q3|04

i,

PC(PC<1X.,iThisexampleshowsawritetoGPIOfollowed

r1?

InstructonbyareadfromGPIO

letcfied'?

MOVWFGPIOMOVFGPIO.VV??NOPNOP

,1Datasetuptime=(0.25TCY-TPD)

??

where:TCY=instructioncycle

GP5GP0i;

■TPD=propagationdelay

?*

Rartpin??PortpinTherefore,athigherdockfrequencies,a

wriltEhere」1writefollowedbyareadmaybeproblematic

一;廠

I--.I1

executed卜

MOVWFGPIO:MOVGPIO.WNOP

(Writeto?(Read

GP1O>;GPIO)

?

?

?

圖1.13I/O口連續(xù)讀/寫時序

§1.8定時器/計數(shù)器TIMERO

TIMERO是一個8位的定時器/計數(shù)器,其對應(yīng)的映像寄存器是TMRO

(地址:Olh),可由用戶程序直接讀寫,并且可帶有8位的預(yù)分頻

器。它用于對外加在GP2/T0CKI引腳上的外部信號進行計數(shù)(計數(shù)器)

或?qū)?nèi)部指令時鐘進行計時(定時器),在PIC16c5X中它被稱為RTCCo

TIMERO及其相關(guān)電路如圖1.14所示。從圖中可看出TIMERO工作狀

態(tài)由OPTION寄存器控制,其中OPTION寄存器的TOSC位用來選擇

TIMERO的計數(shù)信號源,當(dāng)TOSC為“1”時,信號源為內(nèi)部時鐘,TOSC

為為"時,信號源為來自T0CKI引腳的外部信號。OPTION寄存器的

PSA位控制預(yù)分頻器(Prescaler)分配對象,當(dāng)PSA位為"1",分

配給TIMERO,即外部或內(nèi)部信號經(jīng)過預(yù)分頻器分頻后再輸出給

TIMEROo預(yù)分頻器的分頻比率由OPTION內(nèi)的PSO?PS2決定。這時

涉及寫TMR0寄存器的指令均同時將預(yù)分頻器清零,OPTION寄存器內(nèi)

容保持不變,即分配對象、分頻比率等均不變。OPTION的TOSE位用

于選擇外部計數(shù)脈沖觸發(fā)沿。當(dāng)TOSE為“1”時為下降沿觸發(fā),為“0”

時則上升沿觸發(fā)。

圖1.14TIMERO方塊圖

TIMERO計數(shù)器采用遞增方式計數(shù),當(dāng)計數(shù)至FFH時,在下一個計數(shù)

發(fā)生后,將自動復(fù)零,重新開始計數(shù),從此一直循環(huán)下去。TIMERO

對其輸入脈沖信號的響應(yīng)延遲時間為2個機器周期,不論輸入脈沖是

內(nèi)部時鐘、外部信號或是預(yù)分頻器的輸出。響應(yīng)時序見圖1.15。

TIMERO對外部信號的采樣周期為2個振蕩周期,因此當(dāng)不用預(yù)分頻

器時,外加在TOCKI引腳上的脈沖寬度不得小于2個振蕩周期即1/2

指令周期。同時,當(dāng)使用預(yù)分頻器時,預(yù)分頻器的輸出脈沖周期不得

小于指令周期,因此預(yù)分頻器最大輸入頻率可達N,fosc/4,N為預(yù)

分頻器的分頻比,但不得大于50MHz。

PC;Q11O2|8|O4;51sl:QY|Q2|Q3|Q4:Q1|O2|8|3:QI|Q2|Q3|Q4;Q1|Q2|8|Q4:QI|Q2|Q3|Q4;Q“Q2|8|O4;

{ProgGtfnIiii

Counlsr)(,[IIXPU?441PC?6>

ii?i

Instruction1'MOVWFTM,RMO3rTMRO.W,M5/FTMRDW,MOVT1MRL-.W,MOVF,MOVFTMRO.Wii

iiI1

iiii

iiI1

TtnorV,I;HIK.TJ*2X.NUI!¥!]f十MML

??ifi

??:f

Inslrucbcn??

EiooaAad??t!Read7MR0:

'WrteTMRO!RsadTMRGIRaadlMRO;-v..:ir.'K1;Ro?dTMRD

cotttoiriaanoadsNIOraadsNTOreadsNTDroadsNTO*1readsNTO*2

圖1.15a.TIMERO時序圖:內(nèi)部時鐘/無預(yù)分頻器

:::Ql|Q2|Q3|Q4Ql|Q2|Q3|Q4:Ql|a2|Q3|O4:Ql|Q2|8|Q4:Ql|O2|8|a:

PC5|Q2|Q3|Q4Ql|Q2|8|O4Ql|Q2|8|a4

(Program

Couhtar>1PC?2PC43IPL.4I

InstruebonJ:MOVbVFTMRO?MO/fIMRU.WMCA/FFMRDViMOVFrMRD.W?MCAfFTfcWu.W?MCVF'MRJXW'

y-[■

TbnaOIaT

溫馨提示

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

評論

0/150

提交評論