AVR單片機指令系統(tǒng)_第1頁
AVR單片機指令系統(tǒng)_第2頁
AVR單片機指令系統(tǒng)_第3頁
AVR單片機指令系統(tǒng)_第4頁
AVR單片機指令系統(tǒng)_第5頁
已閱讀5頁,還剩4頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

.第五章AVR單片機指令系統(tǒng)計算機的指令系統(tǒng)是一套控制計算機操作的代碼,稱之為機器語言。計算機只好辨別和履行機器語言的指令。為了便于人們理解、記憶和使用,往常用匯編語言指令來描繪計算機的指令系統(tǒng)。匯編語言指令可經(jīng)過匯編器翻譯成計算機能識其他機器語言。AVR單片機指令系統(tǒng)是RISC構(gòu)造的精簡指令集,是一種簡潔易掌握﹑效率高的指令系統(tǒng)。SL-DIY02-3開發(fā)實驗器使用AT90S8535單片機,有118條指令,而我們所做的11個實驗程序僅用了34條指令,我們要點講這34條指令,其他指令便可自學(xué)了。AVR器件(指令速查表)118條指令器件AT90S2313/2323/2343/2333,AT90S4414/4433/4434/8515,AT90S8534/8535算術(shù)和邏輯指令BRCCkC清零轉(zhuǎn)ADDRd,Rr加法BRSHk≥轉(zhuǎn)ADCRd,Rr帶進位加BRLOk小于轉(zhuǎn)(無符號)

ADIWRdl,K加立刻數(shù)BRMIk負(fù)數(shù)轉(zhuǎn)移SUBRd,Rr減法BRPLk正數(shù)轉(zhuǎn)移SUBIRd,Rr減立刻數(shù)BRGEk≥轉(zhuǎn)(帶符號)SBCRd,Rr帶進位減BRLTk小于轉(zhuǎn)(帶符號)SBCIRd,K帶C減立刻數(shù)BRHSkH置位轉(zhuǎn)移

SBIWRdl,K減立刻數(shù)BRHCkH清零轉(zhuǎn)移ANDRd,Rr與BRTSkT置位轉(zhuǎn)移ANDIRd,K與立刻數(shù)BRTCkT清零轉(zhuǎn)移ORRd,Rr或BRVSkV置位轉(zhuǎn)移ORIRd,K或立刻數(shù)BRVCkV清零轉(zhuǎn)移EORRd,Rr異或BRIEk中止地點位轉(zhuǎn)移COMRd取反BRIDk中止位清零轉(zhuǎn)移NEGRd取補數(shù)據(jù)傳遞指令SBRRd,K存放器地點位MOVRd,Rr存放器傳遞CBRRd,K存放器位清零

LDIRd,K裝入立刻數(shù)INCRd加1

LDRd,XX間接取數(shù)DECRd減1

LDRd,X+X間接取數(shù)后+TSTRd測試零或負(fù)

LDRd,-XX間接取數(shù)先-CLRRd存放器清零

LDRd,YY間接取數(shù)SERRd存放器置FF

LDRd,Y+Y間接取數(shù)后+條件轉(zhuǎn)移指令

LDRd,–YY間接取數(shù)先-RJMPk相對轉(zhuǎn)移

LDDRd,Y+qY間接取數(shù)+q

IJMP間接轉(zhuǎn)移(Z)

LDRd,ZZ間接取數(shù)RCALLk相對換用

LDRd,Z+Z間接取數(shù)后+

ICALL間接調(diào)用(Z)

LDRd,–ZZ間接取數(shù)先-RET子程序返回

LDDRd,Z+qZ間接取數(shù)+qRETI中止返回

LDSRd,K從SRAM裝入CPSERd,Rr比較相等跳行

STX,RrX間接存數(shù)CPRd,Rr比較

STX+,RrX間接存數(shù)后+CPCRd,Rr帶進位比較

ST–X,RrX間接存數(shù)先-CPIRd,K與立刻數(shù)比較

STY,RrY間接存數(shù)SBRCRr,b位清零跳行

STY+,RrY間接存數(shù)后+SBRSRr,b地點位跳行

