版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024高考化學(xué)一輪復(fù)習(xí)第一部分考點42生命中的基礎(chǔ)有機化學(xué)物質(zhì)強化訓(xùn)練含解析
- 2024高考地理一輪復(fù)習(xí)一等值線專練含解析
- 小學(xué)2025年教育教學(xué)工作計劃
- 工程竣工財務(wù)決算資料清單
- 工程項目安全生產(chǎn)操作規(guī)程
- 二零二五年股份制企業(yè)股東墊資及利潤分成協(xié)議3篇
- 小動物三年級作文300字
- 2024年深圳信息職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測試歷年參考題庫含答案解析
- 芯軸粗車一序作業(yè)指導(dǎo)書.文檔
- 第3章電阻式傳感器講解學(xué)習(xí)
- 2025年月度工作日歷含農(nóng)歷節(jié)假日電子表格版
- 山西省呂梁市2023-2024學(xué)年高二上學(xué)期期末考試數(shù)學(xué)試題(解析版)
- 2024年市場運營部職責(zé)樣本(3篇)
- 2024體育活動區(qū)鋪沙子(合同)協(xié)議
- 《中華人民共和國機動車駕駛?cè)丝颇恳豢荚囶}庫》
- 2024年VB程序設(shè)計:從入門到精通
- 2024年故宮文化展覽計劃:課件創(chuàng)意與呈現(xiàn)
- 公共交通乘客投訴管理制度
- 不銹鋼伸縮縫安裝施工合同
- 水土保持監(jiān)理總結(jié)報告
- Android移動開發(fā)基礎(chǔ)案例教程(第2版)完整全套教學(xué)課件
評論
0/150
提交評論