




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第2章PIC16F87X系列單片機(jī)2.1概述2.2內(nèi)部功能及時(shí)序2.3引腳功能2.4存儲(chǔ)器組織2.5數(shù)據(jù)E2PROM和閃存組織2.6振蕩電路2.7復(fù)位電路與復(fù)位狀態(tài)2.8I/O端口2.9中斷組織2.10看門狗電路2.11低功耗設(shè)置(休眠模式)2.12在線串行編程與調(diào)試功能第2章PIC16F87X系列單片機(jī)2.1概述§2.1概述PIC16F87X系列單片機(jī)是MICROCHIP公司生產(chǎn)的中級(jí)產(chǎn)品,具有FLASH程序存儲(chǔ)器的8位CMOS單片機(jī),品種有28引腳的PIC16F876(A)/873(A)和40/44引腳引腳的PIC16F877(A)/874(A),對(duì)應(yīng)的封裝形式有PDIP、SOIC、SSOP、PLCC和QFP等多種。這個(gè)系列單片機(jī)采用CMOS技術(shù)和靜態(tài)設(shè)計(jì)技術(shù),實(shí)現(xiàn)了低功耗和寬工作電壓范圍,可以滿足不同的應(yīng)用要求?!?.1概述PIC16F87X系列單片機(jī)是MICROPIC16F87X系列單片機(jī)采用高性能的哈佛結(jié)構(gòu)CPU和RISC指令集,CPU通過不同的總線訪問存儲(chǔ)器的數(shù)據(jù)和指令(程序),這樣提高了CPU的工作速度和效率,比傳統(tǒng)的程序與數(shù)據(jù)共用存儲(chǔ)體和總線的馮.偌依曼結(jié)構(gòu)改善了帶寬。這種結(jié)構(gòu)帶來兩個(gè)明顯的優(yōu)點(diǎn):其一是CPU可以同時(shí)訪問程序存儲(chǔ)區(qū)和數(shù)據(jù)存儲(chǔ)區(qū)其二是程序存儲(chǔ)區(qū)和數(shù)據(jù)存儲(chǔ)區(qū)可以采用不同字節(jié)寬度的總線。正是第二點(diǎn)使PIC系列單片機(jī)能夠采用RISC結(jié)構(gòu),提高CPU的訪問速度。PIC16F87X系列的單片機(jī)指令采用14位字寬,使所有的指令操作碼都為單字指令,即可以在單周期內(nèi)通過14位程序存儲(chǔ)器訪問總線取出l4位指令。另外還有兩級(jí)流水線結(jié)構(gòu)可以重疊取指和指令執(zhí)行,加快了指令執(zhí)行速度。程序的運(yùn)行除程序分支(跳轉(zhuǎn))需要兩周期的指令外,其它指令均為單周期指令,指令集一共包含有35條單字節(jié)指令。哈佛結(jié)構(gòu)CPU和RISC指令集PIC16F87X系列單片機(jī)采用高性能的哈佛結(jié)構(gòu)CPU和RPIC16F873(A)/874(A)包含4K×14的程序閃存,192字節(jié)的數(shù)據(jù)隨機(jī)存儲(chǔ)器和128字節(jié)數(shù)據(jù)EEPROM存儲(chǔ)器。PIC16F876(A)/877(A)的程序閃存為8K×14,數(shù)據(jù)隨機(jī)存儲(chǔ)器為368字節(jié),數(shù)據(jù)EEPROM存儲(chǔ)器為256字節(jié)。PIC16F873(A)/876(A)具有A、B和C三個(gè)I/O端口,內(nèi)部包含13個(gè)中斷源、三個(gè)定時(shí)器、兩個(gè)CCP(捕捉器/比較器/PWM)模塊和一個(gè)看門狗電路,同時(shí)集成了5通道A/D轉(zhuǎn)換器。PIC16F874(A)/877(A)具有A、B、C、D和E五個(gè)I/O端口,內(nèi)部包含14個(gè)中斷源、三個(gè)定時(shí)器、兩個(gè)CCP(捕捉器/比較器/PWM)模塊、一個(gè)看門狗電路和一個(gè)并行從屬端口PSP,同時(shí)集成了8通道A/D轉(zhuǎn)換器。PIC16F87X系列既有SPI和I2C主串行通信端口,又有USART異步串行通信端口。PIC16F87X系列單片機(jī)
內(nèi)涵PIC16F873(A)/874(A)包含4K×14的程序閃表2.1PIC16F87X系列單片機(jī)功能配置表2.1PIC16F87X系列單片機(jī)功能配置§2.2內(nèi)部功能及時(shí)序PIC16F87X系列單片機(jī)是一種高速度、低功耗、高性能的CMOS器件,含有ROM、RAM、EEPROM、FLASHRAM、I/O端口、A/D轉(zhuǎn)換器、捕捉器/比較器/PWM、串行通信端口、定時(shí)器、中斷控制器和一個(gè)中央處理器。這種結(jié)構(gòu)是基于文件寄存器概念,有獨(dú)立的數(shù)據(jù)/數(shù)據(jù)存儲(chǔ)器總線和程序存儲(chǔ)器總線。數(shù)據(jù)總線和數(shù)據(jù)存儲(chǔ)器總線是8位的字寬,程序總線和程序存儲(chǔ)器(FLASHPROGRAMMEMORY)是14位字寬。由于數(shù)據(jù)存儲(chǔ)器集成在片內(nèi),通過片內(nèi)的8位總線與算術(shù)邏輯單元(ALU)連接,可以直接通過內(nèi)部總線傳送信息,所以它們都是以寄存器方式工作和尋址,程序編碼簡潔高效?!?.2內(nèi)部功能及時(shí)序PIC16F87X系列單片機(jī)是一種高2.2.1內(nèi)部組成PIC16F87X系列單片機(jī)的內(nèi)部結(jié)構(gòu)框圖如圖所示。整個(gè)單片機(jī)集成了算術(shù)邏輯單元ALU,F(xiàn)LASH程序存儲(chǔ)器,14位指令寄存器,13指針寄存器和8級(jí)13位的堆棧,文件寄存器RAM和特殊功能寄存器,狀態(tài)寄存器,定時(shí)器,多通道10位A/D轉(zhuǎn)換器,數(shù)據(jù)EEPROM,同步串行通信端口,通用異步串行通信端口,捕捉器/比較器/PWM,多功能輸入/輸出(I/O)端口,上電定時(shí)器,振蕩器起振定時(shí)器,看門狗定時(shí)器,上電和掉電復(fù)位電路,時(shí)序產(chǎn)生電路,從屬并行端口,低電壓編程電路等。2.2.1內(nèi)部組成PIC16F87X系列單片機(jī)的內(nèi)部結(jié)構(gòu)PIC16F87X芯片內(nèi)核心是一個(gè)ALU和工作寄存器W。ALU控制工作寄存器W的內(nèi)容(數(shù)據(jù))和任何一個(gè)文件寄存器中的內(nèi)容(數(shù)據(jù))進(jìn)行算術(shù)運(yùn)算和邏輯(布爾)運(yùn)算,ALU的字為8位,可以用其進(jìn)行加、減、移位和邏輯操作。除非特別指出,一般的操作都是以2的補(bǔ)碼進(jìn)行。在有兩個(gè)操作數(shù)的指令中,典型情況是其中一個(gè)操作數(shù)放在W寄存器中,另一個(gè)操作數(shù)放在文件寄存器或是一個(gè)立即數(shù)。根據(jù)所執(zhí)行的指令,ALU會(huì)影響狀態(tài)寄存器STATUS中十進(jìn)制數(shù)字進(jìn)位標(biāo)志(即半進(jìn)位標(biāo)志)、二進(jìn)制借位標(biāo)志C和全零標(biāo)志Z。當(dāng)ALU運(yùn)行后的結(jié)果為0時(shí),標(biāo)志位Z置1,否則為0;當(dāng)進(jìn)行加法運(yùn)算,發(fā)生最高為進(jìn)位,標(biāo)志位C置1,否則為0;當(dāng)進(jìn)行減法運(yùn)算,最高位發(fā)生借位,標(biāo)志位C清零,否則為1;當(dāng)進(jìn)行加法運(yùn)算D3向D4進(jìn)位時(shí),標(biāo)志位DC置1,否則為0;當(dāng)進(jìn)行減法運(yùn)算D3向D4借位,標(biāo)志位DC清零,否則置1。工作寄存器W是操作過程中的一個(gè)過渡寄存器,它可以存放操作數(shù),也可以存放操作結(jié)果,相當(dāng)于MCS51系列中的A寄存器,不可尋址。使用起來相當(dāng)靈活。ALU和工作寄存器WPIC16F87X芯片內(nèi)核心是一個(gè)ALU和工作寄存器W。AL圖2.1PIC16F873(A)/876(A)單片機(jī)的內(nèi)部結(jié)構(gòu)框圖圖2.1PIC16F873(A)/876(A)單片機(jī)的內(nèi)圖2.2PIC16F874(A)/877(A)單片機(jī)的內(nèi)部結(jié)構(gòu)框圖圖2.2PIC16F874(A)/877(A)單片機(jī)的內(nèi)2.2.2指令周期和時(shí)序圖時(shí)鐘信號(hào)從OSCI/CLKIN引腳上輸入后,在片內(nèi)產(chǎn)生4個(gè)非重疊四個(gè)信號(hào),分別被稱作Q1、Q2、Q3和Q4,如圖2.3所示。每個(gè)指令周期(TCY)包含這4個(gè)Q周期,Q周期與芯片的振蕩周期(TOSC)一致。每個(gè)Q周期提供每條指令的指令譯碼、讀、處理數(shù)據(jù)以及寫等操作的定時(shí)。每個(gè)指令周期完成四部分工作:在Q1周期指令譯碼或不操作,在Q2周期指令讀數(shù)據(jù)或不操作,在Q3周期處理數(shù)據(jù),在Q4周期寫數(shù)據(jù)或不操作。2.2.2指令周期和時(shí)序圖時(shí)鐘信號(hào)從OSCI/CLKIN引圖2.3芯片時(shí)序圖2.3芯片時(shí)序哈佛結(jié)構(gòu),使得程序存儲(chǔ)器(存放指令)的訪問和數(shù)據(jù)存儲(chǔ)器(存放運(yùn)算數(shù)據(jù))的訪問并行處理。在單片機(jī)的指令運(yùn)行中,一般需要如下的過程:從程序存儲(chǔ)器取出指令,根據(jù)指令進(jìn)行譯碼,然后執(zhí)行。在復(fù)雜指令集中,首先取指令需要1~2個(gè)周期,譯碼和執(zhí)行指令又需要1~2個(gè)周期。在PIC單片機(jī)中采用RISC指令集,使用指令流水線結(jié)構(gòu),在一個(gè)周期內(nèi)完成兩部分工作:一是執(zhí)行指令,二是從程序存儲(chǔ)器取出下一條指令。這樣總的看起來每條指令只需要一個(gè)周期(個(gè)別除外)。如圖2.4所示,在一個(gè)周期中,完成本條指令的執(zhí)行,同時(shí)取出了下一條指令。2.2.3指令流哈佛結(jié)構(gòu),使得程序存儲(chǔ)器(存放指令)的訪問和數(shù)據(jù)存儲(chǔ)器(存放圖2.4指令流圖2.4指令流§2.3引腳功能在PIC系列單片機(jī)種,除電源和地線引腳之外,其它的引腳基本都可能采用編程選擇多功能復(fù)用。封裝形式PIC16F87X系列單片機(jī)采用DIP、PLCC和QFP三種封裝形式。PIC16F877/874采用40引腳的PDIP、44引腳的PLCC和44引腳的QFP,PIC16F876/873采用28引腳的PDIP或SOIC。如圖2.5所示。根據(jù)引腳的功能,可以將引腳分為下列幾類?!?.3引腳功能在PIC系列單片機(jī)種,除電源和地線引腳之圖2.5PIC16F87X單片機(jī)封裝與引腳圖圖2.5PIC16F87X單片機(jī)封裝與引腳圖圖2.5PIC16F87X單片機(jī)封裝與引腳圖(續(xù)1)圖2.5PIC16F87X單片機(jī)封裝與引腳圖(續(xù)1)PIC單片機(jī)的供電可以在+2.7V~+5V的范圍,為了減少電源噪聲的影響,將電源引腳和地線引腳放置芯片的中間。2.3.1電源VDD引腳和地VSS引腳2.3.1電源VDD引腳和地VSS引腳在PIC單片機(jī)中有一根振蕩器輸入引腳OSC1/CLKIN和一根振蕩器輸出引腳OSC2/CLKOUT,由于PIC單片機(jī)可以采用不同的振蕩器,這樣使得這兩根引腳可以有不同的功能。采用晶體振蕩器或陶瓷諧振器,將晶體振蕩器的兩腳直接接入OSC1/CLKIN和OSC2/CLKOUT;采用外部振蕩器電路時(shí),將OSC1/CLKIN作為輸入,OSC2/CLKOUT開路;采用RC振蕩器時(shí),OSC1/CLKIN作為輸入,OSC2/CLKOUT作為4分頻信號(hào)輸出(參見圖2.26)。2.3.2振蕩器輸入輸出引腳在PIC單片機(jī)中有一根振蕩器輸入引腳OSC1/CLKIN和一主復(fù)位信號(hào)引腳用于外部電路產(chǎn)生復(fù)位信號(hào)使PIC單片機(jī)復(fù)位,低電平有效。在對(duì)CPU編程時(shí),此引腳作為編程電壓的輸入端VPP。2.3.3主復(fù)位信號(hào)引腳主復(fù)位信號(hào)引腳用于外部電路產(chǎn)生復(fù)位信號(hào)使PIC單片機(jī)復(fù)位,低在PIC單片機(jī)中,包含多個(gè)端口,且端口引腳大部分都具有兩種或三種功能復(fù)用。作為端口,端口A、端口B、端口C、端口D和端口E都是雙向I/O口,端口B可以通過編程設(shè)置為弱上拉輸入。作為第二或第三功能口,每個(gè)引腳的功能都可能不同,主要包含有如下的功能:用于A/D轉(zhuǎn)換的模擬電壓輸入端和參考電壓輸入端,用于定時(shí)器的時(shí)鐘輸入端和振蕩器輸出端,用于串行通信的數(shù)據(jù)輸入/輸出端和時(shí)鐘端,并行從屬端口和讀/寫/片選端等。2.3.4端口/功能引腳在PIC單片機(jī)中,包含多個(gè)端口,且端口引腳大部分都具有兩種或表2.2PICF873(A)/876(A)引腳功能表2.2PICF873(A)/876(A)引腳功能表2.3PICF874(A)/877(A)引腳功能表2.3PICF874(A)/877(A)引腳功能表2.3PICF874(A)/877(A)引腳功能(續(xù))表2.3PICF874(A)/877(A)引腳功能(續(xù))§2.4存儲(chǔ)器組織在PIC16F87X系列單片機(jī)中,有三個(gè)存儲(chǔ)器模塊。由于單片機(jī)內(nèi)采用了哈佛總線結(jié)構(gòu),它的程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器的總線是獨(dú)立分開的,CPU可以同時(shí)訪問程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器?!?.4存儲(chǔ)器組織在PIC16F87X系列單片機(jī)中,有三個(gè)PIC16F87X系列單片機(jī)具有13位指針計(jì)數(shù)器(PC),可以訪問8k×14字的程序存儲(chǔ)器空間。程序存儲(chǔ)器被分為幾個(gè)區(qū):第一是復(fù)位矢量區(qū),占據(jù)0000H字節(jié);第二是中斷矢量區(qū),占據(jù)0004H字節(jié);第三是程序存放區(qū),從0005H字節(jié)開始。在程序存放區(qū)中又分為頁,每頁7FFH字節(jié)。
2.4.1程序存儲(chǔ)器PIC16F87X系列單片機(jī)具有13位指針計(jì)數(shù)器(PC),可PIC16F87X系列單片機(jī)的存儲(chǔ)器映射和堆棧的分布狀況圖2.6PIC16F873/873A/874/874A圖2.7PIC16F877/877A/876/876A圖2.6和圖2.7PIC16F87X系列單片機(jī)的存儲(chǔ)器映射和堆棧的分布狀況圖數(shù)據(jù)存儲(chǔ)器分為四個(gè)存儲(chǔ)體,存儲(chǔ)體中包含通用寄存器和專用寄存器(SFR),體的選擇采用狀態(tài)寄存器(STATUS)的位6(RP1)和位5(RP0)。每個(gè)存儲(chǔ)體最多可包含128字節(jié),而每個(gè)存儲(chǔ)體中專用寄存器放在低位存儲(chǔ)區(qū),專用寄存器上面是通用寄存器,通用寄存器采用靜態(tài)隨機(jī)訪問存儲(chǔ)器(SRAM)。2.4.2數(shù)據(jù)存儲(chǔ)器數(shù)據(jù)存儲(chǔ)器分為四個(gè)存儲(chǔ)體,存儲(chǔ)體中包含通用寄存器和專用寄存器所有的執(zhí)行存儲(chǔ)體都包含有專用寄存器(SFR),為了達(dá)到減少編碼和快速訪問的目的,一些經(jīng)常訪問的專用寄存器可以從一個(gè)存儲(chǔ)體映射到另一個(gè)存儲(chǔ)體。PIC16F873/873A/874/874A數(shù)據(jù)存儲(chǔ)器的映射圖如圖2.8所示,PIC16F877/877A/876/876A數(shù)據(jù)存儲(chǔ)器的映射圖如圖2.9所示。對(duì)于間接地址,它表示一個(gè)具體物理寄存器;對(duì)于陰影部分,實(shí)際上不可操作,讀操作結(jié)果是0。所有的執(zhí)行存儲(chǔ)體都包含有專用寄存器(SFR),為了達(dá)到減少編圖2.8PIC16F873/873A/874/874A數(shù)據(jù)存儲(chǔ)器組映射圖
圖2.8PIC16F873/873A/874/874A圖2.9狀態(tài)寄存器STATUS圖2.9狀態(tài)寄存器STATUS通用寄存器是在指令執(zhí)行過程中存放數(shù)據(jù)或狀態(tài)信息的存儲(chǔ)區(qū),上電復(fù)位后其內(nèi)容隨機(jī)不確定,CPU可以直接訪問,也可以通過組選擇寄存器(FSR)間接訪問。對(duì)PIC16F87X系列不同型號(hào)的單片機(jī),通用寄存器的范圍是不一樣的。具體如下:PIC16F873/873A/874/874A:20H~7FH(存儲(chǔ)體0);
A0H~FFH(存儲(chǔ)體1);
120H~17FH(存儲(chǔ)體2:映射到存儲(chǔ)體0的20H~7FH);
1A0H~1FFH(存儲(chǔ)體3:映射到存儲(chǔ)體1的A0H~FFH).1通用寄存器組通用寄存器是在指令執(zhí)行過程中存放數(shù)據(jù)或狀態(tài)信息的存儲(chǔ)區(qū),上電PIC16F877/877A/876/876A:20H~7FH(存儲(chǔ)體0);
A0H~EFH(存儲(chǔ)體1);
F0H~FFH(存儲(chǔ)體1:映射到存儲(chǔ)體0的70H~7FH);
110H~16FH(存儲(chǔ)體2);
170H~17FH(存儲(chǔ)體2:映射到存儲(chǔ)體0的70H~7FH);
190H~19FH(存儲(chǔ)體3);
1A0H~1FFH(存儲(chǔ)體3:映射到存儲(chǔ)體0的70H~7FH)。圖2.8和圖2.9是數(shù)據(jù)存儲(chǔ)器的映射圖。1通用寄存器組(續(xù))PIC16F877/877A/876/876A:1通用寄存圖2.8PIC16F873/873A/874/874A數(shù)據(jù)存儲(chǔ)器組映射圖圖2.8PIC16F873/873A/874/874A圖2.9PIC16F877/877A/876/876A數(shù)據(jù)存儲(chǔ)器組映射圖圖2.9PIC16F877/877A/876/876A數(shù)供CPU使用的寄存器,或?yàn)榭刂仆庠O(shè)模塊需要使用的寄存器統(tǒng)稱為專用寄存器。因此專用自然分為兩類:一類用于CPU操作,另一類用于控制外設(shè)模塊。第一類寄存器包含:狀態(tài)寄存器(STATUS)、選擇寄存器(OPTION_REG)、中斷控制寄存器(INTCON)、外圍接口中斷允許寄存器1(PIE1)和2(PIE2)、外圍接口中斷標(biāo)志寄存器1(PIR1)和2(PIR2)、電源控制寄存器(PCON)、程序指針計(jì)數(shù)器(PC和PCLATH)、間接尋址寄存器(INDF和FSR)等。第二類寄存器包含:定時(shí)/計(jì)數(shù)器寄存器、端口方向寄存器、端口寄存器、USART接收/發(fā)送寄存器等,如表2.5、表2.6、表2.7和表2.8所示。2專用寄存器供CPU使用的寄存器,或?yàn)榭刂仆庠O(shè)模塊需要使用的寄存器統(tǒng)稱為表2.5專用寄存器——存儲(chǔ)體0表2.5專用寄存器——存儲(chǔ)體0表2.5專用寄存器——存儲(chǔ)體0(續(xù))表2.5專用寄存器——存儲(chǔ)體0(續(xù))表2.6專用寄存器——存儲(chǔ)體1表2.6專用寄存器——存儲(chǔ)體1表2.6專用寄存器——存儲(chǔ)體1(續(xù))表2.6專用寄存器——存儲(chǔ)體1(續(xù))表2.7專用寄存器——存儲(chǔ)體2表2.7專用寄存器——存儲(chǔ)體2表2.8專用寄存器——存儲(chǔ)體3表2.8專用寄存器——存儲(chǔ)體3狀態(tài)寄存器用于記憶ALU的算術(shù)運(yùn)算狀態(tài)和復(fù)位狀態(tài),同時(shí)有兩位用于存儲(chǔ)器區(qū)域的選擇,如圖2.10所示。和其它寄存器一樣,狀態(tài)寄存器STATUS可以作為任何指令的目標(biāo)寄存器。但當(dāng)指令操作的結(jié)果影響標(biāo)志位Z、DC、C時(shí),寫入這三個(gè)標(biāo)志位的操作無效,這三個(gè)標(biāo)志位的置位和復(fù)位與器件的邏輯有關(guān)。另外,和標(biāo)志位只讀。這樣,執(zhí)行一條指令后,狀態(tài)寄存器的內(nèi)容可能與意想的不同。為了改變狀態(tài)寄存器的內(nèi)容,最好采用如下的幾指令:BCF、BSF、SWAF和MOVWF,因?yàn)檫@些指令不影響狀態(tài)寄存器中的Z、C和DC位。(1)狀態(tài)寄存器(STATUS)
狀態(tài)寄存器用于記憶ALU的算術(shù)運(yùn)算狀態(tài)和復(fù)位狀態(tài),同時(shí)有兩位圖2.10狀態(tài)寄存器(STATUS)圖2.10狀態(tài)寄存器(STATUS)選擇寄存器(OPTION_REG)是一個(gè)可讀/寫的8位寄存器,它的功能是用于配置TMR8/WDT預(yù)定標(biāo)器、外部INT中斷、TMR8和端口B的弱上拉等。它的各位意義如圖2.11所示。表2.9是預(yù)分頻計(jì)數(shù)器倍率設(shè)置表。(2)選擇寄存器(OPTION_REG)選擇寄存器(OPTION_REG)是一個(gè)可讀/寫的8位寄存器圖2.11選擇寄存器(OPTION_REG)圖2.11選擇寄存器(OPTION_REG)中斷控制寄存器是一個(gè)可讀寫的8位寄存器。它的各位意義如圖2.12所示。(3)中斷控制寄存器(INTCON)中斷控制寄存器是一個(gè)可讀寫的8位寄存器。它的各位意義如圖2.外圍接口中斷允許寄存器1(PIE1)的內(nèi)容是各個(gè)外部接口中斷的允許位。它是一個(gè)可讀/寫操作的8位寄存器,它的各位意義如圖2.13所示。(4)外圍接口中斷允許寄存器1(PIE1)外圍接口中斷允許寄存器1(PIE1)的內(nèi)容是各個(gè)外部接口中斷外圍接口中斷標(biāo)志寄存器1(PIE1)的內(nèi)容是各個(gè)外部接口有中斷時(shí)的標(biāo)志位。它的各位意義如圖2.14所示。(5)外圍接口中斷標(biāo)志寄存器1(PIR1)外圍接口中斷標(biāo)志寄存器1(PIE1)的內(nèi)容是各個(gè)外部接口有中圖2.14外圍接口中斷標(biāo)志寄存器1(PIE1)圖2.14外圍接口中斷標(biāo)志寄存器1(PIE1)外圍接口中斷允許寄存器2(PIE2)的內(nèi)容包括CCP2外部接口中斷允許位、SSP總線碰撞中斷允許位、EEPROM寫操作中斷允許位。各位的具體內(nèi)容如圖2.15所示。(6)外圍接口中斷允許寄存器2(PIE2)外圍接口中斷允許寄存器2(PIE2)的內(nèi)容包括CCP2外部接外圍接口中斷標(biāo)志寄存器2(PIE2)的內(nèi)容為CCP2外部接口中斷、SSP總線碰撞中斷允許位和EEPROM寫操作中斷的標(biāo)志位。各位的具體內(nèi)容如圖2.16所示。(7)外圍接口中斷標(biāo)志寄存器2(PIR2)外圍接口中斷標(biāo)志寄存器2(PIE2)的內(nèi)容為CCP2外部接口電源控制寄存器(PCON)是一個(gè)8位寄存器,但只有兩位有效,其余未用。包含的內(nèi)容是用于區(qū)別WDT復(fù)位、外部MCLR復(fù)位、掉電復(fù)位的上電復(fù)位標(biāo)志。其內(nèi)容如圖2.17所示。D7:D2—未用。(D1)—上電復(fù)位狀態(tài)位當(dāng)D1=1,表示上電復(fù)位沒有發(fā)生;當(dāng)D1=0,表示發(fā)生了上電復(fù)位。當(dāng)發(fā)生了上電復(fù)位后,必須用軟件使D1置位。(D0)—掉電復(fù)位狀態(tài)位當(dāng)D0=1,表示沒有發(fā)生掉電復(fù)位現(xiàn)象;當(dāng)D0=0,表示發(fā)生了掉電復(fù)位。當(dāng)發(fā)生了掉電復(fù)位后,必須用軟件使D0置位。(8)電源控制寄存器(PCON)電源控制寄存器(PCON)是一個(gè)8位寄存器,但只有兩位有效,程序指針寄存器是一個(gè)13位寄存器,分為高5為寄存器PCH和低8位寄存器PCL。PCL寄存器是一個(gè)可讀/寫的寄存器,PCH是不可讀寄存器,但可以通過鎖存寄存器PCLATH寫入,只要復(fù)位條件發(fā)生,PCH被清零。程序指針寄存器PC的裝載有兩種方式:一是把它當(dāng)作目標(biāo)寄存器;二是在執(zhí)行跳轉(zhuǎn)命令CALL或GOTO時(shí)裝入。這兩種方式的說明如圖2.18所示。(9)程序指針計(jì)數(shù)器(PC、PCLATH)程序指針寄存器是一個(gè)13位寄存器,分為高5為寄存器PCH和低在計(jì)算GOTO指令時(shí),是通過將偏移量加入到程序指針計(jì)數(shù)器中(ADDWFPCL)。當(dāng)執(zhí)行讀表指令時(shí),必須注意表長是否超過PCL的存儲(chǔ)邊界(256字節(jié))。②堆棧
PIC16F87X系列單片機(jī)有8級(jí)寬度為13位的硬件堆棧。堆棧既不放在程序存儲(chǔ)器空間,也不放在數(shù)據(jù)存儲(chǔ)器空間,而是獨(dú)立的硬件空間。堆棧的指針不可讀,也不可寫。一旦執(zhí)行CALL調(diào)用,或響應(yīng)中斷,PC斷點(diǎn)地址就會(huì)被自動(dòng)壓入堆棧(PUSH:入棧)。一旦執(zhí)行RETURN、RETLW和RETFIE等命令,堆棧的內(nèi)容就被彈出(POP:出棧)到PC寄存器中。在入棧和出棧的過程中,PCLATH寄存器不受影響。堆棧的操作采用循環(huán)緩沖方式,一旦堆棧滿(已經(jīng)入棧8次),第九次入棧的“數(shù)據(jù)”就被放置到第一次的堆棧上,第十次入棧的“數(shù)據(jù)”就被放置到第二次的堆棧上,依次類推。在操作過程中,無法獲取堆棧的信息,因?yàn)闆]有指示堆棧滿還是未滿的標(biāo)志。堆棧的入棧和出棧操作沒有指令執(zhí)行,只有在執(zhí)行CALL、RETURN、RETLW和RETFIE指令,或獲取中斷向量地址時(shí),自動(dòng)完成入?;虺鰲!"貵OTO跳轉(zhuǎn)在計(jì)算GOTO指令時(shí),是通過將偏移量加入到程序指針計(jì)數(shù)器中(PIC16F87X系列單片機(jī)有8級(jí)寬度為13位的硬件堆棧。堆棧既不放在程序存儲(chǔ)器空間,也不放在數(shù)據(jù)存儲(chǔ)器空間,而是獨(dú)立的硬件空間。堆棧的指針不可讀,也不可寫。一旦執(zhí)行CALL調(diào)用,或響應(yīng)中斷,PC斷點(diǎn)地址就會(huì)被自動(dòng)壓入堆棧(PUSH:入棧)。一旦執(zhí)行RETURN、RETLW和RETFIE等命令,堆棧的內(nèi)容就被彈出(POP:出棧)到PC寄存器中。在入棧和出棧的過程中,PCLATH寄存器不受影響。堆棧的操作采用循環(huán)緩沖方式,一旦堆棧滿(已經(jīng)入棧8次),第九次入棧的“數(shù)據(jù)”就被放置到第一次的堆棧上,第十次入棧的“數(shù)據(jù)”就被放置到第二次的堆棧上,依次類推。在操作過程中,無法獲取堆棧的信息,因?yàn)闆]有指示堆棧滿還是未滿的標(biāo)志。堆棧的入棧和出棧操作沒有指令執(zhí)行,只有在執(zhí)行CALL、RETURN、RETLW和RETFIE指令,或獲取中斷向量地址時(shí),自動(dòng)完成入?;虺鰲!"诙褩IC16F87X系列單片機(jī)有8級(jí)寬度為13位的硬件堆棧。堆所有的PIC16F87X都可以尋址8K字程序存儲(chǔ)空間。指令CALL和GOTO提供11位地址,允許跳轉(zhuǎn)的范圍只有2K,因此將8K程序空間分成4頁,每頁為2K。用寄存器PCLATH的D4和D3兩位來選擇頁面。當(dāng)執(zhí)行CALL和GOTO指令前,用戶必須首先確定頁面選擇位,使之指向所需要轉(zhuǎn)移的頁面。如果執(zhí)行RETURN指令,整個(gè)13位的PC值從彈出堆棧,寄存器PCLATH的D4和D3兩位不需要進(jìn)行設(shè)置。在執(zhí)行RETURN和RETFIE指令后,PCLATH的內(nèi)容不受影響,因此在字程序調(diào)用或GOTO時(shí),用戶必須重寫PCLATH。例2.1給出了在頁面1調(diào)用字程序的編程,程序中確保PCLATH寄存器的保存和恢復(fù)。例2.1頁面1從頁面0調(diào)用字程序
ORG0x500BCFPCLATH,4BSFPCLATH,3;選擇頁面1(800h-FFFh)CALLSUB1_P1;調(diào)用頁面1(800h-FFFh)的子程序
……ORG0x900;頁面1(800h-FFFh)SUB1_P1
……;被調(diào)用的子程序(800h-FFFh)RETURN;返回在頁面0(000h-7FFh)中的調(diào)用程序③程序存儲(chǔ)器的分頁所有的PIC16F87X都可以尋址8K字程序存儲(chǔ)空間。指令C實(shí)際上單片機(jī)芯片硬件沒有設(shè)置一個(gè)專門的間接寄存器,只是在進(jìn)行間接尋址時(shí),需要用到間接寄存器的概念。當(dāng)對(duì)間接寄存器尋址時(shí),實(shí)際是訪問FSR寄存器內(nèi)容所指的單元,即把寄存器FSR當(dāng)作間接寄存器使用。讀間接寄存器本身,結(jié)果會(huì)是00H;寫間接寄存器本身,結(jié)果是空操作(狀態(tài)位可能變化)。圖2.19給出了用8位FSR寄存器和狀態(tài)寄存器第八位IRP組合9位地址的過程。從圖中可以看出,采用間接尋址時(shí),存儲(chǔ)體的選擇由狀態(tài)寄存器的IRP和FSR的D7位決定;采用直接尋址時(shí),存儲(chǔ)體的選擇由狀態(tài)寄存器的RP1:RP0決定。(10)間接尋址寄存器(INDF、FSR)實(shí)際上單片機(jī)芯片硬件沒有設(shè)置一個(gè)專門的間接寄存器,只是在進(jìn)行例2.2是采用間接尋址方式將RAM區(qū)20H-2FH清零的編程。例2.2間接尋址舉例
MOVLW0X20;初試化指針
MOVFFSR;指向RAMNEXTCLRFINDF;清INDF寄存器
INCFFSR,F;指針加1BTFSSFSR,4;完成?
GOTONEXT;不,循環(huán)CONTINUE:…;是,繼續(xù)圖2.19直接/間接尋址例2.2是采用間接尋址方式將RAM區(qū)20H-2FH清零的編配置寄存器又稱為配置字,是一個(gè)14位寬的“不可訪問”寄存器。此寄存器的地址為2007h,已超出用戶訪問的存儲(chǔ)器空間。CONFIG的讀/寫只能通過編程實(shí)現(xiàn)。
CONFIG寄存器的功能是選擇芯片的特殊配置,上電復(fù)位和其它復(fù)位后CPU會(huì)檢測此寄存器,按照CONFIG內(nèi)容配置外部設(shè)備。它的具體內(nèi)容如圖2.20所示。(11)配置寄存器(CONFIG)配置寄存器又稱為配置字,是一個(gè)14位寬的“不可訪問”寄存器。圖2.20(續(xù))圖2.20(續(xù))§2.5數(shù)據(jù)E2PROM和閃存組織
數(shù)據(jù)E2PROM和FLASH程序存儲(chǔ)器在正常的操作中都可以讀寫,對(duì)E2PROM的操作是單字節(jié),對(duì)程序存儲(chǔ)器的操作是字。對(duì)定義的字節(jié)或字進(jìn)行“寫”操作,實(shí)際的過程是“先擦除——然后寫”的操作。讀/寫兩種存儲(chǔ)器的操作都是通過一系列特殊寄存器(FSR)間接尋址的。這些寄存器包含:EEDATA、EEDATH、EEADR、EEADRH、EECON1和EECON2。§2.5數(shù)據(jù)E2PROM和閃存組織數(shù)據(jù)E2PROM和F2.5.1寄存器EECON1和EECON2EECON1寄存器是配置和初始化訪問的控制寄存器。EECON2寄存器不是一個(gè)物理寄存器,它專用于防止在存儲(chǔ)器寫序列中的非法寫操作。圖2.21是EECON1的內(nèi)容。2.5.1寄存器EECON1和EECON2EECON1寄存圖2.21EECON1寄存器圖2.21EECON1寄存器E2PROM數(shù)據(jù)存儲(chǔ)器和FLASH程序存儲(chǔ)器的讀/寫操作控制EEPDG控制訪問E2PROM數(shù)據(jù)存儲(chǔ)器還是訪問FLASH程序存儲(chǔ)器:置位時(shí),訪問E2PROM數(shù)據(jù)存儲(chǔ)器;復(fù)位時(shí),訪問程序存儲(chǔ)器。讀操作標(biāo)志位RD:置1,表示希望讀取存儲(chǔ)單元的值已經(jīng)輸入到數(shù)據(jù)寄存器中。這標(biāo)志置位后用軟件無法復(fù)位,由硬件自動(dòng)在讀操作結(jié)束時(shí)置0。讀E2PROM數(shù)據(jù)存儲(chǔ)器,在RD置位后的下一個(gè)指令周期數(shù)據(jù)放入EEDATA。對(duì)于讀程序存儲(chǔ)器,在RD置位后的下一個(gè)指令周期數(shù)據(jù)放入EEDATH:EEDATA。E2PROM數(shù)據(jù)存儲(chǔ)器和FLASH程序存儲(chǔ)器的讀/寫操作控制E2PROM數(shù)據(jù)存儲(chǔ)器和FLASH程序存儲(chǔ)器的讀/寫操作控制(續(xù)1)寫操作控制位(WR和WREN)和兩個(gè)狀態(tài)標(biāo)志位(WRERR和EEIF):控制位WREN用于設(shè)置允許或禁止寫操作,當(dāng)WREN=0時(shí),禁止寫操作。在執(zhí)行寫操作前,必須使WREN=1。控制位WR用于初始化寫操作,在寫操作的結(jié)束時(shí)硬件自動(dòng)清零。中斷標(biāo)志EEIF用于顯示存儲(chǔ)器的寫什么時(shí)刻完成,置位后必須在置位WR之前用軟件清零。對(duì)E2PROM數(shù)據(jù)存儲(chǔ)器,一旦WREN和WR置位,在EEADR寄存器中的地址將被擦除,緊跟著EEDATA中寫入存儲(chǔ)器。這些操作不影響CPU的其它指令執(zhí)行,與CPU并行工作。一旦寫操作完成,標(biāo)志位EEIF置位。對(duì)程序存儲(chǔ)器,一旦WREN和WR置位,CPU停止其它指令的操作,等待寫操作完成再繼續(xù)執(zhí)行。WREN和WR置位后,由EEADRH:EEADR指定的存儲(chǔ)單元內(nèi)容被擦除,由EEDATH:EEDATA中的數(shù)據(jù)寫入。完成寫操作后,標(biāo)志位EEIF被置位。E2PROM數(shù)據(jù)存儲(chǔ)器和FLASH程序存儲(chǔ)器的讀/寫操作控制E2PROM數(shù)據(jù)存儲(chǔ)器和FLASH程序存儲(chǔ)器的讀/寫操作控制(續(xù)2)標(biāo)志位WRERR用于表示在寫操作過程芯片被復(fù)位,只有在上電復(fù)位時(shí)WRERR被清零。在正常操作過程中寫操作如果被
復(fù)位或看門狗定時(shí)溢出復(fù)位,WREER被置位,這樣用戶可以檢測WREER來判斷復(fù)位的類型以及存儲(chǔ)單元的是否需要重寫。數(shù)據(jù)寄存器的內(nèi)容、地址寄存器的內(nèi)容和EEPGD標(biāo)志位不受
和看門狗定時(shí)溢出復(fù)位的影響。E2PROM數(shù)據(jù)存儲(chǔ)器和FLASH程序存儲(chǔ)器的讀/寫操作控制2.5.2E2PROM數(shù)據(jù)存儲(chǔ)器的讀和寫操作1.讀操作讀E2PROM數(shù)據(jù)存儲(chǔ)器只要求希望訪問的地址寫入到EEADR寄存器和EEPGD選擇位清零。在RD位置1后,在下一個(gè)指令周期數(shù)據(jù)就放到EEDATA寄存器。EEDATA寄存器將保持這個(gè)值到下一個(gè)“讀”操作初始化或到被軟件寫。讀E2PROM數(shù)據(jù)存儲(chǔ)分為如下四個(gè)步驟:①在確保地址不超過PIC16F87X芯片存儲(chǔ)器地址范圍的情況下,將地址寫入EEADR。②清EEPGD選擇位,表示讀E2PROM數(shù)據(jù)存儲(chǔ)器。③置位RD,初始化讀操作。④從EEDATA寄存器讀取數(shù)據(jù)。例2.3給出了E2PROM數(shù)據(jù)存儲(chǔ)器讀的編程設(shè)計(jì)2.5.2E2PROM數(shù)據(jù)存儲(chǔ)器的讀和寫操作1.讀操作BSFSTATUS,RP1;選擇BANK2BCFSTATUS,RP0;MOVFADDR,W;MOVWFEEADR;寫入地址BSFSTATUS,RP0;選擇BANK3BCFEECON1,EEPGD;選擇E2PROM數(shù)據(jù)存儲(chǔ)器BSFEECON1,RD;初始化讀BCFSTATUS,RP0;選擇BANK2MOVFEEDATA,W;將讀出數(shù)據(jù)放入W寄存器例2.3讀E2PROM數(shù)據(jù)存儲(chǔ)器編程BSFSTATUS,RP1將數(shù)據(jù)寫入E2PROM數(shù)據(jù)存儲(chǔ)器需要步驟。首先是寫入地址和數(shù)據(jù),必須放入特殊功能寄存器中,然后清EEPGD位和WREN置位。WREN只有在寫E2PROM數(shù)據(jù)存儲(chǔ)器時(shí)需要置位,否則保持0。當(dāng)WREN置位后,置位WR,WREN和WR不能在同一操作中置位(不能同時(shí)置位,必須WREN在前,WR在后)。在寫操作完成后用軟件使WREN復(fù)位,過早(在寫完成前)復(fù)位WREN不影響寫的過程。在寫操作前必須加入一個(gè)特殊的指令序列,以防止一些非法的操作。這些操作必須在禁止中斷情況下完成,因此在執(zhí)行這些特殊指令之前先禁止中斷。在指向?qū)懼?,必須用軟件判斷沒有寫操作在進(jìn)行。寫E2PROM數(shù)據(jù)存儲(chǔ)器的步驟如下。例2.4給出了寫E2PROM數(shù)據(jù)存儲(chǔ)器的編程。2.寫操作將數(shù)據(jù)寫入E2PROM數(shù)據(jù)存儲(chǔ)器需要步驟。2.寫操作①如果第10步?jīng)]有執(zhí)行,首先檢查WR標(biāo)志位,看寫操作是否正在進(jìn)行。②在確保地址不超過PIC16F87X芯片存儲(chǔ)器地址范圍的情況下,將地址寫入EEADR;③寫8位數(shù)據(jù)到EEDATA數(shù)據(jù)寄存器;④清EEPGD選擇位,表示寫E2PROM數(shù)據(jù)存儲(chǔ)器;⑤置位WREN,允許編程操作;⑥關(guān)中斷;⑦執(zhí)行如下五個(gè)特殊指令:●用兩步將55H寫到EECON2(先寫到W,再寫到EECON2);●用兩步將AAH寫到EECON2(先寫到W,再寫到EECON2);●置位WR。⑧開中斷;⑨清標(biāo)志位WREN;⑩完成寫操作,標(biāo)志位WR復(fù)位,中斷標(biāo)志位EEIF置位(由軟件復(fù)位)。如果第1步?jīng)]有執(zhí)行,檢查EEIF是否置位,WR是否復(fù)位,以確保寫周期結(jié)束。寫E2PROM數(shù)據(jù)存儲(chǔ)器的步驟①如果第10步?jīng)]有執(zhí)行,首先檢查WR標(biāo)志位,看寫操作是否正在BSFSTATUS,RP1;BSFSTATUS,RP0;選擇BANK3BTFSCEECON1,WR;等待GOTO$-1;寫操作完成BCFSTATUS,RP0;選擇BANK2MOVFADDR,W;MOVWFEEADR;寫地址到EEADRMOVFVALUE,W;MOVWFEEDATA;寫數(shù)據(jù)到EEDATABSFSTATUS,RP0;選擇BANK3BCFEECON1,EEPGD;選擇數(shù)據(jù)存儲(chǔ)器BSFEECON1,WREN;允許寫操作例2.4寫E2PROM數(shù)據(jù)存儲(chǔ)器編程BSFSTATUS,RP1BCFINTCON,GIE;如果由中斷開放,禁止中斷,否則此句可以不要MOVLW0x55;MOVWFEECON2;寫0X55到EECON2MOVLW0xAA;MOVWFEECON2;寫0XAA到EECON2BSFEECON1,WR;BSFINTCON,GIE;如果需要中斷,可中斷,否則此句可以不要BCFEECON1,WREN;禁止寫例2.4寫E2PROM數(shù)據(jù)存儲(chǔ)器編程(續(xù))BCFINTCON,GIE2.5.3FLASH程序存儲(chǔ)器的讀和寫操作1.讀操作讀FLASH程序存儲(chǔ)器與讀E2PROM數(shù)據(jù)存儲(chǔ)器基本一樣,只是在RD置位加入兩個(gè)空操作NOP。插入這兩個(gè)NOP以便CPU從程序存儲(chǔ)器讀出數(shù)據(jù)然后放入EEDATH:EEDATA寄存器。在第二個(gè)NOP后數(shù)據(jù)有效。EEDATH:EEDATA保持讀出的數(shù)據(jù)直到下一個(gè)讀周期開始,或被軟件重寫。讀E2PROM數(shù)據(jù)存儲(chǔ)分為如下5個(gè)步驟:①在確保地址不超過PIC16F87X芯片存儲(chǔ)器地址范圍的情況下,將地址寫入EEADRH:EEADR。②選擇位EEPGD置位,表示讀FLASH程序存儲(chǔ)器;③置位RD,開始讀操作;④執(zhí)行兩個(gè)NOP指令;⑤從FLASH程序存儲(chǔ)器讀取數(shù)據(jù)。2.5.3FLASH程序存儲(chǔ)器的讀和寫操作1.讀操作例2.5讀FLASH程序存儲(chǔ)器編程
BSFSTATUS,RP1;BCFSTATUS,RP0;選擇BANK2MOVFADDRH,WMOVWFEEADRHMOVFADDRL,W;MOVWFEEADR;寫入地址BSFSTATUS,RP0;選擇BANK3BSFEECON1,EEPGD;選擇FLASH程序存儲(chǔ)器BSFEECON1,RD;初始化讀NOPNOPBCFSTATUS,RP0;選擇BANK2MOVFEEDATA,W;將讀出數(shù)據(jù)放入W寄存器MOVWFDATAL;DATAL=EEDATAMOVFEEDATH;MOVWFDATAH;DATAH=EEDATH例2.5讀FLASH程序存儲(chǔ)器編程BSF寫FLASH程序存儲(chǔ)器是很特殊的,在編程期間,CPU停止執(zhí)行一切指令,振蕩器和外圍功能模塊保持工作,如果允許中斷,按次序接收中斷。一旦寫操作完成,CPU回到離開的位置繼續(xù)執(zhí)行代碼。象寫E2PROM數(shù)據(jù)存儲(chǔ)器一樣,寫FLASH程序存儲(chǔ)器也有很多步驟。數(shù)據(jù)和地址需要特殊寄存器,EEPGD置位,WREN置位,然后WR置位開始寫操作。寫操作完成后用軟件使WREN清零。在寫操作前必須加入一個(gè)特殊的指令序列,以防止一些非法的操作。這些操作是5個(gè)指令,必須在禁止中斷情況下完成,因此在執(zhí)行這些特殊指令之前先禁止中斷。這5個(gè)指令后緊跟兩個(gè)NOP,以確保CPU的寫操作。一旦寫完成,操作沿著第二個(gè)NOP執(zhí)行。2.寫操作寫FLASH程序存儲(chǔ)器是很特殊的,在編程期間,CPU停止執(zhí)行寫程序存儲(chǔ)器分為如下9步:①在確保地址不超過PIC16F87X芯片存儲(chǔ)器地址范圍的情況下,將地址寫入EEADRH:EEADR。②寫14位編程數(shù)據(jù)到EEDATH:EEDATA;③置位EEPGD,表示對(duì)FLASH程序存儲(chǔ)器操作;④WREN置位;⑤關(guān)中斷;⑥執(zhí)行特殊指令序列:●用兩步將55H寫到EECON2(先寫到W,再寫到EECON2);●用兩步將AAH寫到EECON2(先寫到W,再寫到EECON2);●置位WR。⑦執(zhí)行兩次NOP;⑧開中斷;⑨清標(biāo)志位WREN。寫程序存儲(chǔ)器分為如下9步寫程序存儲(chǔ)器分為如下9步:寫程序存儲(chǔ)器分為如下9步BSFSTATUS,RP1;BCFSTATUS,RP0;選擇BANK2MOVFADDRL,W;MOVWFEEADR;MOVFADDRH,W;MOVWFEEADRH;寫入所選擇程序存儲(chǔ)器單元的地址MOVFVALUEL,W;MOVWFEEDATA;MOVFVALUEH,W;MOVWFEEDATH;寫入編程值BSFSTATUS,RP0;選擇BANK3BSFEECON1,EEPGD;選擇FLASH程序存儲(chǔ)器例2.6寫FLASH程序存儲(chǔ)器編程BSFSTATUS,RP1BSFEECON1,WREN;允許寫操作BCFINTCON,GIE;如果由中斷開放,禁止中斷,否則此句可以不要MOVLW0x55;MOVWFEECON2;寫0X55到EECON2MOVLW0xAA;MOVWFEECON2;寫0XAA到EECON2BSFEECON1,WR;開始寫操作NOPNOPBSFINTCON,GIE;如果需要中斷,可允許中斷,否則此句可以不要BCFEECON1,WREN;禁止寫例2.6寫FLASH程序存儲(chǔ)器編程(續(xù))BSFEECON1,WREN;允許寫操2.5.4寫校驗(yàn)與寫保護(hù)對(duì)EEPROM的操作沒有自動(dòng)校驗(yàn)的功能,校驗(yàn)工作必須由用戶根據(jù)實(shí)際應(yīng)用在軟件中完成。用戶首先將數(shù)據(jù)寫存儲(chǔ)器,然后讀出與原來的數(shù)據(jù)進(jìn)行比較,如果一致,說明寫入成功,如果不一致,說明寫出錯(cuò)或存儲(chǔ)器毀壞。為了防止意外的寫入,在PIC16F87X芯片中已經(jīng)采取多種措施:在上電時(shí)WREN被清零上電后上電延時(shí)72ms等這些措施可以有效防止誤寫入寫操作所需要的初始化步驟和WREN功能位的設(shè)置,都有效地防止在掉電、電源故障和軟件出錯(cuò)時(shí)的誤寫操作。2.5.4寫校驗(yàn)與寫保護(hù)對(duì)EEPROM的操作沒有自動(dòng)校驗(yàn)的在PIC16F87X中,有兩種代碼保護(hù)機(jī)理。用一位保護(hù)位保護(hù)EEPROM,兩位保護(hù)位保護(hù)FLASH程序存儲(chǔ)器。EEPROM數(shù)據(jù)的讀/寫與保護(hù)位CPD無關(guān)。當(dāng)設(shè)置了保護(hù)且CPD=0,不管程序保護(hù)位的狀態(tài)如何,通過ICSP的外部訪問將被禁止。這個(gè)功能禁止了在芯片外讀取EEPROM的內(nèi)容。程序存儲(chǔ)器代碼保護(hù)位CP0和CP1不影響程序指令的執(zhí)行,PIC16F87X可以不考慮保護(hù)位的狀態(tài)直接讀程序存儲(chǔ)器的代碼。這兩位代碼以及WRT位對(duì)程序存儲(chǔ)器的寫操作有影響,表2.11給出了這些影響。位WRT用于FLASH程序存儲(chǔ)器的寫保護(hù),只有在通過ICSP對(duì)PIC16F87X編程時(shí),WRT才可以被訪問。一旦代碼保護(hù)允許,只有通過將全部EEPROM數(shù)據(jù)或全部程序存儲(chǔ)器的代碼刪除,才能清除代碼保護(hù)功能,否則代碼保護(hù)一直有效。代碼保護(hù)在PIC16F87X中,有兩種代碼保護(hù)機(jī)理。用一位保護(hù)位保護(hù)表2.11內(nèi)部FLASH存儲(chǔ)器的讀/寫狀態(tài)表2.11內(nèi)部FLASH存儲(chǔ)器的讀/寫狀態(tài)§2.6振蕩電路
PIC系列單片機(jī)首先采用了多種振蕩電路,以滿足不同應(yīng)用場合的需要。在一般的單片機(jī)系統(tǒng)中,時(shí)鐘電路采用晶體振蕩電路。而PIC單片機(jī)系統(tǒng)可以采用四種振蕩電路,§2.6振蕩電路
PIC系列單片機(jī)首先采用了多種振蕩電路,以2.6.1振蕩方式PIC系列單片機(jī)可工作于不同的振蕩器方式,有四種振蕩方式可供選擇低功耗振蕩LP標(biāo)準(zhǔn)晶體振蕩XT高速晶體振蕩HS阻容振蕩RC用戶可以根據(jù)其系統(tǒng)設(shè)計(jì)的需要,選擇四種振蕩方式中的一種,其振蕩的頻率范圍在DC~20/25MHz之間。PIC單片機(jī)振蕩方式由配置寄存器CONFIG的F0SC1和F0SC0位選擇,并在編程時(shí)寫入。2.6.1振蕩方式PIC系列單片機(jī)可工作于不同的振蕩器方式表2.12振蕩器類型選擇表2.12振蕩器類型選擇2.6.2晶體振蕩器/陶瓷振蕩器在標(biāo)準(zhǔn)晶體振蕩XT、低功耗振蕩LP和高速晶體振蕩HS三種方式中,需一晶體或陶瓷諧振器連接到單片機(jī)的OSC1/CLKIN和OSC2/CLKOUT引腳上,以建立振蕩,如圖2.22所示。電阻Rs常用來防止晶振被過分驅(qū)動(dòng)。在晶體振蕩下,電阻RF≈10MΩ。對(duì)于32KHZ以上的晶體振蕩器,當(dāng)VDD>4.5V時(shí),建議C1=C2≈30PF。(C1:相位調(diào)節(jié)電容;
C2:增益調(diào)節(jié)電容。)表2.13給出了陶瓷諧振器在不同頻率下所需的電容參考值,表2.14給出了晶體振蕩器在不同頻率下所需的電容參考值。這些參考值因采用不同廠家的晶體或陶瓷的特性不同,會(huì)有所改變。2.6.2晶體振蕩器/陶瓷振蕩器在標(biāo)準(zhǔn)晶體振蕩XT、低功耗圖2.22晶體/陶瓷振蕩電路圖2.22晶體/陶瓷振蕩電路表2.13陶瓷諧振器在不同頻率下所需的電容參考值表2.13表2.13陶瓷諧振器在不同頻率下所需的電容參考值表2.13表2.14晶體振蕩器在不同頻率下所需的電容參考值表2.14晶體振蕩器在不同頻率下所需的電容參考值2.6.3外部晶體振蕩器電路在標(biāo)準(zhǔn)晶體振蕩XT、低功耗振蕩LP和高速晶體振蕩HS三種方式中,PIC芯片可以使用已集成在片內(nèi)的振蕩器,亦可使用由其它電路構(gòu)成的振蕩器電路。當(dāng)外接振蕩器時(shí),外部振蕩信號(hào)從OSC1端輸入,OSC2端開路。如圖2.23所示。
圖2.24所示的是典型的外部并行諧振振蕩電路,應(yīng)用晶體的基頻來設(shè)計(jì)。74HC04反相器用來實(shí)現(xiàn)振蕩器所需的180°相移,4.7kΩ的電阻用來提供負(fù)反饋給反相器,10kΩ的電位器用來提供偏壓,從而使反相器74HC04工作在線性范圍內(nèi)。圖2.25所示的是典型的外部串行諧振振蕩電路,也應(yīng)用晶體的基頻來設(shè)計(jì)。74HC04反相器用來提供振蕩器所需的180°相移,
330Ω的電阻用來提供負(fù)反饋,同時(shí)偏置電壓。2.6.3外部晶體振蕩器電路在標(biāo)準(zhǔn)晶體振蕩XT、低功耗振蕩圖2.23外時(shí)鐘輸入工作方式圖2.23外時(shí)鐘輸入工作方式圖2.24外部并行諧振振蕩電路圖2.24外部并行諧振振蕩電路圖2.25外部串行諧振振蕩電路圖2.24圖2.24圖2.25外部串行諧振振蕩電路圖2.24圖2.242.6.4RC振蕩電路RC振蕩適合于對(duì)振蕩頻率精度要求不高的低成本應(yīng)用。在RC振蕩電路中,產(chǎn)生多諧振蕩是依靠電路電容的充放電實(shí)現(xiàn)的,電容充放電的時(shí)間與充電電流和電容大小有關(guān),而充電電流又與充電電壓(
VDD)和充電電阻等有關(guān),充電電阻精度和充電電容精度一般受環(huán)境溫度影響,因此電源VDD的穩(wěn)定性、
Rext精度、
Cext精度和環(huán)境溫度都會(huì)影響振蕩頻率的精度。同時(shí)由于工藝參數(shù)的差異,對(duì)同種型號(hào)不同芯片其振蕩器頻率將不同。另外,當(dāng)外接電容Cext值較小時(shí),對(duì)振蕩器頻率的影響更大。圖2.26給出了RC振蕩電路,電阻Rext取值最好在3KΩ~100KΩ范圍內(nèi)。如果Rext低于2.2KΩ,振蕩器將處于不穩(wěn)定工作狀態(tài),甚至停振。而Rext大于1M時(shí),振蕩器又易受噪聲、濕度、漏電流的干擾。電容Cext不受到過多限制,在不接外部電容Cext時(shí),振蕩器仍可工作,但為了抗干擾及保證穩(wěn)定性,接一20PF以上的電容是最佳選擇。2.6.4RC振蕩電路RC振蕩適合于對(duì)振蕩頻率精度要求不圖2.26RC振蕩電路圖2.26RC振蕩電路§2.7復(fù)位電路與復(fù)位狀態(tài)PIC16F87X系列單片機(jī)具有多種復(fù)位方式,每種復(fù)位產(chǎn)生的結(jié)果不盡相同。這幾種不同的復(fù)位方式是:
(1)上電復(fù)位POR(Power-onReset);
(2)在正常工作狀態(tài)下,當(dāng)引腳為低電平時(shí)引起復(fù)位;
(3)在休眠期間,當(dāng)引腳為低電平時(shí)引起復(fù)位;
(4)在正常工作狀態(tài)下,看門狗WDT超時(shí)復(fù)位;
(5)在休眠期間,看門狗WDT喚醒復(fù)位;
(6)掉電鎖存復(fù)位BOR(Brown-outReset)。表2.15給出了不同復(fù)位方式復(fù)位后的狀態(tài)。表2.16給出了所有寄存器的復(fù)位狀態(tài)。圖2.27是一個(gè)簡化后的片內(nèi)復(fù)位電路方框圖?!?.7復(fù)位電路與復(fù)位狀態(tài)PIC16F87X系列單片機(jī)表2.15不同復(fù)位方式復(fù)位后的狀態(tài)表2.15不同復(fù)位方式復(fù)位后的狀態(tài)表2.16PIC16F87X寄存器的復(fù)位狀態(tài)(部分)表2.16PIC16F87X寄存器的復(fù)位狀態(tài)(部分)圖2.27簡化后的片內(nèi)復(fù)位電路方框圖圖2.27簡化后的片內(nèi)復(fù)位電路方框圖1.上電復(fù)位POR當(dāng)芯片加電后電源電壓ⅤDD上升到一定值(一般在1.2V~1.7V之間)時(shí),上電復(fù)位電路產(chǎn)生一個(gè)上電復(fù)位脈沖。為了利用POR特性,可以直接(也可通過一個(gè)電阻)把/MCLR引腳與電源ⅤDD相連。這樣可以節(jié)省通常建立上電復(fù)位電路所需要的RC元件。但電源電壓需要滴足最大上升時(shí)間。
復(fù)位后芯片開始正常工作,芯片的工作參數(shù)(如電壓、溫度、頻率、電流等)必須滿足工作要求。如果工作參數(shù)不滿足,RESET信號(hào)會(huì)一直保持,直至滿足為止。掉電復(fù)位鎖定可以用于滿足開始的條件。1.上電復(fù)位POR當(dāng)芯片加電后電源電壓ⅤDD上升到一定值(2.上電定時(shí)器PWRT在芯片加電時(shí),PWRT提供固定的72ms的上電延遲定時(shí),為的是使電源電壓ⅤDD可以有足夠時(shí)間上升到一個(gè)對(duì)芯片工作合適的電壓值。上電延時(shí)定時(shí)器工作于內(nèi)部專用的RC振蕩器。只要PWRT有效,芯片就保持復(fù)位狀態(tài)。上電延時(shí)定時(shí)器是否工作可以通過對(duì)系統(tǒng)配置寄存器的PWRTE位的設(shè)置來進(jìn)行控制。
由于電源電壓、環(huán)境溫度和制造工藝的影響,用不同的芯片,其上電定時(shí)延時(shí)的時(shí)間也許會(huì)有所不同。但這不影響芯片正常工作。2.上電定時(shí)器PWRT在芯片加電時(shí),PWRT提供固定的723.振蕩器起振定時(shí)器OST在PWRT延遲時(shí)間到之后,OST又提供1024個(gè)振蕩周期的延遲時(shí)間,以確保讓晶體或陶瓷諧振器振蕩器可以有足夠的時(shí)間起振和建立穩(wěn)定的振蕩。
只有在XT、LP和HS振蕩方式下,并且僅上電復(fù)位或是芯片從休眠狀態(tài)中被喚醒的復(fù)位才能啟動(dòng)OST定時(shí)器工作。3.振蕩器起振定時(shí)器OST在PWRT延遲時(shí)間到之后,OST4.掉電復(fù)位鎖定BOR配置BODEN可以設(shè)置掉電復(fù)位鎖定功能。當(dāng)VDD掉電跌落到VBOR(一般位4V)時(shí)間達(dá)一個(gè)TBOR(大約100us),掉電復(fù)位電路將產(chǎn)生復(fù)位脈沖。如果VDD掉電跌落到VBOR的時(shí)間少于一個(gè)TBOR(大約100us),不會(huì)產(chǎn)生復(fù)位信號(hào)。一旦掉電復(fù)位出現(xiàn),芯片將保持在掉電復(fù)位狀態(tài),直到VDD上升到VBOR以上。PWRT延時(shí)定時(shí)器啟動(dòng)計(jì)數(shù)延時(shí)72ms,保持芯片處于RESET狀態(tài)。在PWRT延時(shí)期間,如果VDD又跌落到VBOR以下,BOR重新啟動(dòng)。一旦BOR電路處于工作狀態(tài),PWRT也會(huì)處于工作狀態(tài),而忽略PWRT配置位的狀態(tài)。4.掉電復(fù)位鎖定BOR配置BODEN可以設(shè)置掉電復(fù)位鎖定功5.上電復(fù)位延時(shí)時(shí)序在上電期間,延時(shí)系列的時(shí)序如下:在上電復(fù)位POR結(jié)束后,首先啟動(dòng)上電延時(shí)定時(shí)器PWRT,延時(shí)72ms。當(dāng)PWRT延時(shí)結(jié)束,啟動(dòng)振蕩起振定時(shí)器OST,延時(shí)1024個(gè)振蕩周期。OST延時(shí)結(jié)束后,芯片結(jié)束復(fù)位狀態(tài),進(jìn)入正常工作。整個(gè)延時(shí)的時(shí)間將隨著振蕩器的配置情況和PWRTE位的狀態(tài)而變。例如在RC振蕩器方式下,OST不起作用,當(dāng)把PWRTE位清零后,整個(gè)復(fù)位過程將沒有任何延時(shí)功能。表2.17給出了各種情況下的延時(shí)時(shí)間。5.上電復(fù)位延時(shí)時(shí)序在上電期間,延時(shí)系列的時(shí)序如下:在上電表2.17各種情況下的延時(shí)時(shí)間因?yàn)樯想姀?fù)位的延時(shí)是由POR復(fù)位脈沖啟動(dòng)的,所以只要在MCLR引腳上保持足夠長時(shí)間的低電平,那么復(fù)位延時(shí)就不起作用。當(dāng)MCLR引腳上的電平變成高電平時(shí),芯片就可以執(zhí)行程序工作。這一點(diǎn)對(duì)測試或?qū)σ粋€(gè)以上芯片進(jìn)行并行同步工作是非常有用的。表2.17各種情況下的延時(shí)時(shí)間因?yàn)樯想姀?fù)位的延時(shí)是由6.電源控制/狀態(tài)寄存器電源控制/狀態(tài)寄存器PCON有兩位。D0位是掉電復(fù)位狀態(tài)
,在上電復(fù)位時(shí)
不確定,由用戶置位,在復(fù)位后去查詢,以判斷是否出現(xiàn)掉電復(fù)位。當(dāng)?shù)綦姀?fù)位被禁止,
不需預(yù)測,它在任何時(shí)候都無效。D1位是上電復(fù)位狀態(tài)
,在上電復(fù)位時(shí)被清零,否則不受影響。在軟件中必須在上電復(fù)位后使
置位。6.電源控制/狀態(tài)寄存器電源控制/狀態(tài)寄存器PCON有兩位§2.8I/O端口在PIC16F87X系列微控器中,具有五個(gè)I/O端口:端口A、端口B、端口C、端口D和端口E。端口的一些引腳通過寄存器的選擇用作多功能復(fù)用,既可作為一般通用的I/O引腳,也可作為某些部件特殊功能的輸入/輸出引腳。一旦作為特殊功能引腳,這些引腳不再用作一般的I/O功能。§2.8I/O端口在PIC16F87X系列微控器中,具有2.8.1端口A和它的方向寄存器PIC16F87X系列芯片的端口A(PORTA)是6位寬帶鎖存器的I/O口,相應(yīng)的數(shù)據(jù)方向寄存器是TRISA,當(dāng)TRISA寄存器相應(yīng)位置1,其輸出驅(qū)動(dòng)器呈高阻狀態(tài),PORTA相應(yīng)I/O引腳被定義為輸入,當(dāng)TRISA寄存器相應(yīng)位為0,輸出鎖存器上的數(shù)據(jù)就從相應(yīng)I/O引腳上輸出,所以這時(shí)PORTA的相應(yīng)I/O引腳被定義為輸出。當(dāng)作為模擬電壓輸入端時(shí),必須保持TRISA置位。表2.18列出
端口A的功能,表2.19給出了與端口A有關(guān)的寄存器說明。圖2.28是端口A引腳結(jié)構(gòu),例2.7是端口A初始化編程。2.8.1端口A和它的方向寄存器PIC16F87X系列芯片表2.18端口A的功能表2.18端口A的功能表2.19與端口A有關(guān)的寄存器表2.19與端口A有關(guān)的寄存器圖2.28端口A引腳結(jié)構(gòu)圖2.28端口A引腳結(jié)構(gòu)例2.7端口A初始化編程BCFSTATUS,RP0;BCFSTATUS,RP1;CLRFPORTA;BSFSTATUS,RPO;MOVLWOxCF;MOVWFTRISA;例2.7端口A初始化編程BCF2.8.2端口B和它的方向寄存器端口B(PORTB)是一個(gè)8位寬、雙向可編程端口。端口的位的方向由相應(yīng)的方向寄存器TRISB設(shè)置。當(dāng)TRISB寄存器相應(yīng)位置l,其輸出驅(qū)動(dòng)器呈高阻狀態(tài),PORTB相應(yīng)I/O引腳被定義為輸入;當(dāng)TRISB寄存器相應(yīng)位為O,輸出鎖存器上的數(shù)據(jù)就從相應(yīng)I/O引腳上輸出,這時(shí)PORTB的相應(yīng)I/O引腳被定義為輸出。端口B有三個(gè)引腳與低電壓編程功能復(fù)用,它們是:RB3/PGM、RB6/PGC和RB7/PGD。
端口B的每一個(gè)引腳具有內(nèi)部弱上拉功能。這可以通過軟件編程設(shè)置,即復(fù)位選擇寄存器的D7位/RBPU。在上電復(fù)位或端口設(shè)置位輸出時(shí),弱上拉被自動(dòng)屏蔽。圖2.29給出了端口B的結(jié)構(gòu),表2.20給出端口B的功能說明,表2.21給出與端口B有關(guān)的寄存器。2.8.2端口B和它的方向寄存器端口B(PORTB)是一個(gè)圖2.29端口B引腳結(jié)構(gòu)圖2.29端口B引腳結(jié)構(gòu)表2.20端口B的功能表2.20端口B的功能表2.21與端口B有關(guān)的寄存器表2.21與端口B有關(guān)的寄存器B口中斷當(dāng)RB7:RB4定義為輸入,這4根Ⅰ/O線上的電平有變化時(shí),可以引起中斷。其功能的實(shí)現(xiàn)是通過把RB7:RB4引腳上的輸入信號(hào)與上次讀入PORTB口的舊的鎖存值進(jìn)行比較,若有變化,則把兩者相或后輸出以產(chǎn)生RBIF中斷(鎖存的標(biāo)志在INTCON寄存器中的D0)。這種中斷可以把CPU從“休眠”狀態(tài)中喚醒。在中斷服務(wù)程序中,用戶可以用以下兩種方法中的一種清除中斷。(1)通過清除INTCON寄存器中的D0(RBIE)禁止中斷發(fā)生。(2)對(duì)PORTB口進(jìn)行讀操作,這將結(jié)束引腳上電平變化的條件,接著就對(duì)RBIF復(fù)位。
引腳上電平變化條件將繼續(xù)把RBIE位置1,對(duì)PORTB口進(jìn)行讀操作,將結(jié)束電平變化的條件,可以清除RBIF位。如果正在進(jìn)行讀操作時(shí)I/O引腳上的電平發(fā)生變化,那么RBIF中斷標(biāo)志可能不會(huì)被置1。B口中斷當(dāng)RB7:RB4定義為輸入,這4根Ⅰ/O線上的電平有2.8.3端口C和它的方向寄存器端口C是一個(gè)8位寬、雙向可編程I/O口,方向寄存器為TRISC。當(dāng)TRISB寄存器相應(yīng)位置1,其輸出驅(qū)動(dòng)器呈高阻狀態(tài),PORTB相應(yīng)I/O引腳被定義為輸入;當(dāng)TRISB寄存器相應(yīng)位為0,輸出鎖存器上的數(shù)據(jù)就從相應(yīng)I/O引腳上輸出,這時(shí)PORTC的相應(yīng)I/O引腳被定義為輸出。端口C的引腳結(jié)構(gòu)圖如圖2.30所示。如表2.22所示,端口C是一個(gè)多用功能復(fù)用端口。所有的引腳都有斯密特觸發(fā)輸入緩沖器。當(dāng)采用I2C方式時(shí),RC4:RC3引腳可以通過SSPSTAT寄存器D6位CKE設(shè)置為I2C方式電平或SMB總線電平。當(dāng)采用外設(shè)功能時(shí),必須通過方向寄存器TRISC設(shè)置端口C的引腳。不同的外設(shè),可以通過改變TRISC寄存器的位值。與端口C相關(guān)的寄存器如表2.23所示。2.8.3端口C和它的方向寄存器端口C是一個(gè)8位寬、雙向可圖2.30端口C的引腳結(jié)構(gòu)圖2.30端口C的引腳結(jié)構(gòu)表2.22端口C功能表2.22端口C功能表2.23與端口C有關(guān)的寄存器表2.23與端口C有關(guān)的寄存器2.8.4端口D和它的方向寄存器在PIC16F87X系列中,只有PC16F874(A)/877(A)芯片上有端口D(PORTD)和它的方向寄存器(TRISD)。端口D是一個(gè)帶有斯密持觸發(fā)輸入緩沖方式的8位I/O端口,其中每一位都可獨(dú)立設(shè)置位輸入或輸出方式。結(jié)構(gòu)圖如圖2.31所示,每根I/O引腳對(duì)VDD或VSS都設(shè)有保護(hù)二極管。通過端口E方向寄存器的D4位PSPMODE,可以將端口設(shè)置為8位寬的微處理器端口,即并行從動(dòng)端口。在這種方式下,輸入緩沖器是TTL電平。端口D的功能如表2.24所示,表2.25給出了與端口D有關(guān)的寄存器。2.8.4端口D和它的方向寄存器在PIC16F87X系列中圖2.31端口D引腳結(jié)構(gòu)圖2.31端口D引腳結(jié)構(gòu)表2.24端口D的功能表2.24端口D的功能表2.24端口D的功能表2.24端口D的功能2.8.5端口E和它的方向寄存器只有PC16F874(A)/877(A)芯片上有端口E和
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 人員解除合同范例
- 農(nóng)村房子贈(zèng)予合同范例
- 公告類合同范例
- 東軟股合同范例
- 業(yè)主家用車出租合同范例
- 公路工程咨詢合同范例
- 農(nóng)家別墅買賣合同范本
- DSE和木霉降解木質(zhì)纖維素殘?jiān)捌浒l(fā)酵產(chǎn)物對(duì)菘藍(lán)促生抗旱研究
- 婚約解除損害賠償責(zé)任制度研究
- 慢性阻塞性肺疾病合并肌少癥患者SI、TWEAK水平的變化及相關(guān)研究
- 四年級(jí)數(shù)學(xué)(四則混合運(yùn)算)計(jì)算題專項(xiàng)練習(xí)與答案匯編
- 8年級(jí)上冊(cè)(人教版)物理電子教材-初中8~9年級(jí)物理電子課本
- 人教版高中英語新教材必修2單詞默寫表
- 中金公司在線測評(píng)真題
- 項(xiàng)目資金管理統(tǒng)籌實(shí)施方案
- 2024年秋新滬科版物理八年級(jí)上冊(cè) 6.3來自地球的力 教學(xué)課件
- 定密培訓(xùn)課件教學(xué)課件
- 三、種植芽苗菜(教學(xué)設(shè)計(jì))魯科版二年級(jí)下冊(cè)綜合實(shí)踐活動(dòng)
- 2025屆東北師大附屬中學(xué)高考物理五模試卷含解析
- GB/T 7409.1-2024同步電機(jī)勵(lì)磁系統(tǒng)第1部分:定義
- 液化氣站雙重預(yù)防體系手冊(cè)
評(píng)論
0/150
提交評(píng)論