| ATtiny2313的I/O和外設(shè)都被放在I/O空間?梢允褂肔D/LDS/LDD和ST/STS/STD指令訪問所有的I/O地址,和在32個(gè)通用工作寄存器和I/O空間之間傳遞數(shù)據(jù)。在0x00-0x1F之間的地址可以用SBI和CBI指令直接尋址。在這些寄存器中,單個(gè)位的值可以用SBIS和SBIC指令檢測(cè)。參見指令集獲取更多相關(guān)信息。當(dāng)使用I/O專用指令I(lǐng)N和OUT時(shí),必須使用I/O地址0x00-0x3F。當(dāng)使用LD和ST指令把I/O寄存器作為數(shù)據(jù)空間尋址時(shí),0x20必須被加到這些地址上。(羅畝按:這使我想起來C++中的in和out指令) 為了與未來的器件兼容,如果訪問的話,保留位應(yīng)當(dāng)被寫入零。保留的I/O空間地址永遠(yuǎn)不應(yīng)該被寫入。 通過向其中寫入邏輯1,一些狀態(tài)標(biāo)志被清除。注意,不像大多數(shù)其它的AVR,CBI和SBI指令僅適用于指定的位,所以可以被用在包含這樣的狀態(tài)標(biāo)志的寄存器上。(羅畝按:前面這一句不大明白)CBI和SBI指令只適用于0x00到0x1F之間的地址。 I/O和外設(shè)控制寄存器在后面部分學(xué)習(xí)。 通用I/O寄存器 ATtiny2313包含三個(gè)通用I/O寄存器。這些寄存器可以用來存入任意信息,并且對(duì)于全局變量和狀態(tài)標(biāo)志的存放非常有用。在0x00-0x1F地址范圍內(nèi)的通用I/O寄存器可以使用SBI、CBI、SBIS和SBIC指令直接位尋址。 |