




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、前言面向應(yīng)用的嵌入式系統(tǒng)在我國方興未艾微控制器,也就是單片機(jī)(MCU,在80年代進(jìn)入中國。由于微控制器容易學(xué)、容易用,倍受青瞇。這種把中央處理器、存儲器、外設(shè)器件及I/O做在同一塊芯片上的器件總是作為應(yīng)用系統(tǒng)中的控制部件使用?,F(xiàn)在,做在微控制器芯片上的外設(shè)部件越來越多,功能不斷增強。針對具體的應(yīng)用,利用微控制器可以設(shè)計出十分復(fù)雜的系統(tǒng),這種系統(tǒng)稱作嵌入式系統(tǒng)。在杭州召開的99全國單片微機(jī)學(xué)術(shù)交流會暨多國單片微機(jī)產(chǎn)品展覽會上,許多專家呼吁要提高對嵌入式系統(tǒng)的認(rèn)識。?目前,在全世界,嵌入式系統(tǒng)帶來的工業(yè)年產(chǎn)值已超過1萬億美元。預(yù)計在美國,單是使用嵌入式電腦的全數(shù)字電視產(chǎn)品每年將產(chǎn)生1500億美元的
2、新市場。美國未來學(xué)家尼葛洛龐帝曾預(yù)言,四、五年后,嵌入式智能工具將是繼PC和因特網(wǎng)后最偉大的發(fā)明。就目前國內(nèi)微控制器的應(yīng)用狀況,全國微機(jī)單片機(jī)學(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ù)中國單片機(jī)公共實驗室高級工程師呂京建介紹,嵌入式處理器分為兩大類,一類是以通用計算機(jī)中的CPLfe基礎(chǔ)的嵌入式微控制器,另一類是微控制器。與微處
3、理器相比,微控制器具有單片化、體積小、功耗低、可靠性高、芯片上的個設(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)品、通信和計算機(jī)外設(shè)等。而福州高奇電子科技有限公司正在對MCU勺廣泛應(yīng)用起著強大的推動作用。高奇電子科技有限公司創(chuàng)辦于一九九三年十月,是一家專業(yè)的半導(dǎo)體集成電路授權(quán)代理商和專業(yè)集成電路
4、應(yīng)用、設(shè)計公司。目前代理、銷售多家著名半導(dǎo)體廠商的產(chǎn)品,如單片機(jī)、E2PROM保安器件、電壓檢測器、LCD/VFD®動器、電話來電識別(CallerID)以及交換機(jī)用的Switch、Codec芯片等等;同時,設(shè)有專業(yè)的研發(fā)部門,已經(jīng)研制了一系列電子產(chǎn)品整機(jī)方案,這些方案包括完整的軟硬件設(shè)計資料及樣機(jī),可提供給整機(jī)廠商直接采用生產(chǎn)。公司的工程部門還可以為客戶量身定做,增加和刪改功能以體現(xiàn)客戶的產(chǎn)品特色。高奇公司堅持“以專業(yè)的態(tài)度和水準(zhǔn),供優(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)
5、域,并縮短研發(fā)時間,使產(chǎn)品與下面就介紹一種簡單的PIC單片機(jī)系列。時代同步。?下面就介紹一種簡單的PIC單片機(jī)系列第一章?PIC12C5XXJ能原理PIC12C5X爆美國Microchip公司推出的8位單片機(jī),也是世界上第一個8腳封裝的8位單片機(jī)系列。§?功能特點一、高性能RISC結(jié)構(gòu)CPU?精簡指令集,僅33條單字節(jié)指令,易學(xué)易用?除地址分支跳轉(zhuǎn)指令為雙周期指令外,其余所有指令皆為單周期指令?執(zhí)行速度:D01區(qū)s?二級硬件堆棧?直接、間接、相對三種尋址方式二、功能部件特性?8位定時器/計數(shù)器TIMER0帶8位預(yù)分頻器?大驅(qū)動電流,I/O腳可直接驅(qū)動數(shù)碼管(LED顯示?-每個I/O引
6、腳最大控電流25mA?內(nèi)置上電復(fù)位電路(POR?復(fù)位定時器,保障復(fù)位正常?內(nèi)部MCL覆位端加上拉電路,無需外接上拉?內(nèi)置自振式看門狗,防程序死鎖?程序保密位,可防止程序代碼的非法拷貝?低功耗睡眠功能?I/O引腳可喚醒睡眠?內(nèi)置4MHzR型振蕩源,可省外接振蕩?可選外接振蕩?-RC:?低成本阻容振蕩?-XT:?標(biāo)準(zhǔn)晶體/陶瓷振蕩?-LP:?低速晶體,低功耗振蕩三、CMOS:藝特性?低功耗?<2mA?5V,4MHz?-<1pA才氐功耗目民(S9ep)模式下?全靜態(tài)設(shè)計?寬工作電壓范圍:?寬工作溫度范圍:?喃用級:?0c+70C?業(yè)級:40C+85c?汽車級:一40C+125C§
7、;?型號及引腳介紹PIC12C5XXB前有二種型號,見下表:型?號振?蕩EPROb/IRAM定時器輸入線I/O線電壓池圍封裝(DIP/SOIC)12C508DC4Mh512Xz1225X811512C表?PIC12C5X通號功能表各型號管腳圖如下:PDIP,SOIQWindowedCERDIPVDD><VSSGP5/OSC1/CLKIN>< >GP0GP4/OSC2>< >GP1GP3/MCLR/VPP><>GP2/T0CK1圖?12C508/509引腳F表描述了各引腳的功能引腳名引腳序號屬性緩沖類型功能GP07I/OTTL/S
8、T雙向I/O口線,帶可編程弱上拉,并具電平變化喚醒睡眠功能GP16I/OTTL/ST雙向I/O口線,帶可編程弱上拉,并具電平變化喚醒睡眠功能GP2/T0CK15I/OST雙向I/O口線,并可設(shè)置為計數(shù)器TIMER0的外部信號輸入端GP3/MCLR4ITTL單向輸入口線,也可設(shè)置為芯片復(fù)位端。當(dāng)設(shè)為復(fù)位端MCLR寸,低電平啟效。當(dāng)作為輸入口線時,帶可編程弱上拉及電平變化喚醒睡眠功能GP4/OSC23I/OTTL雙向I/O口線,(使用片內(nèi)RCfe枷g時,也可作為晶振輸出端)GP5/OSC1/CLKIIN2I/OTTL/ST雙向I/O口線,(使用片內(nèi)RCfe枷g時,也可作為晶振輸入端或外部振藩輸入端
9、)VDD1電源一正電源VSS8電源一地注:SR斯密特觸發(fā)器表?PIC12C5X劉卿功能?從上表可看出,PIC12C5XX®多可以有5根I/O口線和1根輸入口線(GP3。§?PIC12C5X訥部結(jié)構(gòu)?PIC12C5XX勺總線結(jié)構(gòu)采用白是數(shù)據(jù)總線(8位)和指令總線(12位)獨立分開的“哈佛結(jié)構(gòu)”,所以它具有精簡指令集(RISQ的特點,速度快,效率高,并且功耗很低。?PIC12C5X也一個芯片上集成了8位的算術(shù)邏輯運算單元(ALU,-1K的12位程序存儲器,2541個8位數(shù)據(jù)寄存器以及8位的計數(shù)器,上電復(fù)位電路,復(fù)位定時器,看門狗等等。圖?PIC12C5X訥部結(jié)構(gòu)§?指
10、令周期和流水作業(yè)?PIC12C5XX勺指令周期被分頻成4個不重疊的節(jié)拍Q1Q4,程序計數(shù)器PC在Q1節(jié)拍增1,而指令是在Q4節(jié)拍從程序存儲器中取出并置入指令譯碼器,并在下一個指令周期被執(zhí)行,如下圖所示:?指令周期?指令的執(zhí)行貫穿Q1Q4節(jié)拍。?如上所述,當(dāng)CPLft執(zhí)行一條指令的同時,下一條指令的代碼也同時被取出置入指令譯碼器,準(zhǔn)備在下一指令周期執(zhí)行,這就是PIC的流水作業(yè)方式,也是RISC結(jié)構(gòu)單片機(jī)的特點,這種特點使單片機(jī)的運行速度可以達(dá)到很高。除了地址分支跳轉(zhuǎn)指令的執(zhí)行周期是2個指令周期外,其余所有指令都是單周期指令,見下圖:?流水作業(yè)§?程序存儲器和堆棧PIC12C5XX勺程序
11、存儲器為12位長,其中PIC12C508為512字節(jié),而PIC12C509為1024字節(jié)。復(fù)位向量為地址0,因為最后一個字節(jié)(PIC12C508為地址1FFHJPIC12C509為地址3FFH存放有片內(nèi)RC實際振蕩的校正系數(shù),其形式為指令MOVLWXXB戶不要使用這個字節(jié),所以用戶的程序應(yīng)從地址000H開始存放,注意這點和PIC16C5XW所不同。?程序存儲器和堆棧PIC12C5XX巴程序存儲器以512字節(jié)為單位進(jìn)行分頁管理,這樣PIC12C50的一個頁面程序區(qū),而PIC12C509有2個頁面程序區(qū),由狀態(tài)寄存器STATU阱的PA0位(STATUS<5>B定程序區(qū)的頁面。這是因為P
12、IC是RISC結(jié)構(gòu),所有指令都是單字節(jié),在PIC12C5XW,一條指令中所包含的地址信息只有9位,只能直接尋址一個頁面(512字節(jié));對于12C509則還要由PA0位來輔助尋址2個頁面(1024字節(jié))的程序空間,即程序當(dāng)需從一個頁面跳轉(zhuǎn)到另一個頁面時(CALLGOTO旨令),應(yīng)事先根據(jù)要跳轉(zhuǎn)去的頁面,把PA0位置為相應(yīng)的值,請參閱狀態(tài)寄存器的描述。PIC12C5XX勺堆棧有2層,有自己獨立的空間,不占用程序存儲器。注意它只能容納二層子程序嵌套調(diào)用。堆棧的長度是12位,和PC長度一致,可以存放子程序調(diào)用時的PC值。對堆棧的壓入操作由子程序調(diào)用指令CALL完成,出棧操作則由子程序返回指令RETL怫
13、成,請參閱第二章中這二條指令的詳介。§?數(shù)據(jù)存儲器PIC12C5XX勺數(shù)據(jù)存儲器(RAM由一些寄存器組成,分為特殊寄存器和通用寄存器二種。在PIC單片機(jī)中,對任何部件的操作都表現(xiàn)為對某一寄存器的操作,所以編程非常簡單明了。?*:非實際存在的寄存器,參見§1.6.1中詳介。圖?寄存器結(jié)構(gòu)從上圖可看到,00h06h為特殊寄存器,其余為通用寄存器。PIC12C508有25個通用寄存器,而PIC12C509則有41個通用寄存器,其中25個在Bank。,另16個在Bankl,關(guān)于寄存器的Bank方式,請參閱§1.6.1的FSR寄存器描述。§ 1.6.1 特殊寄存器
14、?一、INDF(地址:00h)間址寄存器INDF是一個物理上不存在的寄存器,只是一個邏輯寄存器,用來進(jìn)行間接尋址,實際的尋址地址為FSR<4:0>勺值。例:?MOVLW?10h?MOVWF?FSR?際地址10h(F10寄存器)FSR?MOVLW?55h?MOVWF?INDF?據(jù)55hF10?INCF?FSR?FSR曾1(FSR=11h?MOVWF?INDF?做據(jù)55hF11?滲閱后面FSR寄存器的描述。二、TMR0(地址:01h)定時器/計數(shù)器寄存器二、TMR0(地址:01h)定時器/計數(shù)器寄存器TMR0寸應(yīng)于TIMER0它是一個8位的定時器/計數(shù)器(在PIC16C5X中稱其為RT
15、CC,請參閱§詳介。三、PCL(地址:02h)程序計數(shù)器PC<7:0>PIC12C5XXS序計數(shù)器PC最多可尋址1K(1024)程序區(qū):型??號PC長度尋址空間PC復(fù)位值PIC12C50895121FFhPIC12C5091010243FFh單片機(jī)一復(fù)位,PC值被置為全“1”指向程序區(qū)的最后一個字節(jié)。前面我們提過,這個地址存放的是芯片出廠時已放入的MOVLWXX令(其中XX是片內(nèi)振蕩校正系數(shù)),所以單片機(jī)復(fù)位后會執(zhí)行這條指令,然后PC馬上翻轉(zhuǎn)到000h,開始執(zhí)行用戶的程序代碼。注意,頁面選擇位PA0復(fù)位時也被清零,所以這時頁面處于。頁,請參閱有關(guān)狀態(tài)寄存器STATUS勺描
16、述。對于“GOTO指令,它的指令碼中含有跳轉(zhuǎn)地址的低9位,即PC<8:0>,對于PIC12C509來說,狀態(tài)寄存器的第5位(STATUS<5>還會被置入PC<9>以選擇程序頁面,從而尋址1K的程序空間。??圖?GOTO1令尋址方式對于“CALI:指令或其他涉及會修改PCL的指令,它們的指令碼中僅包含目的地址的低8位,即PC<7:0>,而PC<8痣是會被硬件自動清零,狀態(tài)寄存器第5位(STATUS<5>也會被置入PC<9以選擇程序頁面(對于PIC12C509而言)。見下圖:?圖?CAL廿旨令或修改PCL的指令尋址方式從上圖可
17、看出,由于執(zhí)行這些指令硬件總會清PC<8>=0所以它們的起始地址都必須限于放在每個程序頁面的上半?yún)^(qū),即頭上的256個字節(jié)空間內(nèi)(0hFFh或200h2FFh)。四、STATUS地址:03h)狀態(tài)寄存器STATUSS存器包含了ALU的算術(shù)狀態(tài)、芯片復(fù)位狀態(tài)、程序頁面位等信息。STATUS!以被讀/寫,但是其中的復(fù)位狀態(tài)位TQPD不能由軟件設(shè)置,它們的狀態(tài)如何決定§1.12.7會有詳細(xì)描述。圖?狀態(tài)寄存器在加法運算時,C是進(jìn)位位;在減法運算時,C是借位的反。例a:?CLRF?F10?;?F10=0?MOVLW?1?;?W?=1?SUBWF?F10?F10-W=-1(FFF3,
18、C=0(運算結(jié)果為負(fù))例b:?MOVLW?1?;?W?=1?MOVWF?F10?;?F?10=1?CLRW?;?W=0?SUBWF?F10?F10-W=1C=1(運算結(jié)果為正)PD和TO兩位可用來判斷芯片復(fù)位的原因,GPWUa也是用來判斷芯片復(fù)位類型,請參閱§1.12.7描述。五、FSR(地址:04h)選擇寄存器FS并口INDF寄存器(地址:00h)配合完成間接尋址,請參閱前面有關(guān)INDF寄存器的描述。FSR寄存器寬度為5位,F(xiàn)SR<4:0湘來間接尋址32個寄存器,F(xiàn)SR<5則用來選擇寄存器體(Bank),見下圖:圖?直接/間接尋址方式?aPIC12C508不存在寄存器體
19、選,F(xiàn)SR<5相為“1”。?b、PIC12C509:FSR<5>=1?Bank,1?FSR<5>=0?Bank0六、OSCCAL地址:05h)內(nèi)部振蕩校正系數(shù)寄存器PIC12C5XX3部集成有RC振蕩供用戶選擇使用,OSCCAL<7:飽含了該振蕩電路的校正系數(shù),其上電初始值為“0111”,請參閱§1.11.4有關(guān)內(nèi)部RC振蕩的描述。七、GPIO(地址:06h)I/O寄存器PIC12C5XXT一個6位的I/O口,它在寄存器中的映像就是GPIO寄存器,GPIO<5:0>寸應(yīng)于I/O口線GP5:GP0GPIO<7:6味用,恒為“0”。八
20、、TRIS-I/O方向控制寄存器TRIS是GP口線方向控制寄存器,用戶不能直接尋址,必須通過執(zhí)行“TRIS?6'指令來設(shè)置它。當(dāng)執(zhí)行“TRIS?6'指令后,W寄存器的內(nèi)容即會被置入TRIS中?!?”將相應(yīng)的I/O口線設(shè)為輸入態(tài)(高阻態(tài)),“0”則被設(shè)為輸出態(tài)。但是有二點例外,即GP3永遠(yuǎn)是輸入態(tài)而GP2有可能由OPTION存器設(shè)置為輸入態(tài)(T0CKI),而不理會TRIS中的設(shè)置內(nèi)容。請參閱§關(guān)于I/O口的描述。例:?MOVLW?0Fh?;?W?=“00001111”?TRIS?6?;?TRIS=“001111”,GP0:GP刻輸入態(tài)?GP4:gp的輸出態(tài)各種復(fù)位都會置
21、TRIS為全“1”。九、option-參數(shù)定義寄存器option來定義一些芯片工作參數(shù),見下圖所示:圖?OPTION?存器OPTIO也是不能由用戶直接尋址的,必須由執(zhí)行“OPTION指令來把W哥存器中的內(nèi)容置入OPTION!存器,如下例:?MOVLW?7?;?W?=“00000111”?OPON?option各種復(fù)位都會置OPTIONS全“1”。注意即使TRIS中相應(yīng)的GP2方向位是“0”,如果將TOC篁為“1”,則GP她會被強置為輸入態(tài),即為T0CKI輸入線。有關(guān)OPTION位的定義,請參閱各自相應(yīng)的章節(jié)。十、工作寄存器W寄存器用來存放指令中的第二個操作數(shù),或用來進(jìn)行內(nèi)部數(shù)據(jù)傳送,或存放運算
22、結(jié)果,是最常用的寄存器。§ 1.6.2 通用寄存器?PIC12C50807h1Fh?Bank0?PIC12C50907h1Fh?BankO?30h-3Fh?Bankl通用寄存器在上電后的值是隨機(jī)的,所以它屬RAM生質(zhì)。§?I/O口PIC12C5XXR有一個I/O口,對應(yīng)的映像寄存器為GPIO(地址:06h),其中GPIO<5:0相應(yīng)GP5:GP0GPIO<7:6沫用,永為“0”。注意,GP取可作為輸入,是單向I/O口線。另外,GP5GP4GP3及GP班可以由用戶定義成各種特殊功能口線,一旦它們被用作特殊用途,則永遠(yuǎn)讀為“0”。GP0GP1和GP3還帶有可編程的弱
23、上拉和“電平變化喚醒功能”(即喚醒正處于睡眠狀態(tài)下的芯片),關(guān)于這點請參閱OPTIONS存器的描述。如果GP蹴用戶定義為復(fù)位輸入端(MCLR,則它的弱上拉自動有效,但“電平變化喚醒”特性被自動關(guān)閉。GPIO口線的方向由TRIS寄存器控制,詳情參見§1.6.1中有關(guān)TRIS寄存器的描述。1.7.1?I/O口結(jié)構(gòu)一根I/O口線的結(jié)構(gòu)如下圖所示:?I/O口結(jié)構(gòu)除了GP3只能單向作為輸入口外,其余的GPIO皆可由用戶定義為輸入/輸出態(tài)。作為輸入口時沒有鎖存,外部信號必須保持到讓CPU賣入為止(例如:MOVF?GP|OW。作為輸出則有鎖存,可以保持直到被新的值取代為止。I/O端的輸入/輸出態(tài)由
24、TRIS寄存器的值控制,當(dāng)TRIS將“1”置入I/O控制器時Q1和Q2都處于截止態(tài),所以I/O端即呈高阻態(tài)(輸入態(tài))。當(dāng)執(zhí)行I/O讀指令(如MOVF?6叫,把當(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.7.2?I/O口使用注意事項1、 I/O方向轉(zhuǎn)置的問題某時候可能需要一個I/O口一會做輸入,一會又做輸出。這就是I/O方向的轉(zhuǎn)置。在
25、編寫這種I/O轉(zhuǎn)置程序時必須注意,有些指令如位設(shè)置指令(BSRBCF寫I/O口時是先從I/O讀入其狀態(tài),執(zhí)行位操作后再將結(jié)果寫回去覆蓋原來的內(nèi)容(輸出的結(jié)果放在I/O口的數(shù)據(jù)鎖存器)。舉個例子來說:“BSF?65”這條指令的目的是要把B口的第6位置為高電平“1”。執(zhí)行這條指令時,先把整個B口當(dāng)前的狀態(tài)內(nèi)容讀入到CPU把第6位置成“1”后再把結(jié)果(8個位)重新輸出到B口。如果B口中的有一個I/O端是需要方向轉(zhuǎn)置的(比如說bit1),而這時是處于輸入態(tài),那么B口的狀態(tài)值重新寫入后,B口的數(shù)據(jù)鎖存器1的鎖存值就是當(dāng)前B口Bit1的狀態(tài)。這可能和先前Bit1作為輸出時所鎖存的值不同,所以當(dāng)Bit1再轉(zhuǎn)
26、置成輸出態(tài)時,出現(xiàn)在Bit1端的狀態(tài)就可能和先前的輸出態(tài)不同了。2、 I/O的“線或”和“線與”從圖看出PICI/O端輸出電路為CMOSE補推挽輸出電路。因此與其他這類電路一樣,當(dāng)某個PICI/O端設(shè)置為輸出狀態(tài)時,不能與其他電路的輸出端接成“線或”或“線與”的形式,否則可能引起輸出電流過載,燒壞PIC。如需要與其他電路接成“線或”電路時,PICI/O端必須置于“1”狀態(tài)或輸入狀態(tài),并外接下拉電阻。電阻的阻值根據(jù)實際電路和PICI/O端最大電流來決定。3、 I/O口的連續(xù)操作一條寫I/O的指令,對I/O真正寫操作是發(fā)生在指令的后半周期(參照圖)。而讀I/O的指令卻是在指令的周期開始就讀取I/O
27、端狀態(tài)。所以當(dāng)你連續(xù)對一個I/O端寫入再讀出時,必須要讓I/O端上的寫入電平有一個穩(wěn)定的時間,否則讀入的可能是前一個狀態(tài),而不是最新的狀態(tài)值。一般推薦在兩條連續(xù)的寫,讀I/O口指令間至少加一條NO月旨令。例:?MOVWF?6?I/O?NOp?急定i/o電平?MOVF?6W?讀I/O4、噪聲環(huán)境下的I/O操作在噪聲環(huán)境下(如靜電火花),I/O控制寄存器可能因受干擾而變化。比如I/O口可能會從輸入態(tài)自己變成輸出態(tài),對于這種情形,WDTa是無法檢測出來的。因此如果你的應(yīng)用環(huán)境是較惡劣的,建議你每隔一定的間隔,都重新定義一下I/O控制寄存器。最保險的方法當(dāng)然是對I/O讀寫前都定義一下I/O控制寄存器(
28、但是實踐證明對于大多數(shù)的應(yīng)用都不必做到這樣,只是提請你注意噪聲干擾)。圖?I/O口連續(xù)讀/寫時序§?定時器/計數(shù)器TIMER0TIMER喔一個8位的定時器/計數(shù)器,其對應(yīng)的映像寄存器是TMR0(地址:01h),可由用戶程序直接讀寫,并且可帶有8位的預(yù)分頻器。它用于對外加在GP2/T0CKI引腳上的外部信號進(jìn)行計數(shù)(計數(shù)器)或?qū)?nèi)部指令時鐘進(jìn)行計時(定時器),在PIC16C5X中它被稱為RTCCTIMER吸其相關(guān)電路如圖所示。從圖中可看出TIMER0X作狀態(tài)由OPTION寄存器控制,其中OPTIO曲存器的T0SC&用來選擇TIMER0的計數(shù)信號源,當(dāng)T0SC為“1”時,信號源為
29、內(nèi)部時鐘,T0SC為“0”時,信號源為來自T0CKI引腳的外部信號。OPTIONS存器的PSA位控制預(yù)分頻器(Prescaler)分配對象,當(dāng)PSAB為“1”,分配給TIMER0即外部或內(nèi)部信號經(jīng)過預(yù)分頻器分頻后再輸出給TIMER0預(yù)分頻器的分頻比率由OPTION的PSAPS2決定。這日t涉及寫TMR膏存器的指令均同時將預(yù)分頻器清零,OPTIO烯存器內(nèi)容保持不變,即分配對象、分頻比率等均不變。OPTION勺T0SE位用于選擇外部計數(shù)脈沖觸發(fā)沿。當(dāng)T0SE為“1”時為下降沿觸發(fā),為“0”時則上升沿觸發(fā)。?同?TIMER昉塊圖TIMER的數(shù)器采用遞增方式計數(shù),當(dāng)計數(shù)至FFH時,在下一個計數(shù)發(fā)生后,
30、將自動復(fù)零,重新開始計數(shù),從此一直循環(huán)下去。TIMER0對其輸入脈沖信號的響應(yīng)延遲時間為2個機(jī)器周期,不論輸入脈沖是內(nèi)部時鐘、外部信號或是預(yù)分頻器的輸出。響應(yīng)時序見圖。TIMER0寸外部信號的采樣周期為2個振蕩周期,因此當(dāng)不用預(yù)分頻器時,外加在T0CKI引腳上的脈沖寬度不得小于2個振蕩周期即1/2指令周期。同時,當(dāng)使用預(yù)分頻器時,預(yù)分頻器的輸出脈沖周期不得小于指令周期,因此預(yù)分頻器最大輸入頻率可達(dá)N,fosc/4,N為預(yù)分頻器的分頻比,但不得大于50MHz1.15a.?TIMER0時序圖:內(nèi)部時鐘/無預(yù)分頻器圖.?TIMER0時序圖:內(nèi)部時鐘/預(yù)分頻比1:2應(yīng)注意的是盡管PIC對外部加于T0C
31、KI信號端上的信號寬度沒有很嚴(yán)格的要求,但是如果高電平或低電平的維持時間太短,也有可能使TIMER臉測不到這個信號。一般要求信號寬度要大于10ns。§?預(yù)分頻器預(yù)分頻器是一個分頻倍數(shù)可編程的8位計數(shù)器。其結(jié)構(gòu)如圖所示上節(jié)對預(yù)分頻參數(shù)已有描述,這里不再贅述。預(yù)分預(yù)器的分配對象完全由程序控制,可以在程序中改變Prescaler分配對象。1、從TIMER®UWDT勺改變?MOVLW?B'XX0X0XXX'選擇內(nèi)部時鐘和新的預(yù)分頻值?OPON?果新的預(yù)分頻值='000'或者?CLRF?1?;?='001',則暫時先選一個另外的值?MO
32、VLW?B'XXXX1XXX'?零TMR序口預(yù)分頻器?OPTION?選擇WD偽對象,但不要改變預(yù)分頻值?CLRWDT?WD麗預(yù)分頻器?MOVLW?B'XXXX1XXX'?擇新的預(yù)分頻器?OPTION2、從WD創(chuàng)TIMER期改變?CLRWDT?tWD吸Prescaler?MOVLW?B'XXXX0XXX'?擇TIMER0?OPTION圖?預(yù)分頻器方塊圖注意,預(yù)分頻器只能分配給TIMER械WDTi中之一使用,而不能同時分配給二者。?看門狗WDT看門狗計時器(WatchDogTimer)是一個片內(nèi)自振式的RC振蕩計時器,無需任何的外接元件。這意味著即使
33、芯片振蕩停止了(例如執(zhí)行指令SLEEP后),WDT(樣保持計時。WDT+時溢出將產(chǎn)生RESET在PIC12C5XXE片內(nèi)有一個特殊的謂之“系統(tǒng)定義字”(ConfigurationEPROM)的單元,其中的一個位是用于定義WDT勺,可以將其置“0”來抑制WDT®之永遠(yuǎn)不起作用。這將在第六章的燒寫器介紹部分詳細(xì)說明。1、WD調(diào)期WDTT一個基本白溢出周期18ms(無預(yù)設(shè)倍數(shù)),如果需要更長的WDTW期,可以把預(yù)分頻器分配給WDT最大分頻比可達(dá)1:128,這時的WD尷出周期約為。WD瞌出周期和環(huán)境溫度、VDD?參數(shù)有關(guān)系,請參閱附錄的圖表。“CLRWUT和“SLEEP指令將清除WDTT時器
34、以及預(yù)分頻器(當(dāng)預(yù)分頻器分配給WDW)。WD廣般用來防止系統(tǒng)失控或者說防止單片機(jī)程序“失控”。在正常情況下,WD應(yīng)在計時溢出前被CLRWDT令清零,以防止產(chǎn)生RESET如果程序由于某種干擾而失控,那么不能在WD尷出前執(zhí)行一條CLRWDT令,就會使WD隘出而產(chǎn)生RESET使系統(tǒng)重新啟動運行而不至失去控制。若WDTS出產(chǎn)生RESET則狀態(tài)寄存器F3的“TO'位會被清零,用戶可藉此判斷復(fù)位是否由WD尷時所造成。2、WD瑞程注意事項如果使用WDT一定要仔細(xì)在程序中的某些地方放一條“CLRWUT指令,以保證在WDTft溢出前能被清零,否則會造成芯片不停地產(chǎn)生RESET使系統(tǒng)無法正常工作。在噪聲工
35、作環(huán)境下,OPTION?存器可能會因受干擾而改變,所以最好每隔一段時間就將其重新設(shè)置一下。§?振蕩PIC12C5XX1以運行在以下四種振蕩方式下:?a、LP?低功耗低速晶體振蕩?b>XT?標(biāo)準(zhǔn)晶體/陶瓷振蕩?c、INTRC?內(nèi)部4MHzRC!蕩?d、EXTRC?部RC振蕩以上四種振蕩方式可由“系統(tǒng)定義字”中的Fosc1:Fosc2兩位來選擇,請讀者參閱后面§1.12.9的詳述。 1.11.1 1.11.1?晶體/陶瓷振蕩這種振蕩包括XT和LP,其電路連接是在GP5/OSC1/CLKI恃口GP4/OSC的端加一晶體/陶瓷振蕩,如下圖所示:圖?晶體/陶瓷振蕩電路F表是使用
36、各種頻率的晶體和陶瓷振蕩所需的C1、C2電容值振藩類型頻率C1C2振藩類型頻率C1C2XT455KHz68-100P68-100PLP32KHz15P15P2MHz15-33P15-33PXT100KHz15-30P200-300P200KHz15-30P100-200P4MHz10-22P10-22P1MHz15-30P15-30P2MHz15P15P4MHz15P15P?a.陶瓷振蕩?b晶體振表?各種振蕩下的C1和C2值 1.11.2 ?夕卜部RC振蕩這種振蕩類型成本最低,但頻率的精確性較差,適用于時間精確度要求不高的應(yīng)用場合。RCI蕩的頻率是VDDRC直以及環(huán)境溫度的函數(shù)。請參閱附錄的R
37、C頻率函數(shù)圖。RC振蕩的連接如圖所示。?圖?RC振蕩電路RC振蕩是在OSC懦連接一個串聯(lián)的電阻電容。這個電阻如果低于,振蕩不穩(wěn)定,甚至不能振蕩,但是電阻高于1M時,則振蕩又易受干擾。所以電阻值最好取5K100K之間。盡管電容C為0時,電路也能振蕩,但也易受干擾且不穩(wěn)定,所以電容值應(yīng)取20P以上。RC值和頻率關(guān)系如表所示。RCB蕩時OSC湍輸出一OSC1的4分頻脈沖(f=1/4OSC1)。RestCextVDDFosc/25C5kQ0PF5kQ20PF5kQ20PF10kQ130PF480MHz10kQ290PF245MHz100kQ300PF30MHz表?ROW頻率的關(guān)系 1.11.3 ?外部
38、振蕩PIC12C5X池可以接受外部振蕩源(僅適合于XT和LP類型振蕩),連接時將外部振蕩接入GP5/OSC1/CLKI湍,見下圖:?圖?外部振蕩源輸入電路 1.11.4 1.11.4?內(nèi)部RC振蕩PIC12C5XX3部提供有4MHz勺RC振蕩源供用戶選擇使用,選擇振蕩方式和振蕩源的方法見§1.12.9詳介。在PIC12C5XX勺程序區(qū)最頂端(12C5081FFh,12C5093FFh)放了一條MOVLWXX旨令,XX是內(nèi)部RC振蕩的校正系數(shù)。芯片上電后,PC指針指向程序區(qū)最頂端,執(zhí)行完這條指令后PC值加1變?yōu)?00h。這時W寄存器中存放即是內(nèi)部RCg蕩的校正系數(shù),用戶可以把這個系數(shù)置
39、入OSCCA寄存器(05h)以便使其起校正作用,也可以忽略不管它。?例:?0?;定義存儲區(qū)地址?0?MOVWF?OSCCAL?W中的校正系數(shù)置入OSCCAL§?復(fù)位(RESE)TPIC12C5XXT各種各樣原因造成的芯片復(fù)位:?1、芯片上電?2.、MCL端加低電平?4、睡眠中某些I/O口線電平發(fā)生變化當(dāng)芯片處于復(fù)位狀態(tài)時,所有I/O口線都處于輸入狀態(tài)(高阻態(tài)),看門狗WDTf口預(yù)分頻器都被清零。圖?片內(nèi)復(fù)位電路(暫缺)§ 1.12.1 復(fù)位定時器(DRT)復(fù)位定時器DRT(在PIC16C5X中我們稱其為OST是為了使芯片的復(fù)位可靠安全而設(shè)計。在PIC12C5XW,Xt于XT
40、和LP振蕩方式,上電后它們還需要一定的時間來建立穩(wěn)定的振蕩。有鑒于此,PIC12C5XX3部設(shè)計了一個復(fù)位定時器DRTDR他MCL碉到達(dá)高電平(VIHMC后,即啟動計時18mg這樣可以使芯片保持在復(fù)位狀態(tài)約18ms以便讓振蕩電路起振及穩(wěn)定下來,然后芯片即脫離復(fù)位狀態(tài)進(jìn)入正常運行狀態(tài)。DR硒振蕩源是芯片內(nèi)專有的RC振蕩電路,所以外圍電路并不能改變其18ms的計時時間。當(dāng)WDTT時溢出后,DR他是啟動18ms使芯片保持在復(fù)位狀態(tài),然后再重新開始運行程序。注意,在振蕩方式是外部RC或內(nèi)部RC寸,DRT關(guān)閉不起作用。§ 1.12.2 芯片上電復(fù)位(POR)PIC12C5XXS芯片內(nèi)集成有上電
41、復(fù)位電路,見圖所示。當(dāng)芯片電源電壓VDD1升到一定值時(),檢測電路即會發(fā)出復(fù)位脈沖使芯片復(fù)位。§ 1.12.3 MCLR復(fù)位PIC12C5XX勺GP3/MCL端可以由用戶定義為普通輸入口GP3或復(fù)位端MCLR如下圖:圖?GP3/MCL端電路(暫缺)具體方法參見§1.12.9有關(guān)描述。一旦用戶選擇MCL電能,則該端輸入低電平會使芯片進(jìn)入復(fù)位狀態(tài)。§ 1.12.4 外部復(fù)位電路在某種情況下,DRTU時18msW,芯片的振蕩電路還不能穩(wěn)定或供電電壓(VDD還不能達(dá)到標(biāo)準(zhǔn)值,這時如果芯片脫離復(fù)位狀態(tài)進(jìn)入運行,則芯片就有可能失控或運行不正常。為了使芯片脫離復(fù)位狀態(tài)時各部分
42、都處于正常,可以在MCL湍上加外部RC復(fù)位電路來延長復(fù)位時間,如下圖:?外部復(fù)位電路?這個電路可以使VDDt升到標(biāo)準(zhǔn)值一段時間后,MCLRf會上升到高電平,從而啟動DR卅日t18ms后才進(jìn)入運行。這樣可以延長整個復(fù)位過程,保障芯片復(fù)位后進(jìn)入正常運行。§ 1.12.5 掉電復(fù)位鎖定當(dāng)單片機(jī)的供電電壓掉到最小標(biāo)準(zhǔn)值以下后,可能會使芯片的運行出現(xiàn)異常,從而擾亂整個控制系統(tǒng),所以在某些應(yīng)用中,我們希望一旦VDD卓到某個值時使芯片自動進(jìn)入復(fù)位狀態(tài)(所有I/O口都變成高阻態(tài))以免擾亂系統(tǒng),下面是一個PIC12C5X湘電復(fù)位鎖定的電路:圖?掉電復(fù)位鎖定?當(dāng)VDDt壓恢復(fù)上升到標(biāo)準(zhǔn)值以上后,MCL碉
43、恢復(fù)為高,從而使芯片恢復(fù)正常運行。§ 1.12.6 復(fù)位對寄存器的影響對于通用寄存器來說,上電復(fù)位后它們的值是隨機(jī)不定的,其他類型的復(fù)位后則保持原值不變。對于特殊寄存器,各種復(fù)位后它們都會等于一個固定的復(fù)位值,見以下二表:寄存器地址上電復(fù)位值MCLRt位WDTS位引腳變化喚起復(fù)位W一qqqq?xxxx(注1)qqqq?uuuu(注1)INDF00hxxxx?xxxxuuuu?uuuuTMR001hxxxx?xxxxuuuu?uuuuPC02h1111?11111111?1111STATUS03h0001?1xxx?00?uuu(注2)FSR(12C50804h111x?xxxx111
44、u?uuuuFSR(12C50004h110x?xxxx11uu?uuuuOSCCAL05h0111?Uuuu?GPIO06h-xx?xxxx-uu?OPTION一1111?11111111?1111TRIS一-11?1111-11?1111u:未變;??x:隨機(jī)值;??-:未用;?:其值取決于復(fù)位方式注1:由于在復(fù)位向量處存放著MOVLW?解令,其中XX為內(nèi)部RCI蕩校正系數(shù),所以復(fù)位后W<7:4>會等于這個值注2:參見表。a.?各特殊寄存器復(fù)位后的值?復(fù)?位?類?型???狀態(tài)寄存器STATUS程序計數(shù)器PC芯片上電復(fù)位?0000?1xxx1111?1111運行時MCL瑞加低電平
45、復(fù)位?000u?uuuu1111?1111睡眠時MCL瑞加低電平復(fù)位?0001?0uuuu1111?1111?睡眠時看門狗WDT®時復(fù)位運行時看門狗WDT®時復(fù)位??0000?0uuu?0000?1uuu?1111?1111?1111?1111睡眠時I/O腳電平變化喚醒復(fù)位-?1001?0uuuu?1111?1111?u:未變;?x:隨機(jī).b.?復(fù)位對STATUS口PC的影響表?各種復(fù)位對特殊寄存器的影響§ 1.12.7 復(fù)位的鑒別PIC12C5XXT多種原因都可引起芯片復(fù)位。在程序中判斷芯片復(fù)位的原因有時是非常必要的,例如上電復(fù)位后程序一般都要做一些寄存器初始化
46、工作,而別的復(fù)位后則可以不做初始化而直接進(jìn)入控制運行。在狀態(tài)寄存器STATUS三個位(GRWUFTQPD可用來標(biāo)識各種復(fù)位狀態(tài),見下表:?GPWUFTOPD復(fù)位原因000睡眠中WDTg時溢出001運行時WDTg時溢出010睡眠中MCL的低011芯片上電0uu運行時MCL的低110睡眠中GP0GP1或GP3電平變化u:未變a.?復(fù)位后TQPD及GPWU的狀態(tài)事??件GRWUFIPD)注?芯片上電011WDTg時溢出?00u不影響PD位執(zhí)行Sleep指令(進(jìn)入睡眠)u10執(zhí)行CLRWDT令(清看門狗)?u11捶眠中GPQGP1或GP3電平發(fā)生變化110?u:未變b.?影響TQPD及GPWUF狀態(tài)的
47、事件表?復(fù)位對STATUS勺影響?例:要判斷是否芯片上電。?BTFSS?STAT,USTO?;TO=1?GOTO?NO_POWERUP?BTFSS?STAT,UPSD?;PD=1?GOTO?NO_POWERUP?INIT?TO=1PD=1芯片上電,做初始化。§ 1.12.8 睡眠模式(Sleep)1、進(jìn)入SLEEP執(zhí)行一條"SLEEP指令即可進(jìn)入低功耗睡眠模式。當(dāng)進(jìn)入SLEEPS,WDT被清零,然后重新開始計數(shù)。狀態(tài)寄存器STATU阱的PD位被置成“0”,TO位置成“1”,同時振蕩停止(指OSC端的振蕩電路)。所有的I/O口保持原來的狀態(tài)。這種工作模式功耗最低。為使耗電流最
48、小,進(jìn)入SLEEPS,應(yīng)使所有的I/O口處于高電平VDD低電平VSS而不應(yīng)使其處于高阻態(tài),以免產(chǎn)生開關(guān)電流損耗??梢栽贗/O口加上拉或下拉電阻,或者把I/O口都置成輸出態(tài)來避免其處于高阻態(tài)(浮態(tài))。RTC湍亦應(yīng)置為VDDgVSS(通過上拉或下拉)MCLR、須處于高電平狀態(tài)2、喚醒SLEEPSLEEPS被WD隘出喚醒,或在MCL端力口低電平喚醒SLEEPSGP0GP1GP3電平發(fā)生變化。第二種喚醒方法經(jīng)常用在以下應(yīng)用場合:在系統(tǒng)主電源掉電,并由后備電源(電池)供電后,執(zhí)行“SLEEP指令進(jìn)入低功耗模式,這樣電池就可長時間保持系統(tǒng)數(shù)據(jù)。當(dāng)主電源恢復(fù)供電時,讓其在MCL*生一低電平喚醒SLEEP并重
49、新復(fù)位。這樣需在MCL嗡力口一外部復(fù)位電路。第三種方法則在需要使用系統(tǒng)時喚醒睡眠中的單片機(jī),它常通過按鍵輸入來實現(xiàn)。系統(tǒng)上電時,STATUSPDM置為“1”,而執(zhí)行“SLEEP指令后,PD4被置成“0”。所以通過PD位可以判斷系統(tǒng)是從SLEEP莫式喚醒而復(fù)位,還是上電后的復(fù)位。STATU部的TO位則可判斷當(dāng)處于SLEEP犬態(tài)的系統(tǒng)是由WD瞌時喚醒或是由外界給MCL瑞一個低電平喚醒。這些區(qū)別有時是很重要的,特別是對系統(tǒng)的一些初始化工作來說。§ 1.12.9 系統(tǒng)定義字(Configuration)在PIC12C5XX有一個12位長的系統(tǒng)定義字單元,其中只用了前5位(bit0bit4),用來定義單片機(jī)的一些系統(tǒng)性
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 化肥銷售合作合同范本
- 包裝稻草出售合同范本
- 勞務(wù)代理用工合同范本
- 單位汽車借用合同范本
- 代理機(jī)構(gòu)中標(biāo)合同范本
- 義工合同范本
- 個人對公勞務(wù)合同范本
- 與人投資飯店合同范本
- 醫(yī)院供氧安裝合同范例
- 一方婚前貸款買房合同范本
- 護(hù)士臨床護(hù)理組長
- 土建、裝飾、維修改造等零星工程施工組織設(shè)計技術(shù)標(biāo)
- 高速公路養(yǎng)護(hù)作業(yè)安全培訓(xùn)內(nèi)容
- 2024年江蘇經(jīng)貿(mào)職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫
- 《大白菜種植栽培技》課件
- 北京工業(yè)大學(xué)《數(shù)據(jù)挖掘》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024年物聯(lián)網(wǎng)安裝調(diào)試員(中級工)職業(yè)資格鑒定考試題庫(含答案)
- 標(biāo)準(zhǔn)化機(jī)房改造方案
- 珠海市第三人民醫(yī)院中醫(yī)智能臨床輔助診療系統(tǒng)建設(shè)方案
- 早產(chǎn)臨床診斷與治療指南
- 工程簽證單完整版
評論
0/150
提交評論