ST–Y,RrY間接存數(shù)先-SBICP,bI/O位清零跳行

STDY+q,RrY間接存數(shù)+qSBISP,bI/O地點位跳行STZ,RrZ間接存數(shù)BRBSs,kSREG地點位轉(zhuǎn)

STZ+,RrZ間接存數(shù)后+BRBCs,kSREG位清零轉(zhuǎn)

ST–Z,RrZ間接存數(shù)先-BREQk相等轉(zhuǎn)移

STDZ+q,RrZ間接存數(shù)+qBRNEk不相等轉(zhuǎn)移

STSk,,Rr數(shù)據(jù)送SRAM

位指令和位測試指令SBIP,b置位I/O位CBIP,b清零I/O位LSLRd左移LSRRd右移ROLRd帶進位左循環(huán)RORRd帶進位右循環(huán)ASRRd算術(shù)右移SWAPRd半字節(jié)互換BSETs置位SREGBCLRs清零SREGBSTRr,bRr的b位送TBLDRdT送Rr的b位SEC置位CCLC清零CSEN置位NCLN清零NSEZ置位ZCLZ清零ZSEI置位ICLI清零ISES置位SCLS清零SSEV置位VCLV清零VSET置位TCLT清零TSEH置位HCLH清零HNOP空操作SLEEP休眠指令WDR看門狗復(fù)位條指令為Attiny11/12/15/22=+89條基本指令是AT90S1200118條指令器件=

+90條指令器件..BRCSkC置位轉(zhuǎn)□LPMINRd,POUTP,RdrPUSHRrPOPRd,

