版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
本文格式為Word版,下載可任意編輯——單片機(jī)學(xué)習(xí)資料2二Atmega8單片機(jī)結(jié)構(gòu)分析
通過(guò)第一章內(nèi)容的學(xué)習(xí),我們已經(jīng)知道,單片機(jī)就是在一塊芯片上集成了一臺(tái)微型計(jì)算機(jī)所必需的幾個(gè)組成部分:CPU、存儲(chǔ)器、I/0接口。
單片機(jī)主要是針對(duì)各種控制而設(shè)計(jì)的,因此,單片機(jī)除了具有一般微型計(jì)算機(jī)的組成部分外,一般還集成了定時(shí)/計(jì)數(shù)器、看門(mén)狗電路和中斷系統(tǒng),有的單片機(jī)還集成了A/D轉(zhuǎn)換功能部件。
單片機(jī)的這些組成部件在結(jié)構(gòu)上有什么特點(diǎn)?又是怎樣工作的呢?這些都是本章要解決的問(wèn)題。
§2.1Atmega8單片機(jī)結(jié)構(gòu)
為了提高運(yùn)行效率,Atmega8單片機(jī)采用了哈佛(Harvar)結(jié)構(gòu),即程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器使用不同的存儲(chǔ)空間。Atmega8單片機(jī)系統(tǒng)結(jié)構(gòu)如圖2—1:
RESETPC0-PC6PB0-PB7B端口驅(qū)動(dòng)8位數(shù)據(jù)總線ADCPORTB數(shù)字接口TWI定時(shí)/計(jì)數(shù)器內(nèi)部振蕩器看門(mén)狗定時(shí)器MCU控制器MCU控制器VCCC端口驅(qū)動(dòng)PORTC數(shù)字接口模擬輸入選擇GNDAGNDAREF程序計(jì)數(shù)器程序Flash指令寄放器指令譯碼器控制線CPU編程規(guī)律+-模擬比較器堆棧指針SRAM通用寄放器ALU狀態(tài)寄放器SPI模擬比較器接口振蕩器振蕩器中斷單元E2PROMUSARTPORTD數(shù)字接口D端口驅(qū)動(dòng)PD0-PD7圖2—1Atmega8結(jié)構(gòu)框圖
§2.2Atmega8引腳功能
Atmega8單片機(jī)有PDIP、TQFP和MLF三種不同形式的封裝,這里我們主要介紹它的PDIP封裝,見(jiàn)圖2—2所示。
(RESET)PC6(RXD)PD0(TXD)PD1(INT0)PD2(INT1)PD3(XCK/T0)PD4VCCGND(XTAL1/TOSC1)PB6(XTAL2/TOSC2)PB7(T1)PD5(AIN0)PD6(AIN1)PD7(ICP)PB01234567891011121314282726252423PC5(ADC5/SCL)PC4(ADC4/SDA)PC3(ADC3)PC2(ADC2)PC1(ADC1)PC0(ADC0)GNDAREFAVCCPB5(SCK)PB4(MISO)PB3(MOSI/OC2)PB2(SS/OC1B)PB1(OC1A)ATmega82221202318171615
圖2—2ATmega8引腳配置圖
由上圖可以看出,Atmega8單片機(jī)各引出腳的功能分括號(hào)外功能(第一功能)和括號(hào)內(nèi)功能(其次功能)。下面我們先介紹Atmega8單片機(jī)引腳的第一功能,引腳其次功能,我們將在以后相關(guān)章節(jié)中陳述。
1.VCC(7腳)——(數(shù)字)電源;2.GND(8、22腳)——地;
3.AVCC(20腳)——ADC轉(zhuǎn)換模塊電源供電端,即當(dāng)PC0—PC3用于ADC時(shí),AVCC引腳應(yīng)通過(guò)低通濾波器連接到VCC上;當(dāng)PC0—PC3不使用ADC時(shí),該引腳應(yīng)直接連接到VCC上。注意:PC4、PC5端口的電源是由VCC提供的;
4.AREF(21腳)——ADC轉(zhuǎn)換模塊參考電源輸入端;5.PB7(10腳)、PB6(9腳)、PB5(19腳)、PB4(18腳)、PB3(17腳)、PB2(16腳)、PB1(15腳)和PB0(14腳)——組成B端口的8個(gè)位。B端口是一個(gè)8位的雙向I/O口,每個(gè)引腳都有內(nèi)部上拉電阻,而且輸出緩沖器具有雙向(輸入和輸出)大電流的驅(qū)動(dòng)能力,可以直接驅(qū)動(dòng)發(fā)光二極管發(fā)光。
6.PC6(1腳)、PC5(28腳)、PC4(27腳)、PC3(26腳)、PC2(25腳)、PC1(24腳)和PC0(23腳)——組成C端口的7個(gè)位。C端口是一個(gè)7位的雙向I/O口,每個(gè)引腳都有內(nèi)部上拉電阻,而且輸出緩沖器具有雙向(輸入和輸出)大電流的驅(qū)動(dòng)能力,可以直接驅(qū)動(dòng)發(fā)光二極管發(fā)光。
注意:PC6的電氣特性與端口C其他引腳的電氣特性不同。當(dāng)未對(duì)RSTDISBL熔絲編程時(shí),PC6只作為復(fù)位輸入引腳,不能當(dāng)作I/O端口使用。要想使PC6作為I/O端口,就必需對(duì)RSTDISBL熔絲進(jìn)行編程。如何對(duì)RSTDISBL熔絲編程,我們將在后面相關(guān)內(nèi)容中介紹。
7.PD7(13腳)、PD6(12腳)、PD5(11腳)、PD4(6腳)、PD3(5腳)、PD2(4腳)、PD1(3腳)和PD0(2腳)——組成D端口的8個(gè)位。D端口是一個(gè)8位的雙向I/O口,每個(gè)引腳都有內(nèi)部上拉電阻,而且輸出緩沖器具有雙向(輸入和輸出)大電流的驅(qū)動(dòng)能力,可以直接驅(qū)動(dòng)發(fā)光二極管發(fā)光。
Atmega8的B、C、D端口都是雙向I/O口,如何定義它們是輸入還是輸出,或內(nèi)部上拉電阻是否有效,這些相關(guān)內(nèi)容我們將在下一節(jié)《ATmega8的I/O端口》中陳述。
§2.3ATmega8的I/O端口
由上節(jié)內(nèi)容我們知道:Atmega8的I/O端口具有第一和其次兩種功能,下面我們具體介紹這些內(nèi)容。
一、端口的第一功能——通用的數(shù)字I/O口
Atmega8的I/O端口用做通用數(shù)字I/O口時(shí),具有真正的讀—修改—寫(xiě)功能,意思是某端口引腳方向改變(輸入還是輸出),不會(huì)影響其他引腳方向的改變。同樣,某端口引腳輸出值的改變(輸出高電平還是輸出低電平)以及用做輸入時(shí)其上拉電阻的通、斷,也不會(huì)影響其他引腳。
Atmega8每個(gè)I/O引腳內(nèi)部都有獨(dú)立的上拉電阻,如圖2—3。
+5V開(kāi)關(guān)K控制信號(hào):為1時(shí),K合上;為0時(shí),K斷開(kāi).K上拉電阻I/O口引腳(如PB0)ATmega82—3I/O口引腳內(nèi)部上拉電阻
如何用C語(yǔ)言定義開(kāi)啟某I/0(如PB0)口的上拉電阻呢?其格式如下:
DDRB=0B00000000;//先定義PB0為輸入口
PORTB=0B00000001;//再將要開(kāi)啟上拉電阻的位置1。
上述定義中DDRB、PORTB是什么呢?其實(shí)在Atmega8中每個(gè)I/O端口都有3個(gè)寄放器,它們分別是:數(shù)據(jù)方向寄放器(DDRx)、數(shù)據(jù)寄放器(PORTx)和數(shù)據(jù)輸入引腳寄放器(PINx)(x:是B或C或D)。下面我們以B端口為例,介紹這三種寄放器及其應(yīng)用。
1.B端口方向寄放器——DDRB
位7DDB7R/W復(fù)位值R/W065432DDB2R/W01DDB1R/W00DDB0R/W0DDRBDDB6DDB5R/W0R/W0DDB4DDB3R/W0R/W0
方向寄放器主要用來(lái)定義I/O口引腳是輸入還是輸出,當(dāng)I/O口的某位置“1〞時(shí),那么相應(yīng)的引腳為輸出,否則,該引腳為輸入。例如:DDRB=0B00000010,即DDB=1,說(shuō)明B口的PB1為輸出,其他引腳為輸入。
2.B端口數(shù)據(jù)寄放器——PORTB
位76543210PORTB7PORTB6PORTB5PORTB4PORTB3PORTB2PORTB1PORTB0PORTBR/W復(fù)位值R/W0R/W0R/W0R/W0R/W0R/W0R/W0R/W0
數(shù)據(jù)寄放器或用來(lái)定義引腳輸出電平的高低,或用來(lái)定義是否開(kāi)啟引腳內(nèi)部的上拉電阻。定義了I/O口某個(gè)引腳為輸出后,當(dāng)數(shù)據(jù)寄放器相應(yīng)位置“1〞時(shí),說(shuō)明該引腳輸出高電平;置“0〞時(shí),輸出低電平,如:
DDRB=0B00000110;//定義PB1、PB2為輸出。
PORTB=0B00000010;//PB1輸出高電平,PB2輸出低電平。
定義了I/O口某個(gè)引腳為輸入后,當(dāng)數(shù)據(jù)寄放器相應(yīng)位置“1〞時(shí),說(shuō)明開(kāi)啟該引腳的內(nèi)部上拉電阻;置“0〞時(shí),該引腳內(nèi)部的上拉電阻是關(guān)斷的,如:DDRB=0B00000000;//定義PB0—PB7為輸入。
PORTB=0B00000010;//開(kāi)啟PB1內(nèi)部上拉電阻。3.B端口輸入引腳寄放器——PINB
位76543210PORTB7PORTB6PORTB5PORTB4PORTB3PORTB2PORTB1PORTB0PINBR/WRN/ARN/ARN/ARN/ARN/ARN/ARN/ARN/A
輸入引腳寄放器主要用來(lái)讀取I/O口引腳電平的高低。
注意:“0B00000010〞,這種書(shū)寫(xiě)格式與B端口的PB0—PB7之間的對(duì)應(yīng)關(guān)系如圖2—4所示。
PB7PB6PB5PB4PB3PB2PB1PB00B圖2—4
Atmega8C、D斷口的方向寄放器、數(shù)據(jù)寄放器、輸入引腳寄放器與B口相類(lèi)似,這里不在表達(dá)。二、端口的其次功能
大家可能注意到了,有些單片機(jī)引腳的功能不止一個(gè),是什么原因呢?由于
工藝及標(biāo)準(zhǔn)化等原因,單片機(jī)引腳數(shù)目總是有限的。Atmega8單片機(jī)引腳數(shù)目為28個(gè),但單片機(jī)為實(shí)現(xiàn)功能所需要的信號(hào)數(shù)目卻遠(yuǎn)遠(yuǎn)超過(guò)這個(gè)數(shù)。如何解決這個(gè)供需矛盾呢?正如有的人為了增加收入,要做一些兼職工作。單片機(jī)也同樣如此,當(dāng)引腳數(shù)量有限時(shí),“兼職〞是唯一可行的方法,即給其中一些引腳賦以雙重功能。下面介紹Atmega8單片機(jī)引腳的其次功能。1.B端口引腳其次功能:見(jiàn)表2—1
表2—1B端口引腳其次功能引腳PB7PB6PB5PB4PB3PB2PB1PB0第二功能XTAL2(系統(tǒng)時(shí)鐘晶振引腳2)TOSC2(實(shí)時(shí)時(shí)鐘晶振引腳2)XTAL1(系統(tǒng)時(shí)鐘晶振引腳1或外部系統(tǒng)時(shí)鐘輸入口)TOSC1(實(shí)時(shí)時(shí)鐘晶振引腳1)SCK(SPI總線時(shí)鐘)MISO(SPI總線主輸入口/從輸出口)MOSI(SPI總線主輸出口/從輸入口)OC2(T/C2輸出比較匹配輸出口)SS(SPI總線主從選擇)OC1B(T/C1輸出比較B匹配輸出口)OC1A(T/C1輸出比較A匹配輸出口)ICP(T/C1輸入捕獲輸入口)①PB7——XTAL2/TOSC2XTAL2:系統(tǒng)時(shí)鐘晶振引腳2。當(dāng)系統(tǒng)使用外部晶振時(shí),該引腳連接晶振的一個(gè)腳,此時(shí),該引腳不能作為I/O引腳使用。當(dāng)系統(tǒng)使用內(nèi)部可校準(zhǔn)的RC振蕩器或外部時(shí)鐘源時(shí),該引腳可作為一般I/O口使用。
TOSC2:實(shí)時(shí)時(shí)鐘晶振引腳2。只有選中擇內(nèi)部可校準(zhǔn)的RC振蕩器作為系統(tǒng)時(shí)鐘源時(shí),而且設(shè)置寄放器ASSR中的AS2位,允許使用異步時(shí)鐘定時(shí)器時(shí),PB7才可用作TOSC2。當(dāng)ASSR寄放器的AS2位置“1〞,使能定時(shí)/計(jì)數(shù)器2的異步時(shí)鐘功能時(shí),PB7與端口引腳脫離,作為振蕩放大器的反向輸出端。在這種模式下,時(shí)鐘晶體連接到該引腳,且不能作為I/O引腳。
假使PB7被用作晶振,寄放器DDB7、PORTB7和PINB7讀出都為“0〞。②PB6——XTAL1/TOSC1
XTAL1:系統(tǒng)時(shí)鐘晶振引腳1。當(dāng)系統(tǒng)使用外部晶振時(shí),該引腳連接晶振的一個(gè)腳,此時(shí),該引腳不能作為I/O引腳使用。當(dāng)系統(tǒng)使用內(nèi)部可校準(zhǔn)的RC振蕩器或外部時(shí)鐘源時(shí),該引腳可作為一般I/O口使用。
TOSC1:實(shí)時(shí)時(shí)鐘晶振引腳2。只有選中擇內(nèi)部可校準(zhǔn)的RC振蕩器作為系統(tǒng)時(shí)鐘源時(shí),而且設(shè)置寄放器ASSR中的AS2位,允許使用異步時(shí)鐘定時(shí)器時(shí),PB6才可用作TOSC1。當(dāng)ASSR寄放器的AS2位置“1〞,使能定時(shí)/計(jì)數(shù)器2的異步時(shí)鐘功能時(shí),PB6與端口引腳脫離,作為振蕩放大器的反向輸入端。在這種模式下,時(shí)鐘晶體連接到該引腳,且不能作為I/O引腳。
假使PB6被用作晶振,寄放器DDB6、PORTB6和PINB6讀出都為“0〞。③PB5——SCK
SCK:SPI串行總線接口時(shí)鐘線。當(dāng)系統(tǒng)作為主機(jī)時(shí),SCK為SPI總線的時(shí)鐘輸出端;當(dāng)系統(tǒng)作為從機(jī)時(shí),SCK為SPI總線的時(shí)鐘輸入端。當(dāng)使能SPI為從機(jī)模式時(shí),無(wú)論DDB5是何設(shè)置,該引腳被強(qiáng)置為輸入。盡管SCK引腳被SPI
強(qiáng)置為輸入,且其內(nèi)部上拉電阻仍由PORTB5控制。當(dāng)使能SPI為主機(jī)時(shí),PB5的數(shù)據(jù)方向由DDB5來(lái)控制。
④PB4——MISO
MISO:SPI串行總線接口的主機(jī)數(shù)據(jù)輸入/從機(jī)數(shù)據(jù)輸出端。當(dāng)使能SPI為主機(jī)模式時(shí),無(wú)論DDB4,PB4都被設(shè)置為輸入,但其內(nèi)部上拉電阻仍由PORTB4控制。;當(dāng)使能SPI為從機(jī)模式時(shí),PB4的數(shù)據(jù)方向由DDB4來(lái)控制。
⑤PB3——MOSI/OC2
MOSI:SPI串行總線接口的主機(jī)數(shù)據(jù)輸出/從機(jī)數(shù)據(jù)輸入端。當(dāng)使能SPI為從機(jī)模式時(shí),無(wú)論DDB3,PB3都被設(shè)置為輸入,且其內(nèi)部上拉電阻仍由PORTB3控制。當(dāng)使能SPI為主機(jī)模式時(shí),PB3的數(shù)據(jù)方向由DDB3來(lái)控制。
OC2:比較匹配輸出端。PB3引腳還可以作為定時(shí)/計(jì)數(shù)器2比較匹配的外部輸出口,此時(shí),PB3引腳必需設(shè)置為輸出(DDB3=1)。在PWM應(yīng)用中,OC2引腳還可作為PWM定時(shí)器模塊的輸出引腳。
⑥PB2——SS/OC1B
SS:SPI總線從機(jī)選擇輸入。當(dāng)使能SPI為從機(jī)模式時(shí),無(wú)論DDB2,PB2都被設(shè)置為輸入,且其內(nèi)部上拉電阻仍由PORTB2控制。當(dāng)使能SPI為主機(jī)模式時(shí),PB2的數(shù)據(jù)方向由DDB2來(lái)控制。
OC1B:T/C1比較匹配B輸出端。PB2引腳還可以作為定時(shí)/計(jì)數(shù)器1比較匹配B的外部輸出口,此時(shí),PB2引腳必需設(shè)置為輸出(DDB2=1)。在PWM應(yīng)用中,OC1B引腳還可作為PWM定時(shí)器模塊的輸出引腳。
⑦PB1——OC1A
OC1A:T/C1比較匹配A輸出端。PB1引腳還可以作為定時(shí)/計(jì)數(shù)器1比較匹配A的外部輸出口,此時(shí),PB1引腳必需設(shè)置為輸出(DDB1=1)。在PWM應(yīng)用中,OC1A引腳還可作為PWM定時(shí)器模塊的輸出引腳。
⑧PB0——ICPICP:輸入捕獲的輸入引腳。PB0引腳能作為T(mén)/C1輸入捕獲功能的輸入引腳。2.C端口引腳其次功能:見(jiàn)表2—2
表2—2C端口引腳其次功能
引腳PC6PC5PC4PC3PC2PC1PC0第二功能RESET(系統(tǒng)復(fù)位引腳)ADC5(ADC輸入通道5)SCL(2線串行總線接口時(shí)鐘線)ADC4(ADC輸入通道4)SDA(2線串行總線接口數(shù)據(jù)輸入/輸出線)ADC3(ADC輸入通道3)ADC2(ADC輸入通道2)ADC1(ADC輸入通道1)ADC0(ADC輸入通道0)①PC6——RESETRESET:系統(tǒng)復(fù)位引腳。當(dāng)RSTDISBL熔絲位被置位時(shí),PC6作為一般I/O引腳應(yīng)用,此時(shí),芯片內(nèi)部的上電復(fù)位(POWER—UP)和掉電檢測(cè)復(fù)位(BROWN—OUT)作為系統(tǒng)的復(fù)位源。當(dāng)RSTDISBL熔絲位沒(méi)有被置位時(shí),內(nèi)部復(fù)位電路將連接到PC6引腳,此時(shí)PC6不作為I/O口使用,當(dāng)被外部拉成低電平日,產(chǎn)生復(fù)位動(dòng)作,使系統(tǒng)復(fù)位。
②PC5——SCL/ADC5/
SCL:2線串行總線時(shí)鐘線。當(dāng)TWCR寄放器中的TWEN位被置“1〞時(shí),使能TWI接口,,PC5將與I/O端口脫離,成為T(mén)WI總線接口的串行時(shí)鐘線。PC5工作在TWI模式下時(shí),有一個(gè)尖峰濾波器連接到該引腳,能夠抑制輸入信號(hào)中小于50ns的毛刺,同時(shí)引腳將由具有緩沖率限制的開(kāi)漏驅(qū)動(dòng)器驅(qū)動(dòng)。
ADC5:PC5也可以作為ADC輸入的通道5。注意:ADC輸入通道5由數(shù)字電源端Vcc供電。
③PC4——SDA/ADC4
SDA:2線串行總線時(shí)鐘線。當(dāng)TWCR寄放器中的TWEN位被置“1〞時(shí),使能TWI接口,,PC4將與I/O端口脫離,成為T(mén)WI總線接口的串行時(shí)鐘線。PC4工作在TWI模式下時(shí),有一個(gè)尖峰濾波器連接到該引腳,能夠抑制輸入信號(hào)中小于50ns的毛刺,同時(shí)引腳將由具有緩沖率限制的開(kāi)漏驅(qū)動(dòng)器驅(qū)動(dòng)。
ADC4:PC4也可以作為ADC輸入的通道4。注意:ADC輸入通道4由數(shù)字電源端Vcc供電。
④PC3——ADC3
ADC3:PC3也可以作為ADC輸入的通道3。注意:ADC輸入通道3由模擬電源端AVcc供電
⑤PC2——ADC2
ADC2:PC2也可以作為ADC輸入的通道2。注意:ADC輸入通道2由模擬電源端AVcc供電。
⑥PC1——ADC1
ADC1:PC1也可以作為ADC輸入的通道1。注意:ADC輸入通道1由模擬電源端AVcc供電。
⑦PC0——ADC0
ADC0:PC0也可以作為ADC輸入的通道0。注意:ADC輸入通道0由模擬電源端AVcc供電。
⑧PD0——RXD
RXD:USART總線的數(shù)據(jù)輸入口。當(dāng)使用USART的數(shù)據(jù)接收功能時(shí),無(wú)論DDD0為如何設(shè)置,PD0均為輸入,此時(shí)PD0內(nèi)部上拉電阻依舊由PORTD0控制。
3.D端口引腳其次功能:見(jiàn)表2—3
表2—3D端口引腳其次功能引腳PD7PD6PD5PD4PD3PD2PD1PD0第二功能AIN1(模擬比較器負(fù)輸入)AIN0(模擬比較器正輸入)T1(T/C1外部計(jì)數(shù)脈沖輸入口)XCK(USART外部時(shí)鐘輸入/輸出口)T0(T/C0外部計(jì)數(shù)脈沖輸入口)INT1(外部中斷1輸入)INT0(外部中斷0輸入)TXD(USART輸出口)RXD(USART輸入口)①PD7——AIN1AIN1:模擬比較器反相輸入。在使用模擬比較器功能時(shí),應(yīng)將PD7設(shè)置為
輸入,且關(guān)斷內(nèi)部上拉電阻,防止數(shù)字口功能影響模擬比較器的性能。
②PD6——AIN0
AIN0:模擬比較器正相輸入。在使用模擬比較器功能時(shí),應(yīng)將PD6設(shè)置為輸入,且關(guān)斷內(nèi)部上拉電阻,防止數(shù)字口功能影響模擬比較器的性能。
③PD5——T1
T1:T/C1外部計(jì)數(shù)脈沖輸入口④PD4——XCK/T0
XCK:USART串行總線外部時(shí)鐘輸入/輸出口T0:T/C0外部計(jì)數(shù)脈沖輸入口⑤PD3——INT1
INT1:外部中斷源1。PD3可作為一個(gè)外部中斷源的輸入口⑥PD2——INT0
INT0:外部中斷源0。PD2可作為一個(gè)外部中斷源的輸入口⑦PD1——TXD
TXD:USART總線的數(shù)據(jù)輸出口。當(dāng)使用USART的數(shù)據(jù)輸出功能時(shí),無(wú)論DDD1如何設(shè)置,PD1均為輸出。
⑧PD0——RXD
RXD:USART總線的數(shù)據(jù)輸入口。當(dāng)使用USART的數(shù)據(jù)接收功能時(shí),無(wú)論DDD0為如何設(shè)置,PD0均為輸入,此時(shí)PD0內(nèi)部上拉電阻依舊由PORTD0控制。
以上是Atmega8單片機(jī)各端口引腳的其次功能,有的引腳的其次功能比它的第一功能還有用,有時(shí)可以不利用它的第一功能,但是不能沒(méi)有它的其次功能。缺少了它的其次功能,單片機(jī)甚至不能工作。盡管單片機(jī)引腳的地二功能如此有用,但初學(xué)者對(duì)它們的用法感到迷惑不解,總以為其次功能和第一功能之間要有一個(gè)切換過(guò)程,或者說(shuō)要用某條指令來(lái)完成第一功能和其次功能的切換。實(shí)際上,單片機(jī)各引腳的其次功能完全是自動(dòng)的,不需要用指令來(lái)切換。
§2.4Atmega8存儲(chǔ)器
單片機(jī)開(kāi)始處理問(wèn)題之前,必需事先把編寫(xiě)好的各種程序和所需的一些常數(shù)送到單片機(jī)中存放起來(lái)。我們把能夠存放程序或數(shù)據(jù)的器件稱(chēng)為存儲(chǔ)器。下面我們看看單片機(jī)的存儲(chǔ)器畢竟是什么樣子的。
一、程序存儲(chǔ)器
程序指的是控制單片機(jī)動(dòng)作的一系列命令。單片機(jī)只認(rèn)識(shí)由“0〞和“1〞代碼構(gòu)成的機(jī)器指令,因此必需將我們用C語(yǔ)言編寫(xiě)的程序轉(zhuǎn)換成它能認(rèn)識(shí)的指令碼。也就是說(shuō)在單片機(jī)處理問(wèn)題之前必需將將編好的程序、常數(shù)等編譯成機(jī)器代碼后存入單片機(jī)的存儲(chǔ)器中,這種用與存放程序指令、常數(shù)的存儲(chǔ)器稱(chēng)為程序存儲(chǔ)器。
程序存儲(chǔ)器具有“非易失〞和“只讀〞屬性。所謂“非易失性〞指的是在掉電狀況下,儲(chǔ)存在程序存儲(chǔ)器中的程序代碼不會(huì)丟失?!爸蛔x性〞指的是單片機(jī)在正常工作時(shí),不能往程序存儲(chǔ)器中寫(xiě)入數(shù)據(jù),而只能從程序存儲(chǔ)器中將數(shù)據(jù)讀出,所以這種存儲(chǔ)器又稱(chēng)為ROM(ReadOnlyMemory)。要想往程序存儲(chǔ)器中寫(xiě)入數(shù)據(jù),必需在特別條件下、用特定的設(shè)備進(jìn)行寫(xiě)操作。
Atmega8單片機(jī)所采用的程序存儲(chǔ)器就是一種可電擦除的只讀存儲(chǔ)器,稱(chēng)為FlashROM。由于所有的AVR指令都是16位或32位,因此Atmega8單片機(jī)Flash程序存儲(chǔ)器具有4K×16位的結(jié)構(gòu)。圖2—5為Atmega8單片機(jī)Flash程序存儲(chǔ)器的結(jié)構(gòu)圖。另外,為了提高程序的安全性性,設(shè)計(jì)時(shí)已將Atmega8單片機(jī)的Flash程序存儲(chǔ)器分為引導(dǎo)程序區(qū)(BootProgramSection)和應(yīng)用程序區(qū)(ApplicationProgramSection)兩部分。我們可以通過(guò)對(duì)相應(yīng)熔絲位的編程設(shè)定,選擇是否需要使用引導(dǎo)程序區(qū)以及該區(qū)空間的大小。
16Bits$000應(yīng)用程序區(qū)引導(dǎo)程序區(qū)$FFF
圖2—5Flash程序存儲(chǔ)器結(jié)構(gòu)
二、數(shù)據(jù)存儲(chǔ)器
單片機(jī)中僅有程序存儲(chǔ)器是不夠的,由于它在作各種運(yùn)算時(shí)與人工計(jì)算類(lèi)似,為了得到最終結(jié)果,往往要經(jīng)過(guò)大量步的中間過(guò)程,得到大量中間結(jié)果。這些中間結(jié)果在運(yùn)算過(guò)程中也要有個(gè)地方存放才行。程序終止了,這些中間結(jié)果可能就不需要了。把它們放哪呢?當(dāng)然放在存儲(chǔ)器中。放在前面提到的程序存儲(chǔ)器中可以嗎?顯然不行,由于這些中間結(jié)果是隨時(shí)可能變化的,單片機(jī)要將它們寫(xiě)進(jìn)程序存儲(chǔ)器中,而在正常工作時(shí)程序存儲(chǔ)器又是不可以寫(xiě)的。所以,在單片機(jī)中還必需有一個(gè)存放中間結(jié)果的區(qū)域,稱(chēng)為數(shù)據(jù)存儲(chǔ)器。
數(shù)據(jù)存儲(chǔ)器具有隨機(jī)可讀、可寫(xiě)的性能,稱(chēng)為RAM(RandomAccessMemory)。
Atmega8單片機(jī)數(shù)據(jù)存儲(chǔ)器包括SRAM數(shù)據(jù)存儲(chǔ)器和512B的E2PROM數(shù)據(jù)存儲(chǔ)器。SRAM數(shù)據(jù)存儲(chǔ)器的空間組織結(jié)構(gòu)如圖2—6。
通用工作寄放器組R0R1R2?R29R30R31I/O存儲(chǔ)器空間$00$01$02?$3D$3E$3F64個(gè)32個(gè)數(shù)據(jù)存儲(chǔ)器空間$0000$0001$0002?$001D$001E$001F$0020$0021$0022?$005D$005E$005F內(nèi)部SRAM$0060$00611024個(gè)?$045E
圖2—6SRAM數(shù)據(jù)存儲(chǔ)器的空間結(jié)構(gòu)
$045F可能有同學(xué)問(wèn):在一般的計(jì)算機(jī)中,并沒(méi)有程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器的說(shuō)法。其實(shí),這正是單片機(jī)和一般計(jì)算機(jī)的不同之處之一。單片機(jī)在存儲(chǔ)空間上將程序存儲(chǔ)器與數(shù)據(jù)存儲(chǔ)器分開(kāi),這種結(jié)構(gòu)稱(chēng)為哈佛(Harvard)結(jié)構(gòu)。而一般計(jì)算機(jī)中程序和數(shù)據(jù)共用一個(gè)存儲(chǔ)空間。
單片機(jī)的存儲(chǔ)器為什么要采用這種哈佛(Harvard)結(jié)構(gòu)呢?這是由單片機(jī)的應(yīng)用特點(diǎn)所決定的。單片機(jī)往往是針對(duì)某個(gè)特定的對(duì)象和任務(wù)設(shè)計(jì)的,其程序設(shè)計(jì)成功后,一般不會(huì)再變化。因此程序(包括程序中的一些常數(shù))可以而且也應(yīng)當(dāng)一次性的永久地存放到單片機(jī)中,這樣不僅省去了每次開(kāi)機(jī)時(shí)重新裝載程序,還可以有效地防止由于掉電和其他干擾而引起的程序丟失和錯(cuò)誤。三、I/O寄放器
Atmega8所有的I/O口及外圍設(shè)備的控制寄放器、數(shù)據(jù)寄放器都被設(shè)置在I/O寄放器空間中。表2—4列出了Atmega8單片機(jī)的I/O寄放器的地址空間分派、名稱(chēng)和功能。
表2—4Atmega8單片機(jī)I/O寄放器地址空間分派表十六進(jìn)制地址$00($0020)$01($0021)$02($0022)$03($0023)$04($0024)$05($0025)$06($0026)$07($0027)$08($0028)$09($0029)$0A($002A)$0B($002B)$0C($002C)$0D($002D)$0E($002E)$0F($002F)名稱(chēng)TWBRTWSRTWARTWDRADCLADCHADCSRADMUXACSRUBRRLUCSRBUCSRAUDRSPCRSPSRSPDR功能I2C波特率寄放器I2C狀態(tài)寄放器I2C從機(jī)寄放器I2C數(shù)據(jù)寄放器ADC數(shù)據(jù)寄放器低字節(jié)ADC數(shù)據(jù)寄放器高字節(jié)ADC控制和狀態(tài)寄放器ADC多路選擇器模擬比較控制和狀態(tài)寄放器USART波特率寄放器低8位USART控制狀態(tài)寄放器BUSART控制狀態(tài)寄放器AUSARTI/O數(shù)據(jù)寄放器SPI控制寄放器SPI狀態(tài)寄放器SPII/O數(shù)據(jù)寄放器
$10($0030)$11($0031)$12($0032)$13($0033)$14($0034)$15($0035)$16($0036)$17($0037)$18($0038)$19($0039)$1A($003A)$1B($003B)$1C($003C)$1D($003D)$1E($003E)$1F($003F)$20($0040)$21($0041)$22($0042)$23($0043)$24($0044)$25($0045)$26($0046)$27($0047)$28($0048)$29($0049)$2A($004A)$2B($004B)$2C($004C)$2D($004D)$2E($004E)$2F($004F)$30($0050)$31($0051)$32($0052)$33($0053)$34($0054)$35($0055)$36($0056)$37($0057)$38($0058)$39($0059)PINDDDRDPORTDPINCDDRCPORTCPINBDDRBPORTB(Reserved)(Reserved)(Reserved)EECREEDREEARLEEARHUCSRCUBRRHWDTCRASSROCR2TCNT2TCCR2ICR1LICR1HOCR1BLOCR1BHOCR1ALOCR1AHTCNT1LTCNT1HTCCR1BTCCR1ASFIOROSCCALTCNT0TCCR0MCUCSRMCUCRTWCRSPMCRTIFRTIMSKD端口輸入腳D端口數(shù)據(jù)方向寄放器D端口數(shù)據(jù)寄放器C端口輸入腳C端口數(shù)據(jù)方向寄放器C端口數(shù)據(jù)寄放器B端口輸入腳B端口數(shù)據(jù)方向寄放器B端口數(shù)據(jù)寄放器保存保存保存E2PROM控制寄放器E2PROM數(shù)據(jù)寄放器E2PROM地址寄放器低8位E2PROM地址寄放器高8位USART控制狀態(tài)寄放器CUSART波特率寄放器高4位看門(mén)狗定時(shí)器控制寄放器異步模式狀態(tài)寄放器T/C2輸出比較寄放器T/C2計(jì)數(shù)器T/C2控制寄放器T/C1輸入捕獲寄放器低8位T/C1輸入捕獲寄放器高8位T/C1輸出比較寄放器B低8位T/C1輸出比較寄放器B高8位T/C1輸出比較寄放器A低8位T/C1輸出比較寄放器A高8位T/C1計(jì)數(shù)器低8位T/C1計(jì)數(shù)器高8位T/C1控制寄放器BT/C1控制寄放器A特別功能I/O寄放器內(nèi)部RC振蕩器校準(zhǔn)值寄放器T/C0計(jì)數(shù)器T/C0控制寄放器MCU控制和狀態(tài)寄放器MCU控制寄放器I2C總線控制寄放器寫(xiě)程序存儲(chǔ)器控制寄放器T/C中斷標(biāo)志寄放器T/C中斷屏蔽寄放器$3A($005A)$3B($005B)$3C($005C)$3D($005D)$3E($005E)$3F($005F)GIFRGICR(Reserved)SPLSPHSREG通用中斷控制寄放器通用中斷控制寄放器保存堆棧指針寄放器低8位堆棧指針寄放器高8位狀態(tài)寄放器§2.5時(shí)鐘電路和復(fù)位電路
一、時(shí)鐘源
單片機(jī)在執(zhí)行指令時(shí),尋常將一條指令分解為若干基本的微操作,這些微操作對(duì)應(yīng)的脈沖信號(hào)在時(shí)間上的先后次序,稱(chēng)為單片機(jī)的時(shí)序。
為了保證同步工作,單片機(jī)內(nèi)部電路應(yīng)在唯一的時(shí)鐘信號(hào)控制下,嚴(yán)格地依照時(shí)序進(jìn)行工作。
Atmega8共有5種源,如圖2—7所示。
外部晶振CPU時(shí)鐘clkCPU外部RC振蕩器外部低頻晶振外部時(shí)鐘內(nèi)部RC晶振時(shí)鐘源選擇器I/O時(shí)鐘clkI/O主時(shí)鐘時(shí)鐘控制器Flash時(shí)鐘clkFLASHADC時(shí)鐘clkADC異步定時(shí)器時(shí)鐘clkASY
圖2—7Atmega8時(shí)鐘系統(tǒng)
具體的Atmega8應(yīng)用系統(tǒng)采用哪種時(shí)鐘源,可以通過(guò)利用廣州雙龍MCU下載程序V1.3.4對(duì)Atmega8內(nèi)部的熔絲位CKSEL進(jìn)行編程設(shè)置,如表2—6。
表2—5Atmega8時(shí)鐘源選擇可選擇的時(shí)鐘源外部晶振外部RC振蕩器外部低頻晶振外部時(shí)鐘內(nèi)部RC振蕩熔絲位CKSEL3,2,1,01111—10101000—0101100100000100—0001例如:采用8.000MHz內(nèi)部RC振蕩器,我們可以利用V1.3.4進(jìn)行如圖2—8所示設(shè)置。
圖2—8
注意:在圖2—8中,打“√〞表示相應(yīng)的CKSEL被編程,且為“0〞。1.外部晶振
Atmega8的XTAL1和XTAL2分別為片內(nèi)振蕩器的反向放大器的輸入、輸出端,可在外部連接石英晶體(對(duì)頻率要求不高時(shí)可接陶瓷晶體),構(gòu)成穩(wěn)定的自激振蕩器,產(chǎn)生一個(gè)與石英晶體固有頻率相等的時(shí)鐘信號(hào),如圖2—9。
C2XTAL2C1XTAL1GNDATmega8
圖2—9外部晶振連接圖
圖中晶振頻率可以在0.4—16MHz之間選擇。C1、C2尋常選則容量為12~22pF的NPO電容,且使兩者的容量相等。另外,為了保證振蕩器的穩(wěn)定性,在設(shè)計(jì)電路板時(shí),晶體、電容盡可能靠近芯片,以減少分布電容的影響。
使用外部晶振,可以通過(guò)熔絲位CKOPT選擇兩種不同的工作方式:當(dāng)熔絲位CKOPT被編程時(shí),外部晶振振蕩器輸出一個(gè)滿幅的振蕩信號(hào),使系統(tǒng)適合在高噪聲環(huán)境下工作,或需要把從XTAL2的時(shí)鐘信號(hào)作為時(shí)鐘信號(hào)輸出;當(dāng)熔絲位CKOPT未4被編程時(shí),外部晶振振蕩器輸出一個(gè)小擺幅的振蕩信號(hào),此時(shí)相應(yīng)減少了功率消耗。但此方式的工作頻率范圍受限,而且振蕩器的輸出不能作為外部時(shí)鐘驅(qū)動(dòng)使用。
外部晶振振蕩器的每種工作方式又有不同的三種模式,可以通過(guò)熔絲位
CKSEL(3、2、1)不同的編程組合來(lái)選擇,具體狀況參見(jiàn)表2—6。
表2—6外部晶振振蕩器不同工作模式工作方式1熔絲位工作頻率范C1、C2(使用石圍(MHz)英晶體,pF)CKOPTCKSEL(3、2、1)僅使用于陶瓷振蕩器11010.4~0.911100.9~3.012~2211113.0~8.012~2200101、110、111≤1.012~222.外部時(shí)鐘源在由多個(gè)單片機(jī)組成的系統(tǒng)中,為了保證各單片機(jī)之間時(shí)鐘信號(hào)的同步,應(yīng)當(dāng)引入唯一的公用外部脈沖作為各單片機(jī)的時(shí)鐘脈沖。
Atmega8采用外部時(shí)鐘源時(shí),連接方法如圖2—10,而且要將熔絲位CKSEL編程為“0000〞。另外,通過(guò)對(duì)熔絲位CKOPT編程,可以使芯片內(nèi)部XTAL1與地之間的36pF有效。
NCXTAL2外部時(shí)鐘信號(hào)XTAL1GNDATmega8
圖2—10外部時(shí)鐘源接法
3.可校準(zhǔn)的內(nèi)部RC振蕩器
Atmega8中集成了可校準(zhǔn)的內(nèi)部RC振蕩電路,它可以提供固定的1.0、2.0、4.0或8.0MHz時(shí)鐘信號(hào),對(duì)頻率要求不高時(shí),可以作為系統(tǒng)時(shí)鐘源,從而使得系統(tǒng)硬件配置變得簡(jiǎn)單。我們可以通過(guò)對(duì)熔絲位CKSEL編程來(lái)選用內(nèi)部RC振蕩器作為系統(tǒng)時(shí)鐘(熔絲位CKOPT應(yīng)處于未編程狀態(tài)),見(jiàn)表2—7。
表2—7使用內(nèi)部RC振蕩器的不同工作模式熔絲位CKSEL(3、2、1、0)0001001000110100工作頻率(MHz)1.02.04.08.0注意:Atmega8芯片出廠時(shí)設(shè)置為0001由Atmega8構(gòu)成的單片機(jī)系統(tǒng)除了可以選擇以上三種時(shí)鐘源外,還可以采用外部RC振蕩器或外部低頻晶振作為系統(tǒng)時(shí)鐘源,具體使用方法參照相關(guān)的技術(shù)文件。
二、單片機(jī)的復(fù)位電路
復(fù)位功能類(lèi)似預(yù)備鈴的作用,預(yù)備鈴一響,大家就自動(dòng)進(jìn)入教室,在這段時(shí)間里,老師還沒(méi)有開(kāi)始上課。對(duì)于單片機(jī)來(lái)說(shuō),復(fù)位的時(shí)候,CPU也沒(méi)有開(kāi)始執(zhí)行程序,只是做準(zhǔn)備工作。
Atmega8單片機(jī)有4個(gè)復(fù)位源:上電復(fù)位、外部復(fù)位、看門(mén)狗復(fù)位和電源電壓檢測(cè)BOD復(fù)位。下面我們?cè)敿?xì)介紹Atmega8的上電復(fù)位功能。
上電復(fù)位脈沖(POR)由Atmega8芯片內(nèi)部的電源檢測(cè)電路產(chǎn)生,檢測(cè)電平門(mén)限見(jiàn)表2—8。當(dāng)系統(tǒng)電源電壓VCC低于上電復(fù)位門(mén)限電平VPOT,產(chǎn)生內(nèi)部復(fù)位脈沖,使MCU復(fù)位。
表2—8Atmega8復(fù)位特性
符號(hào)參數(shù)上電復(fù)位門(mén)限電壓(上升沿)條件最小值典型值最大值單位VPOT1.42.3V上電復(fù)位門(mén)限電壓(下降沿)1.32.3VVRST復(fù)位引腳門(mén)限電壓0.10.9V復(fù)位引腳需要的最小脈寬tRST50nsBODLEVEL=1VBOT掉電復(fù)位門(mén)限電壓2.52.73.2VBODLEVEL=03.74.04.5VTBOD掉電檢測(cè)的低電壓最小寬度BODLEVEL=12usBODLEVEL=02usVHYST掉電檢測(cè)遲滯電壓130mV當(dāng)系統(tǒng)上電電壓達(dá)到上電復(fù)位門(mén)限電平VPOT時(shí),啟動(dòng)Atmega8芯片內(nèi)部一個(gè)延時(shí)計(jì)數(shù)器,由它決定Atmega8上電后保持復(fù)位狀態(tài)的時(shí)間,如圖2—11。
VPOT系統(tǒng)電源電壓VccVRST復(fù)位引腳電平t延時(shí)延遲時(shí)間內(nèi)部復(fù)位脈沖
圖2—11MCU上電復(fù)位(復(fù)位引腳接到系統(tǒng)電源VCC)
由上面的介紹可知,由于Atmega8特有的上電復(fù)位功能,在它構(gòu)成的單片機(jī)系統(tǒng)中,我們可以不用外設(shè)復(fù)位電路,只要將其復(fù)位引腳直接接到電源端即可,從而簡(jiǎn)化了硬件電路,這也是單片機(jī)發(fā)展的方向。
Atmega8其它三種復(fù)位源,請(qǐng)大家參考相關(guān)的技術(shù)資料。
§2.6中斷系統(tǒng)
中斷系統(tǒng)是單片機(jī)的重要組成部分,實(shí)時(shí)控制、數(shù)據(jù)傳送、故障自動(dòng)處理等往往都采用中斷系統(tǒng)。中斷系統(tǒng)的應(yīng)用使單片機(jī)的功能更強(qiáng)、效率更高、使用更加靈活便利。本章主要介紹中斷的概念以及Atmega8單片機(jī)的中斷系統(tǒng)。一、中斷的概念:
㈠什么是中斷
所謂中斷指的是由于某中原因,使當(dāng)前正在進(jìn)行的工作暫時(shí)中止,改為去執(zhí)行另一項(xiàng)工作,待這項(xiàng)工作處理完后,回到原來(lái)的地方繼續(xù)以前的工作。
其實(shí),在我們?nèi)粘I钪幸步?jīng)常發(fā)生中斷現(xiàn)象。例如:小王正在家中看書(shū),突然響起急促的電話鈴。小王放下手中的所看的書(shū),去聽(tīng)電話。電話是他同學(xué)打來(lái)的,因兩人很久沒(méi)有聯(lián)系,自然少不了一番問(wèn)候。之后,小王掛斷電話,又繼續(xù)看書(shū)。
㈡、中斷的基本術(shù)語(yǔ)1.主程序
主程序就是單片機(jī)中斷前所執(zhí)行的程序。上例中小王看書(shū)的過(guò)程可以理解為主程序。
2.中斷源
中斷源即引起中斷的原因或事件。上例中小王的同學(xué)是引起小王中斷看書(shū)的根本原因,因此,小王的同學(xué)是產(chǎn)生這次中斷的中斷源。
3.中斷請(qǐng)求信號(hào)
中斷請(qǐng)求信號(hào)指的是中斷源通過(guò)什么方式請(qǐng)求中斷。上例中小王的同學(xué)是通過(guò)電話鈴聲請(qǐng)求中斷的,因此,電話鈴聲是產(chǎn)生這次中斷的中斷請(qǐng)求信號(hào)。
4.中斷服務(wù)程序
中斷服務(wù)程序即發(fā)生中斷后所執(zhí)行的程序。上例中小王暫??磿?shū)后所做的事是接他同學(xué)的電話,因此,小王接聽(tīng)電話是中斷服務(wù)程序。
5.?dāng)帱c(diǎn)
斷點(diǎn)就是主程序被斷開(kāi)的位置。在上例中,假設(shè)小王剛好看到第98頁(yè)時(shí),電話鈴聲響了,小王暫停看書(shū)去接聽(tīng)電話,那么第98頁(yè)就是斷點(diǎn)。
6.中斷的優(yōu)先級(jí)在同一時(shí)刻,使單片機(jī)暫停當(dāng)前正在執(zhí)行程序的中斷源有可能不止一個(gè),而每個(gè)中斷源都有自己的“份量〞,有的請(qǐng)求比較迫切,單片機(jī)必需盡快響應(yīng),而有的則可以等會(huì)后才響應(yīng),這就是中斷的優(yōu)先級(jí)。二、Atmega8單片機(jī)的中斷系統(tǒng)
不同型號(hào)的單片機(jī),其硬件結(jié)構(gòu)和軟件指令有所不同,中斷系統(tǒng)也有所不同。下面我們就來(lái)看看Atmega8單片機(jī)的的中斷系統(tǒng)。
㈠中斷源
Atmega8單片機(jī)提供了18個(gè)中斷源和一個(gè)復(fù)位向量。每個(gè)中斷源在程序空間都有一個(gè)獨(dú)立的中斷向量號(hào)(地址),如表2—9所示。
表2—9Atmega8中斷源和中斷向量中斷向量號(hào)12345678910111213141516171819中斷源RESETINT0INT1TIMER2COMPTIMER2OVFTIMER1CAPTTIMER1COMPATIMER1COMPBTIMER1OVFTIMER0OVFSPI,STCUSART,RCXUSART,UDREUSART,TXCADCEE_RDYANA_COMPTWISPM_RDY中斷定義上電、外部、BOD、看門(mén)狗復(fù)位外部中斷0外部中斷1定時(shí)/計(jì)數(shù)器2比較匹配定時(shí)/計(jì)數(shù)器2溢出中斷定時(shí)/計(jì)數(shù)器1捕獲事件定時(shí)/計(jì)數(shù)器1比較匹配A定時(shí)/計(jì)數(shù)器1比較匹配B定時(shí)/計(jì)數(shù)器1溢出中斷定時(shí)/計(jì)數(shù)器0溢出中斷SPI串行傳輸完成USART,Rx完成USART,寄放器空USART,Tx完成ADC轉(zhuǎn)換完成E2PROM準(zhǔn)備好模擬比較器兩線串行接口(I2C)寫(xiě)程序存儲(chǔ)器準(zhǔn)備好在這19個(gè)中斷向量中,中斷向量號(hào)越小的,其中斷優(yōu)先級(jí)別越高。
㈡與外部中斷有關(guān)寄放器
在Atmega8單片機(jī)18個(gè)中斷源中,每個(gè)中斷源都有獨(dú)立的中斷使能位,在這里我們先介紹與外部中斷有關(guān)使能位,其它(如定時(shí)/計(jì)數(shù)器溢出中斷)在相應(yīng)章節(jié)中介紹。Atmega8與外部中斷有關(guān)的寄放器有MCUCR、GICR、GIFR。這三個(gè)寄放器是如何為外部中斷系統(tǒng)服務(wù)呢?具體地說(shuō),Atmega8兩個(gè)外部中斷源的中斷方式鎖存在MCUCR中。這兩個(gè)外部中斷源的中斷請(qǐng)求,能否得到響應(yīng),還受通用中斷控制寄放器GICR中各位的控制和狀態(tài)寄放器I位控制(I位置1,允許全局中斷,在C語(yǔ)言中定義為SEI())。響應(yīng)中斷后的中斷標(biāo)志寄放在通用中斷標(biāo)志寄放器GIFR中。
1.MCU控制積存器——MCUCR
MCUCR寄放器中包含外部中斷方式控制位和一般的MCU功能控制位,每一位定義如下。
位7SER/W復(fù)位值R/W06SM2R/W05SM1R/W043210MCUCRSM0ISC11ISC10ISC01ISC00R/W0R/W0R/W0R/W0R/W0
⑴位3、2:外部中斷1的中斷方式控制位
假使?fàn)顟B(tài)寄放器中的I位和中斷控制寄放器GICR中相應(yīng)的中斷屏蔽位被置“1〞,外部中斷1會(huì)由引腳INT1(PD3)上電平的變化而觸發(fā)。外部中斷1的中斷方式定義如表2—10。
表2—10INT1中斷方式
位30011位20101中斷方式INT1的低電平產(chǎn)生一個(gè)中斷請(qǐng)求INT1的下降沿和上升沿都產(chǎn)生一個(gè)中斷請(qǐng)求INT1的下降沿產(chǎn)生一個(gè)中斷請(qǐng)求INT1的上升沿產(chǎn)生一個(gè)中斷請(qǐng)求我們用C語(yǔ)言編寫(xiě)了這樣一條語(yǔ)句:MCUCR=0x08;其意思是外部中斷1采用INT1引腳上脈沖下降沿觸發(fā)。
⑵位1、0:外部中斷0的中斷方式控制位
假使?fàn)顟B(tài)寄放器中的I位和中斷控制寄放器GICR中相應(yīng)的中斷屏蔽位被置“1〞,外部中斷0會(huì)由引腳INT0(PD2)上電平的變化而觸發(fā)。外部中斷0的中斷方式定義如表2—11。
表2—11INT0中斷方式位1位0中斷方式00INT0的低電平產(chǎn)生一個(gè)中斷請(qǐng)求01INT0的下降沿和上升沿都產(chǎn)生一個(gè)中斷請(qǐng)求10INT0的下降沿產(chǎn)生一個(gè)中斷請(qǐng)求11INT0的上升沿產(chǎn)生一個(gè)中斷請(qǐng)求我們用C語(yǔ)言編寫(xiě)了這樣一條語(yǔ)句:MCUCR=0x02;其意思是外部中斷0采用INT0引腳上脈沖下降沿觸發(fā)。
2.通用中斷控制寄放器—GICR
我們用GICR寄放器的控制位定義相應(yīng)外部中斷使能,每一控制位的定義如下。
位7INT1R/W復(fù)位值R/W06INT0R/W05-R04-R03-R02-R010GICRIVSELIVCER/W0R/W0
⑴位7:外部中斷1使能當(dāng)位7置“1〞,同時(shí)狀態(tài)寄放器SREG的I位被置“1〞時(shí)(即開(kāi)啟全局中斷),外部中斷1被使能(開(kāi)放)。即使INT1引腳(即PD3)被定義為輸出方式,其上的有效電平變化仍會(huì)觸發(fā)中斷。
⑵位6:外部中斷0使能當(dāng)位6置“1〞,同時(shí)狀態(tài)寄放器SREG的I位被置“1〞時(shí)(即開(kāi)啟全局中斷),外部中斷0被使能(開(kāi)放)。即使INT0引腳(即PD2)被定義為輸出方式,其上的有效電平變化仍會(huì)觸發(fā)中斷。
3.通用中斷標(biāo)志寄放器—GIFR
位765-R04-R03-R02-R01-R00-R0GIFRINTF1INTF0R/W復(fù)位值R/W0R/W0
⑴當(dāng)INT1引腳(即PD3)上的有效電平觸發(fā)一個(gè)中斷請(qǐng)求后,GIFR寄放
器的位7會(huì)變成“1〞。假使SREG寄放器中的I位和GICR的位7被置“1〞,MCU將跳至相應(yīng)的中斷處開(kāi)始執(zhí)行中斷服務(wù)程序,同時(shí)硬件自動(dòng)將GIFR的位7清零。假使將規(guī)律“1〞寫(xiě)到GIFR的位7,該位將被清零。
⑵當(dāng)INT0引腳(即PD2)上的有效電平觸發(fā)一個(gè)中斷請(qǐng)求后,GIFR寄放器的位6會(huì)變成“1〞。假使SREG寄放器中的I位和GICR的位6被置“1〞,MCU將跳至相應(yīng)的中斷處開(kāi)始執(zhí)行中斷服務(wù)程序,同時(shí)硬件自動(dòng)將GIFR的位6清零。假使將規(guī)律“1〞寫(xiě)到GIFR的位6,該位將被清零。三、單片機(jī)中斷處理過(guò)程
㈠中斷響應(yīng)的條件單片機(jī)在運(yùn)行時(shí),將對(duì)所有中斷源按優(yōu)先級(jí)順序檢測(cè),單片機(jī)響應(yīng)中斷的條件是:
1.中斷源有中斷請(qǐng)求;
2.MCU開(kāi)放全局中斷,即狀態(tài)寄放器SREG的I位置“1〞(用C語(yǔ)言編程時(shí)定義為“SEI();〞);
3.通用中斷控制寄放器GICR的相應(yīng)位置“1〞。滿足以上條件,MCU一般會(huì)響應(yīng)中斷。㈡中斷處理過(guò)程
中斷處理過(guò)程可以分為中斷響應(yīng)、中斷處理和中斷返回3個(gè)階段。1.中斷響應(yīng)
中斷響應(yīng)包括保護(hù)斷點(diǎn)和將程序轉(zhuǎn)向中斷服務(wù)程序的向量入口。當(dāng)有中斷源申請(qǐng)中斷時(shí),先將這些中斷的標(biāo)志位置“1〞,以便MCU采樣每一個(gè)中斷標(biāo)志。MCU根據(jù)具體狀況決定是否響應(yīng)中斷。假使MCU沒(méi)有更急、更重要的任務(wù),則在執(zhí)行完當(dāng)前指令后響應(yīng)中斷申請(qǐng)。
2.中斷處理
中斷處理就是執(zhí)行中斷服務(wù)程序。3.中斷返回
中斷返回就是完成中斷服務(wù)程序后,程序返回到斷點(diǎn)的位置,繼續(xù)執(zhí)行原來(lái)的程序。
四、C語(yǔ)言編制中斷源程序
對(duì)中斷實(shí)現(xiàn)控制,實(shí)質(zhì)上就是對(duì)上面所講的幾個(gè)與中斷有關(guān)的寄放器進(jìn)行管理和控制。只要將這些寄放器的相應(yīng)位依照我們的要求進(jìn)行狀態(tài)預(yù)置,MCU就會(huì)依照我們的意圖對(duì)中斷源進(jìn)行管理和控制。
C語(yǔ)言編制中斷程序的要點(diǎn)如下:
1.程序中必需有“#include〞調(diào)用中斷頭文件的偽指令。2.MCU要開(kāi)放全局中斷,即程序中要么對(duì)狀態(tài)寄放器SREG的I位置“1〞,要么在中斷程序中包含有“SEI();〞語(yǔ)句。一般編程時(shí)采用其次種方式。
3.相應(yīng)中斷控制寄放器(如GICR)相應(yīng)位置“1〞。
4.對(duì)于外部中斷源,還必需用MCUCR寄放器定義中斷方式,是低電平觸發(fā)中斷,還是下降沿,或上升沿觸發(fā)中斷。
5.聲明中斷源入口的中斷向量,書(shū)寫(xiě)格式為:
#pragmainterrupt_handler中斷服務(wù)程序名_isr:中斷向量6.編制中斷服務(wù)程序,書(shū)寫(xiě)格式如下:
#pragmainterrupt_handler中斷服務(wù)程序名_isr:中斷向量void中斷服務(wù)程序名_isr:中斷向量{
中斷服務(wù)程序內(nèi)容}
假使多個(gè)中斷源使用同一個(gè)中斷服務(wù)程序,可以用不同的中斷向量聲明屢屢,如INT0和INT1使用同一個(gè)中斷服務(wù)程序:#pragmainterrupt_handlerint0_isr:2#pragmainterrupt_handlerint0_isr:3voidint0_isr(void){
中斷服務(wù)程序內(nèi)容}
§2.7定時(shí)/計(jì)數(shù)器
在自動(dòng)控制中,往往需要實(shí)時(shí)時(shí)鐘來(lái)實(shí)現(xiàn)定時(shí)或延時(shí),也往往要對(duì)外部事件進(jìn)行計(jì)數(shù)。下面分析定時(shí)/計(jì)數(shù)器的工作原理和Atmega8單片機(jī)的定時(shí)/計(jì)數(shù)器。一、定時(shí)/計(jì)數(shù)器的工作原理
1.定時(shí)/計(jì)數(shù)器的工作原理圖:圖2—12
振蕩器分頻器K1K2加1計(jì)數(shù)器溢出標(biāo)記寄放器溢出中斷請(qǐng)求信號(hào)T0或T1圖2—12
定時(shí)/計(jì)數(shù)器的工作原理
2.振蕩器
振蕩器由單片機(jī)內(nèi)部元件或內(nèi)部元件與相應(yīng)引腳所接的外部元件構(gòu)成,產(chǎn)生一定頻率(如8MHz)的系統(tǒng)時(shí)鐘信號(hào)clkI/O。
3.分頻器
Atmega8中由一個(gè)10位預(yù)定比例分頻器構(gòu)成,它將振蕩器所產(chǎn)生的系統(tǒng)時(shí)鐘信號(hào)按一定比例(如8或64)進(jìn)行分頻,形成符合計(jì)數(shù)器使用的計(jì)數(shù)時(shí)鐘clkT。
4.T0或T1
T0或T1是來(lái)自單片機(jī)外部引腳T0或T1的時(shí)鐘信號(hào)。5.K1、K2
K1、K2是兩個(gè)由定時(shí)/計(jì)數(shù)器控制寄放器TCCR控制的模擬開(kāi)關(guān)。其中,K1控制加1計(jì)數(shù)器是對(duì)內(nèi)部計(jì)數(shù)時(shí)鐘計(jì)數(shù)(或計(jì)時(shí))還是對(duì)外部時(shí)鐘計(jì)數(shù)(或計(jì)時(shí));K2控制加1計(jì)數(shù)器是否開(kāi)始計(jì)數(shù)(或計(jì)時(shí))。
6.加1計(jì)數(shù)器
加1計(jì)數(shù)器是定時(shí)/計(jì)數(shù)器的核心,它的基本功能就是對(duì)輸入給它的脈沖進(jìn)行計(jì)數(shù)。下面談?wù)勁c加1計(jì)數(shù)器的有關(guān)的幾個(gè)基本概念。
⑴計(jì)數(shù)器的容量
無(wú)論是計(jì)數(shù)還是定時(shí),都不能無(wú)限地進(jìn)行,應(yīng)當(dāng)有一個(gè)計(jì)數(shù)次數(shù)、定時(shí)時(shí)間長(zhǎng)短的限制,否則單片機(jī)怎么知道計(jì)數(shù)已滿、定時(shí)時(shí)間已到呢?那么單片機(jī)中的計(jì)數(shù)器有多大容量?對(duì)于8位計(jì)數(shù)器,它的最大計(jì)數(shù)容量是28=256;對(duì)于16位計(jì)數(shù)器,它的最大計(jì)數(shù)容量是216=65536。
⑵初值
計(jì)數(shù)器存在一個(gè)最大的計(jì)數(shù)范圍、最長(zhǎng)的定時(shí)時(shí)間。但在實(shí)際應(yīng)用場(chǎng)合,往往不需要計(jì)數(shù)這么屢屢或定時(shí)這么長(zhǎng)的時(shí)間。這里就涉及到計(jì)數(shù)器初值的問(wèn)題。
譬如一個(gè)空杯最多能裝1000滴水,對(duì)了就溢出。但假使我想讓它滴800滴水就溢出,怎么辦呢?“烏鴉喝水〞給我們很好的啟示,只要在開(kāi)始滴水之前就先往杯里放入200滴水。
對(duì)于計(jì)數(shù)器,其實(shí)也如此。譬如說(shuō)一個(gè)8位的計(jì)數(shù)器,最多能計(jì)256個(gè)脈沖。假使我想讓它計(jì)156個(gè)脈沖就溢出,只要在計(jì)數(shù)開(kāi)始之前在計(jì)數(shù)器中放入100個(gè)脈沖數(shù)就達(dá)到目的了。這個(gè)100就是計(jì)數(shù)器的初值。
⑶溢出
既然計(jì)數(shù)器和我們?nèi)粘J褂玫乃粯?,有一個(gè)最大容量的問(wèn)題。因此,當(dāng)計(jì)數(shù)器計(jì)數(shù)已滿時(shí),假使還繼續(xù)往里面輸入計(jì)數(shù)脈沖,那么它就會(huì)象一個(gè)水杯裝滿水后,假使繼續(xù)往里面滴水,多余的水就會(huì)從水杯中流到地,這就是定時(shí)器的溢出。
日常生活中水杯的溢出和單片機(jī)中計(jì)數(shù)器的溢出,有一致的地方,也有不同之處。兩者不同之處表現(xiàn)在:當(dāng)水杯發(fā)生溢出現(xiàn)象時(shí),只是使多余的水流到杯外,整個(gè)杯中裝滿了水,而計(jì)數(shù)器發(fā)生溢出時(shí),不僅把多余的脈沖“流〞到計(jì)數(shù)器外,而且會(huì)將計(jì)數(shù)器原來(lái)所計(jì)有的脈沖數(shù)全部清空;另外,水杯發(fā)生溢出后,不會(huì)自動(dòng)再往杯中滴水,而計(jì)數(shù)器產(chǎn)生溢出后,它會(huì)自動(dòng)從0開(kāi)始計(jì)數(shù)。假使不想讓它從0開(kāi)始,那么可以對(duì)它重新賦初值,從所賦的初值開(kāi)始計(jì)數(shù)。二、Atmega8單片機(jī)定時(shí)/計(jì)數(shù)器
Atmega8單片機(jī)有3個(gè)定時(shí)/計(jì)數(shù)器:8位的定時(shí)/計(jì)數(shù)器0(T/C0)、16位的定時(shí)/計(jì)數(shù)器1(T/C1)、8位的定時(shí)/計(jì)數(shù)器2(T/C2)。這些定時(shí)/計(jì)數(shù)器除了能夠?qū)崿F(xiàn)尋常的定時(shí)和計(jì)數(shù)功能外,還具有捕獲、比較、脈寬調(diào)制輸出和實(shí)時(shí)時(shí)鐘計(jì)數(shù)等功能。這里我們主要介紹它們的定時(shí)/計(jì)數(shù)功能。
㈠8位定時(shí)/計(jì)數(shù)器0——T/C0
定時(shí)/計(jì)數(shù)器0是一個(gè)單通道計(jì)數(shù)器,可以實(shí)現(xiàn)定時(shí)和對(duì)外部事件計(jì)數(shù),它帶有一個(gè)10位的預(yù)定比例分頻器。下面我們看看與定時(shí)和計(jì)數(shù)有關(guān)的寄放器。
1.T/C0控制寄放器——TCCR0
位765432CS02R/W01CS01R/W00CS00R/W0TCCR0_R/WR復(fù)位值0_R0_R0_R0_R0
TCCR0主要通過(guò)不同的控制位來(lái)實(shí)現(xiàn):①計(jì)數(shù)器的開(kāi)始或中止;②對(duì)內(nèi)部時(shí)鐘計(jì)數(shù)(或定時(shí)),還是對(duì)外部時(shí)鐘計(jì)數(shù)(或定時(shí));③假使是對(duì)內(nèi)部時(shí)鐘計(jì)數(shù)(或定時(shí)),那么采用的預(yù)定分頻比例是多少。具體定義如表2—12。
表2—12T/C0時(shí)鐘源選擇位2位1位0說(shuō)明000無(wú)計(jì)數(shù)時(shí)鐘源(定時(shí)/計(jì)數(shù)器中止)001采用系統(tǒng)時(shí)鐘作為計(jì)數(shù)時(shí)鐘源010采用系統(tǒng)時(shí)鐘的8分頻作為計(jì)數(shù)時(shí)鐘源011采用系統(tǒng)時(shí)鐘的64分頻作為計(jì)數(shù)時(shí)鐘源100采用系統(tǒng)時(shí)鐘的256分頻作為計(jì)數(shù)時(shí)鐘源101采用系統(tǒng)時(shí)鐘的1024分頻作為計(jì)數(shù)時(shí)鐘源110采用T0引腳輸入的外部時(shí)鐘(下降沿驅(qū)動(dòng))111采用T0引腳輸入的外部時(shí)鐘(上升沿驅(qū)動(dòng))2.T/C0中斷屏蔽寄放器——TIMSK位76543210TOIE0TIMSKR/W0OCIE2TOIE2TICIE1OCIE1AOCIE1BTOIE1R/WR/WR/W0R/W0R/W0R/W0R/W0復(fù)位值0_R/W0
TIMSK主要功能之一就是控制T/C0溢出中斷是開(kāi)放還是屏蔽。當(dāng)該寄放器的位0置“1〞,且狀態(tài)寄放器(SREG)的I位置“1〞時(shí),開(kāi)放T/C0的溢出中斷,否則,屏蔽T/C0的溢出中斷。用C語(yǔ)言定義T/C0開(kāi)放溢出中斷的語(yǔ)句如下:
TIMSK=0X01;//T/C0溢出中斷使能SEI();//全局中斷使能
3.T/C0溢出標(biāo)志寄放器——TIFR
位7OCF26TOV2R/W05ICF1R/W04OCF1AR/W03OCF1BR/W02TOV1R/W010TOV0R/W0TIFR_R/W0R/WR/W復(fù)位值0
當(dāng)T/C0產(chǎn)生溢出時(shí),TIFR的位0變?yōu)椤?〞,向MCU提出溢出中斷請(qǐng)求,
這是假使TIMSK的位0也置“1〞(T/C0溢出中斷使能),SREG的I位置“1〞(全局中斷使能),那么MCU轉(zhuǎn)入T/C0溢出中斷向量,執(zhí)行中斷服務(wù)程序,同時(shí)TIFR的位0自動(dòng)清0,為下一次產(chǎn)生溢出中斷作準(zhǔn)備。寫(xiě)入一個(gè)規(guī)律“1〞到TIFR的位0(如:TIFR=0X01),也可以將該位清0。
4.T/C0計(jì)數(shù)寄放器——TCNT0
TCNT0是一個(gè)8位寄放器,主要用于鎖存T/C0計(jì)數(shù)器所記錄的脈沖數(shù)。在用C編程時(shí),主要利用TCNT0給計(jì)數(shù)器賦初值,如:TCNT0=0XB1;//給TCNT0賦初值B1。
㈡16位定時(shí)/計(jì)數(shù)器1——T/C1
定時(shí)/計(jì)數(shù)器1是一個(gè)真正的16位計(jì)數(shù)器,可以實(shí)現(xiàn)定時(shí)和對(duì)外部事件計(jì)數(shù)及捕獲、比較、脈寬調(diào)制輸出的功能,它帶有一個(gè)與T/C0一致的預(yù)定比例分頻器。下面我們介紹它與定時(shí)和計(jì)數(shù)有關(guān)的寄放器。
1.T/C1控制寄放器A——TCCR1A
TCCRA是一個(gè)8位寄放器,其相應(yīng)的位主要用于控制Atmega8比較輸出引腳PB1、PB2的輸出行為及波形發(fā)生器的工作模式等,有關(guān)這些內(nèi)容我們?cè)谄渌鹿?jié)中介紹。
2.T/C1控制寄放器B——TCCR1B
位7654321CS11R/W00CS10TCCR1BR/W0ICNC1ICES1R/WR/WR/W0復(fù)位值0_R0WGM13WGM12CS12R/W0R/W0R/W0
TCCR0的位2、位1、位0的不同組合主要用來(lái)控制:①計(jì)數(shù)器的開(kāi)始或中止;②對(duì)內(nèi)部時(shí)鐘計(jì)數(shù)(或定時(shí)),還是對(duì)外部時(shí)鐘計(jì)數(shù)(或定時(shí));③假使是對(duì)內(nèi)部時(shí)鐘計(jì)數(shù)(或定時(shí)),那么采用的預(yù)定分頻比例是多少。具體定義如表2—13。
表2—13T/C1時(shí)鐘源選擇
位2位1位0說(shuō)明000無(wú)計(jì)數(shù)時(shí)鐘源(定時(shí)/計(jì)數(shù)器中止)001采用系統(tǒng)時(shí)鐘作為計(jì)數(shù)時(shí)鐘源010采用系統(tǒng)時(shí)鐘的8分頻作為計(jì)數(shù)時(shí)鐘源011采用系統(tǒng)時(shí)鐘的64分頻作為計(jì)數(shù)時(shí)鐘源100采用系統(tǒng)時(shí)鐘的256分頻作為計(jì)數(shù)時(shí)鐘源101采用系統(tǒng)時(shí)鐘的1024分頻作為計(jì)數(shù)時(shí)鐘源110采用T1引腳輸入的外部時(shí)鐘(下降沿驅(qū)動(dòng))111采用T1引腳輸入的外部時(shí)鐘(上升沿驅(qū)動(dòng))2.T/C1中斷屏蔽寄放器——TIMSK位76543210TOIE0TIMSKR/W0OCIE2TOIE2TICIE1OCIE1AOCIE1BTOIE1R/WR/WR/W0R/W0R/W0R/W0R/W0復(fù)位值0_R/W0
TIMSK主要功能之一就是控制T/C1溢出中斷是開(kāi)放還是屏蔽。當(dāng)該寄放器的位0置“1〞,且狀態(tài)寄放器(SREG)的I位置“1〞時(shí),開(kāi)放T/C1的溢出中斷,否則,屏蔽T/C1的溢出中斷。用C語(yǔ)言定義T/C1開(kāi)放溢出中斷的語(yǔ)句如下:
TIMSK=0X01;//T/C1溢出中斷使能SEI();//全局中斷使能
3.T/C1溢出標(biāo)志寄放器——TIFR
位7OCF2R/WR/W復(fù)位值06TOV2R/W05ICF1R/W04OCF1AR/W03OCF1BR/W02TOV1R/W010TOV0R/W0TIFR_R/W0
當(dāng)T/C1產(chǎn)生溢出時(shí),TIFR的位0變?yōu)椤?〞,向MCU提出溢出中斷請(qǐng)求,
這是假使TIMSK的位0也置“1〞(T/C1溢出中斷使能),SREG的I位置“1〞(全局中斷使能),那么MCU轉(zhuǎn)入T/C1溢出中斷向量,執(zhí)行中斷服務(wù)程序,同時(shí)TIFR的位0自動(dòng)清0,為下一次產(chǎn)生溢出中斷作準(zhǔn)備。寫(xiě)入一個(gè)規(guī)律“1〞到TIFR的位0(如:TIFR=0X01),也可以將該位清0。
4.T/C1計(jì)數(shù)寄放器——TCNT1H和TCNT1L
TCNT0是一個(gè)16位寄放器,分為高8位計(jì)數(shù)寄放器TCNT1H和低8位計(jì)數(shù)寄放器TCNT1L,主要用于鎖存T/C1計(jì)數(shù)器所記錄的脈沖數(shù)。在用C編程時(shí),主要利用它來(lái)給計(jì)數(shù)器賦初值,其中高8位賦給TCNT1H,低8位賦給TCNT1L如:
TCNT1H=0XFF;//給TCNT1H賦初值FFTCNT1L=0X62;//給TCNT1L賦初值62㈢8位定時(shí)/計(jì)數(shù)器2——T/C2
定時(shí)/計(jì)數(shù)器2是一個(gè)單通道計(jì)數(shù)器,可以實(shí)現(xiàn)對(duì)內(nèi)部時(shí)鐘定時(shí)和計(jì)數(shù),而不能對(duì)外部事件進(jìn)行計(jì)數(shù),它帶有一個(gè)與T/C0和T/C1不同的預(yù)定比例分頻器。下面我們介紹與定時(shí)和計(jì)數(shù)有關(guān)的寄放器。
1.T/C2控制寄放器——TCCR2
位7F
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 國(guó)開(kāi)學(xué)習(xí)網(wǎng)《JavaScript程序設(shè)計(jì)》形考任務(wù)1-3答案
- 關(guān)于裝飾公司合同范例
- 業(yè)主贈(zèng)送鏟車(chē)合同范例
- 平安理財(cái)合同范例
- 房子存量合同范例
- 制造企業(yè)供貨合同范例
- 人身保險(xiǎn)合同范例
- 個(gè)人大貨車(chē)出租合同范例
- 拆解收費(fèi)項(xiàng)目合同范例
- 女裝批發(fā)采購(gòu)合同范例
- 專(zhuān)題08:文言文比較閱讀(原卷版)-2022-2023學(xué)年七年級(jí)語(yǔ)文下學(xué)期期中專(zhuān)題復(fù)習(xí)(浙江專(zhuān)用)
- 鐵路項(xiàng)目施工組織設(shè)計(jì)實(shí)例
- 大學(xué)生心理健康與發(fā)展(高等院校心理健康教育)全套教學(xué)課件
- 廣東省佛山市南海區(qū)2023-2024學(xué)年九年級(jí)上學(xué)期期末考試模擬卷
- DB43-T 2927-2024 中醫(yī)護(hù)理門(mén)診建設(shè)與管理規(guī)范
- 理論力學(xué)(山東科技大學(xué)) 知到智慧樹(shù)網(wǎng)課答案
- 保險(xiǎn)客服正規(guī)勞動(dòng)合同范本
- 中國(guó)音樂(lè)史與名作賞析智慧樹(shù)知到期末考試答案章節(jié)答案2024年山東師范大學(xué)
- MOOC 人工智能導(dǎo)論-浙江工業(yè)大學(xué) 中國(guó)大學(xué)慕課答案
- 第1課 《蓼莪》 公開(kāi)課一等獎(jiǎng)創(chuàng)新教案(表格式)《大學(xué)語(yǔ)文(第四版)》(高職版)
- 京東招聘測(cè)評(píng)題庫(kù)答案大全
評(píng)論
0/150
提交評(píng)論