❶ 試說明51單片機中通用寄存器組的組成情況,對應的物理空間,切換方式以及這種切換方式的用途及優勢
51單片機中通用寄存器組共有8個通用寄存器,分別以R0、R1、R2、R3、R4、R5、R6、R7命名。
51單片機中通用寄存器組使用內部RAM的低32位元組物理空間,被分成4塊,每塊佔用連續8個位元組,由低到高對應R0、R1、R2、R3、R4、R5、R6、R7。
同一時刻,通用寄存器組只能使用一塊內部RAM塊,沒被使用的RAM塊可以用作普通存儲器使用。
通用寄存器組使用內部RAM塊可以切換,切換由改寫PWS寄存器完成,見下圖。通過這種切換,可以方便的保護或者傳遞數據,用在子程序調用、中斷程序中。這種方式的優勢就是速度快。
❷ 單片機課程中@Ri含義是什麼
@Ri這個符號是@R0或@R1 ,也就是寄存器R0或R1的值作為地址。例如:
mov R0,#32H
mov A,@R0
就是將32H單元的內容送給A
❸ 51單片機怎麼擴大R0和R1的定址范圍
你提這個問題之前,需要先搞清楚標准51單片機對片外數據存儲器有哪兩種訪問方法。
一種是16位片外定址,通過 MOVX @DPTR 系列指令實現,即藉助16位的DPTR指針來訪問64kB空間的片外數據存儲器。此時P2口輸出高8位地址信號,P0口分時輸出低8位地址信號、輸入/輸出8位數據信號。
一種是8位片外定址(頁定址),通過 MOVX @Ri 系列指令實現,即藉助8位的Ri指針來訪問當前256B頁面的片外數據存儲器。此時P2口的狀態決定了高8位地址信號(即所謂的頁面號),P0口分時輸出8位頁面內地址信號、輸入/輸出8位數據信號。
所以你應該明白,對於你所提的需求,如果限制了不能使用DPTR,那麼顯然應該用第二種方法,即手工操作P2口切換頁面,之後通過 MOVX @Ri 系列指令來搬運數據。
例如要將X:4800h的16位元組搬運到X:EEF0h開始的16位元組空間內,你可以將R0初始化為00h、R1初始化為F0h,每次先將P2置為48h,MOVX A,@R0,然後將P2置為EFh,MOVX @R1, A,然後R0、R1累加,以此循環16次。
❹ 單片機或ORL指令有什麼作用
ORL能將某些位置一,對於想置一的位與1進行「或」邏輯,對於想保持原來的位與0進行「或」邏輯。
例如:(A) = 1001 1100B = 9CH,(E1) = DFH,(DFH) = 2DH,(R0) = E1H
ORL A, R1意思就是將累加器A中的數據或上R1中的數據,數據保存在A中。
ORL就是或的意思,是寄存器或到累加器中。
例如:(R1)=38H,(A)=26H,則結果是(A)=3EH.
注意事項
ORL為邏輯或指令
ORL A, Rn ;(A) ∨(Rn)→A ,n=0~7
ORL A, direct ;(A) ∨(direct)→A
ORL A, #data ;(A) ∨data→A
ORL A, @Ri ;(A) ∨((Ri))→A,i=0,1
ORL direct, A ;(direct) ∨(A)→direct
ORL direct, #data ;(direct) ∨#data→direct
❺ 51單片機中R0,R1,R2.....都表示的是什麼
stmib
r0!
,{r1,r2}
是指將r1,r2的值保存到r0指向的存儲單元中(r0自動加1)
ldmia
r0!
,{r1,r2}
是指將r0指向的單元中的數據讀出到r1,r2中(r0自動加1)