.從程序區(qū)取數(shù)從I/O口取數(shù)存數(shù)I/O口壓棧出棧說明:SL-DIY02-3開發(fā)實驗器的11個實驗程序例子,僅用34條指令(以紅色表示)1.不帶進位加法ADD一不帶進位加說明:兩個存放器不帶進位C標(biāo)記加,結(jié)果送目的存放器Rd。操作:RdRd+Rr語法:操作碼:程序計數(shù)器:ADDRd,RrO≤d≤31,0≤r≤31PCPC+1例子:。(實踐操作程序4411.ASM)實踐操作例子*.ASM,一定編譯生成*.OBJ文件才可調(diào)試,如要改正*.ASM,一定改正文件屬性,去掉*.ASM只讀文件屬性2.帶進位加法ADC-一帶進位加說明:兩個存放器和C標(biāo)記的內(nèi)容相加,結(jié)果送目的存放器Rd。操作:Rd←Rd+Rr+C語法:操作碼:程序計數(shù)器:ADCRd,Rr0≤d≤31,0≤r≤31PC←PC+1例子:(實踐操作程序4412.ASM)3.減1指令DEC一減1說明:存放器Rd的內(nèi)容減1,結(jié)果送目的存放器Rd中。操作:RdRd-l語法:操作碼:程序計數(shù)器:DECRd0≤d≤31PCPC十1例子:(實踐操作程序4426.ASM)4.立刻數(shù)比較CPI——帶立刻數(shù)比較說明:該指令達成存放器Rd和常數(shù)的比較操作。存放器的內(nèi)容不改變。該指令后能使用全部條件轉(zhuǎn)移指令。操作:Rd-K語法:操作碼:程序計數(shù)器:CPIRd,K16≤d≤31,0≤K≤255PCPC+1例子:(實踐操作程序4463.ASM)5.帶立刻數(shù)與ANDI——立刻數(shù)邏輯與;全1為1,有0即0說明:存放器Rd的內(nèi)容與常數(shù)邏輯與,結(jié)果送目的存放器Rd。應(yīng)用:清0,使某位為0,用0去與;保存,用1去邏輯與;代硬件與門操作:RdRd·K;語法:操作碼:程序計數(shù)器:ANDIRdK16≤d≤31,0≤K≤255PCPC+1例子:(實踐操作程序4472.ASM)6.存放器邏輯或...OR一邏輯或;有1即1,全0為0,應(yīng)用:置數(shù),使某位為1,用1去或;保存,用0去邏輯或;代硬件或門說明:達成存放器Rd與存放器Rr的內(nèi)容邏輯或操作,結(jié)果進目的存放器Rd中。操作:RdRd∨Rr語法:操作碼:程序計數(shù)器:ORRdRr0≤d≤31,0≤r≤31PCPC+1例子:(實踐操作程序4481.ASM)7.消除存放器CLR-一存放器清零說明:存放器清零。該指令采納存放器Rd與自己的內(nèi)容相異或?qū)崿F(xiàn)的。存放器的全部位都被清零。操作:RdRd⊕Rd語法:操作碼:程序計數(shù)器:CLRRd0≤d≤31PCPC+1例子:(實踐操作程序4492.ASM)8.相對跳轉(zhuǎn)RJMP一相對跳轉(zhuǎn)說明:相對跳轉(zhuǎn)到PC-2K和PC+2K(字)范圍內(nèi)的地點。在匯編程序中,標(biāo)號用于替代相對操作。AVR微控制器的程序儲存器空間不超出4K字(8K字節(jié)),該指令能尋址整個儲存器空間的每個地點地點。操作:PC(PC+1)+k語法:操作碼:程序計數(shù)器:RJMPk—2K≤k≤2KPC(PC+1)+k例子:(實踐操作程序4511.ASM)9.相等轉(zhuǎn)移BREQ相等轉(zhuǎn)移說明:條件相對轉(zhuǎn)移,測試零標(biāo)記(Z),假如Z位被置位,則相對PC值轉(zhuǎn)移。假如在履行CP、CPI、SUB或SUBI指令后立刻履行該指令,且當(dāng)存放器Rd中無符號或有符號二進制數(shù)與存放器Rr中無符號或有符號H進制數(shù)相等時,轉(zhuǎn)移將發(fā)生。操作:IfRd=Rr(z=1)thenPC(PC十1)+k,PCPC十1語法:操作碼:程序計數(shù)器:BREQk-64≤k≤+63PC(PC+1)+kPCPC+l例子:(實踐操作程序4523.ASM)10.不相等轉(zhuǎn)移BRNE——不相等轉(zhuǎn)移說明:條件相對轉(zhuǎn)移,測試零標(biāo)記(Z),假如Z位被清零,則相對PC值轉(zhuǎn)移。假如在履行CP。CPI、SUB或SUBI指令后立刻履行該指令,且當(dāng)在存放器Rd中的無符號或帶符號二進制數(shù)不等于存放器Rr中的無符號或帶符號二進制數(shù)時,轉(zhuǎn)移將發(fā)生。該指令相對PC轉(zhuǎn)移的方向為:PC-64≤目的≤PC+63。參數(shù)K為PC的偏移,用2的補碼表示(相當(dāng)于指令BRBCIK)。操作,IfRd≠Rr(Z=0)thenPC(PC+1)+k,elesPCPC+1語法:操作碼:程序計數(shù)器:BRNEk-64≤k≤+63PC(PC+1)+k...PCPC+l例子:(實踐操作程序4524.ASM)11.存放器位清零跳行SBRC一存放器位被清零跳行說明:該指令測試存放器某位,假如該位被清零,則跳下一行履行指令。操作:IfRd(b)=0thenPCPC+2(or3)elesPCPC+1語法:操作碼:程序計數(shù)器:SBRCRr,b0≤r≤31,0≤b≤7PCPC十1pCpC+2PCPC+3例子:(實踐操作程序45222.ASM)12.存放器地點位跳行SBRS一存放器地點位跳行說明:該指令測試存放器某位,假如該位被置位,則跳下一行履行指令。操作:IfRr(b)=lthenPCPC+2(or3)elesPCPC+l語法:操作碼:程序計數(shù)器:SBRSRr,b≤r≤31,0≤b≤7PCPC+1PCPC+2PCPC+3例子:(實踐操作程序45223.ASM)13.I/O存放器地點位跳行SBIS-I/O存放器的地點位跳行說明:該指令測試1/O存放器某位,假如該位被置位,則跳一行履行指令。該指令在低32個1/O存放器內(nèi)操作,地點為0~31。操作:IfI/OP,b=lthenPCPC+2(or3)elsePCPC+1語法:操作碼:程序計數(shù)器:SBISp,b0≤P≤31,0≤b≤7PCPC+1PCPC+2PCPC+3例子:(實踐操作程序45225.ASM)14.相對換用RCALL——相對換用于程序說明:在PC+1后(2K字(4K字節(jié))范圍內(nèi)調(diào)用子程序。返回地點(RCALL后的指令地點)存儲到貨倉(見CALL)。操作:PC(PC+1)+k語法:操作碼:程序計數(shù)器:RCALLk-2K≤k≤2KPC(PC+1)+k例子:(實踐操作程序DIP40LED.ASM)15.從子程序返回RET——子程序返回說明:從子程序返回。返回地點從貨倉中彈出。操作:PC(15-0)STACKPC(21-0)STACK語法:操作碼:程序計數(shù)器:貨倉:RETNoneSeeOperationSPSP+2RETNoneSeeOperationSPSP+3...例子:(實踐操作程序見DIP40LED.ASM)16.從中止程序返回RETI——中止返回說明:從中止程序中返回。返回地點從貨倉中彈出,且全局中止標(biāo)記被置位。注意:1.主程序應(yīng)跳過中止區(qū),防備改正增補中止程序帶來麻煩;不用的中止進口地點寫上RETI-中止返回,有抗擾亂作用;操作:PC(15-0)STACKPC(21-0)STACK語法:操作碼:程序計數(shù)器:貨倉:RETINoneSeeOperationSPSP十2RETINoneSeeOperationSPSP+3例子:(程序45230.ASM,摘自”樂曲.ASM”部分程序,僅供參照),能履行程序請閱”樂曲.ASM”程序及AVR單片機在少兒智能玩具中的應(yīng)用--音樂玩具(電腦放音機)一文17.存放器拷貝數(shù)據(jù)MOV存放器拷貝說明:該指令將一個存放器拷貝到另一個存放器。源存放器Rr的內(nèi)容不改變,而目的存放器Rd拷貝了Rr的內(nèi)容。操作:Rd←Rr語法:操作碼:程序計數(shù)器:MOVRdRr0≤d≤31,0≤r≤31PCPC+1例子:(實踐操作程序4611.ASM)18.SRAM數(shù)據(jù)直接送存放器LDS直接從SRAM裝入說明:把SRAM中1個字節(jié)裝入到存放器。一定供給一個16位地點。儲存器接見被限制在目前64K字節(jié)的SRAM頁。超出64K字節(jié),LDS指令使用RAMPZ存放器接見。操作:Rd(k)語法:操作碼:程序計數(shù)器:LDSRdk0≤d≤31,0≤k≤65535PCPC+2例子:(實踐操作程序4612.ASM)19.存放器數(shù)據(jù)直接送SRAMSTS存放器數(shù)據(jù)直接送SRAM說明:將存放器的內(nèi)容直接儲存到SRAM。一定供給一個16位的地點。儲存器接見被限制在目前64K字節(jié)的SRAM頁。STS指令使用RAMPZ存放器接見儲存器可超出64K字節(jié)。操作:(k)Rr語法:操作碼:程序計數(shù)器:STSk,Rr0≤r≤31,0≤k≤65535PCPC+2例子:(實踐操作程序4613.ASM與4612.ASM同樣)20.立刻數(shù)送存放器LDI——裝入立刻數(shù)說明:裝入一個8位立刻數(shù)到存放器R16~R31中。操作:RdK語法:操作碼:程序計數(shù)器:...LDIRdK16≤d≤31,0≤K≤255PCPC+2例子:(實踐操作程序4614.ASM)使用變址Z間接將SRAM中的內(nèi)容傳遞到存放器LD(LDD)——使用變址Z間接將SRAM中的內(nèi)容傳遞到存放器說明:帶或不帶偏移間接從SRAM中傳遞一個字節(jié)到存放器,SRAM中的地點由存放器區(qū)中的Z(16位)指針存放器指出。儲存器接見被限制在目前64K字節(jié)的SRAM頁中。為接見此外SRAM頁,則I/O范圍內(nèi)的存放器RAMPZ需改變。在指令履行后,Z指針存放器值要么不改變,要么就加1或減1操作。使用Z指針存放器的這些特征,特別合適于貨倉指針,由于Z指針存放器能用于直接子程序調(diào)用,直接跳轉(zhuǎn)和查表。Z指針存放器用作為專用貨倉指針要比X、Y指針方便。用Z指針在程序儲存器中查表,可拜見LPM指令。操作:Rd(Z)Rd(Z)ZZ-1Rd(Z+q)語法:操作碼:操作流程:程序計數(shù)器:LDRd,Z0≤d≤31送數(shù),Z指針不改變PCPC+1LDRdZ+0≤d≤31先送數(shù),后Z指針加1PCPC+1LDRd,-Z0≤d≤31先Z指針減1,后送數(shù)PCPC+lLDDRdZ+q0≤d≤31,先Z指針加q,后送數(shù),PCPC+10≤q≤63履行后Z指針(Z不含q)不變例子:(實踐操作程序4625.ASM)LPM——裝入程序儲存器說明:將Z存放器指向的一個字節(jié)傳遞到存放器0(RO)。該指令使100%空間有效,常量初始化或常數(shù)取數(shù)特別實用。程序儲存器被編為16位字,Z(16位)指針的最低位(LSB)選擇為0是低字節(jié),選擇為1是高字節(jié)。該指令能尋址程序儲存器第一個64K字節(jié)(32字)。操作:R0(Z)語法:操作碼:程序計數(shù)器:LPMNonePCPC+1例子:(實踐操作程序4631.ASM,更詳盡資料閱”按鈕猜數(shù).ASM”)23.I/O口數(shù)據(jù)傳遞到存放器IN——I/O口數(shù)據(jù)傳遞到存放器說明:將I/O空間(口,準(zhǔn)時器,配置存放器等)的數(shù)據(jù)傳遞到存放器區(qū)中的存放器Rd中。操作:RdP語法:操作碼:程序計數(shù)器:INRdPO≤d≤31,0≤P≤63PCPC+1例子:(實踐操作程序4641.ASM)24.存放器數(shù)據(jù)送I/O口OUT存放器數(shù)據(jù)送I/O口說明:將存放器區(qū)中存放器Rr的數(shù)據(jù)傳遞到I/0空間(口、準(zhǔn)時器、配置存放器等)。操作:PRr語法:操作碼:程序計數(shù)器:OUTP,Rr0≤r≤31,0≤P≤63PCPC十1例子:(實踐操作程序4642.ASM)25.進棧指令PUSH——壓存放器到貨倉說明:該指令儲存存放器Rr的內(nèi)容到貨倉。操作:STACKRr...語法:操作碼:程序計數(shù)器:PUSHRrO≤d≤31PCPC+1SPSP-1例子:(實踐操作程序4651.ASM)26.出棧指令POP——貨倉彈出到存放器說明:該指令將貨倉中的字節(jié)裝入到存放器Rd中。操作:RdSTACK語法:操作碼:程序計數(shù)器:POPRd0≤d≤31PCPC+1SPSP+1例子:(實踐操作程序4652.ASM)27.經(jīng)過進位左循環(huán)ROL—經(jīng)過進位左循環(huán)說明:存放器Rd的全部位左移1位,C標(biāo)記被移到Rd的第0位,Rd的第7位移到C標(biāo)記。操作:語法:操作碼:程序計數(shù)器:ROLRd0≤d≤31PCPC+1例子:(實踐操作程序4713.ASM)28.ROR——經(jīng)過進位右循環(huán)說明:存放器Rd的全部位右移1位,C標(biāo)記被移到Rd的第7位,Rd的第0位移到C標(biāo)記。操作:語法:操作碼:程序計數(shù)器:RORRd0≤d≤31PCPC+1例子:(實踐操作程序4714.ASM)29.置I/O存放器的位SBI——置I/O存放器的位說明:對I/O存放器指定的地點位,該指令在低32個I/O存放器內(nèi)操作,I/O存放器地址為0~31。操作:I/O(Pb)1語法:操作碼:程

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論