關於微控制器的問題,如果程式中要要到三組工作暫存器Rn,如何切換 SP的初值是否要修改?若要,如何修改

時間 2021-09-04 02:40:25

1樓:匿名使用者

以下是個示範,依次切換到工作區0到3

org 0000h

sjmp main

org 0030h

main:

mov sp,#5fh ;將sp設定到60h以後的ram區mov a,#0

lcall setrn

lcall delay

mov a,#1

lcall setrn

lcall delay

mov a,#2

lcall setrn

lcall delay

mov a,#3

lcall setrn

lcall delay

sjmp $

setrn:

jnz setrn1 ;a=0工作區0clr rs0

clr rs1

retsetrn1:

jnz setrn2 ;a=1工作區1setb rs0

clr rs1

retsetrn2:

jnz setrn3 ;a=2工作區2clr rs0

setb rs1

retsetrn3:

jnz setrn1 ;a=3工作區3setb rs0

setb rs1

retdelay:

mov r0,#10

delay1:

mov r1,#100

djnz r1,$

djnz r0,delay1ret

2樓:藏在水中的人

利用 psw :程式狀態字暫存器的 rs1位與rs0位 選擇暫存器區 或者直接定址

sp的初值要跳過 暫存器使用的地址

位4-3: rs1-rs0:暫存器區選擇。

rs1 rs0 暫存器區 地址

0 0 0 0x00-0x07

0 1 1 0x08-0x0f

1 0 2 0x10-0x17

1 1 3 0x18-0x1f

3樓:做而論道

如果程式中要要到三組工作暫存器rn,如何切換?sp的初值是否要修改?

是要修改。

若要,如何修改?

mov sp, #nn ;nn的範圍:18h~7fh (51系列微控制器),注意留出堆疊空間。

微控制器的中斷問題,關於微控制器中斷的問題

那個中斷函式和主函式直接是什麼關係?為什麼寫在主函式後邊但是主函式又沒引用?中斷函式無需被顯式呼叫。當有相應的中斷產生時,程式會自動中止當前的執行 記錄位置,然後跳轉到相應的中斷入口處。而在中斷入口會進行二次跳轉,到程式中對應的中斷處理函式內並執行。中斷處理函式執行完畢返回後,跳回到剛才中止執行的位...

關於微控制器驅動三極體的問題,關於微控制器IO口控制三極體的問題

因為三極體基極電流較大。建議你換成mos管,比如2n7002,只需要極微小電流就可以驅動很大的輸出。 專解決學習難題 這裡的三極體是開關作用,不是放大作用,所以會這樣,驅動不夠,和你刪除程式無關。 單片的io口輸出高電平驅動的很低,是靠內部的上拉電阻供電,電流很小。而低電平的驅動能力就較大,所以你改...

關於微控制器中可位定址空間的問題

很簡單哦 51彙編指令集中,clr指令只有三種用法 clr a clr c clr bit 所以clr 00h中,00h只能表示位了 若是暫存器清零的話,應是mov 00h,0 繆嘉歆祈沉 51微控制器的位定址區問題書上寫著位定址區是20h 2fh,位地址00h 7fh,這不是超過這個位定址區了嘛,...