微控制器指令SJMP小問題,微控制器的一條指令 SJMP 是啥意思

2022-11-17 11:36:03 字數 4643 閱讀 1303

1樓:匿名使用者

指令存放在2個單元裡,那是因為這個指令佔2個位元組,乙個指令位元組,乙個跳轉偏移。

它告訴你這個指令存在什麼地方,是因為sjmp的執行的是相對跳轉,也就是從這個當前位址向前後向後跳多少個位元組。

sjmp rel8 執行的操作如下:

pc = pc + 2 這是sjmp這條指令所占用的空間pc += rel8

所以當執行到sjmp 7eh的時候,pc=20a0h根據這個公式:pc = 20a0h + 2 + 7eh = 2120h,所以最後程式跳轉到2120h執行

2樓:

sjmp rel指令存放在2個單元裡,那是因為這個指令佔2個位元組,乙個指令位元組sjmp,乙個跳轉偏移位址rel。

它告訴你這個指令存在什麼地方,是因為sjmp的執行的是相對跳轉,也就是從這個當前位址向前後向後跳多少個位元組。

sjmp rel8 執行的操作如下:

pc = pc + 2 這是sjmp這條指令所占用的位址空間pc += rel8

所以當執行到sjmp 7eh的時候,pc=20a0h根據這個公式:pc = 20a0h + 2 + 7eh = 2120h,所以最後程式跳轉到2120h執行

微控制器的一條指令: sjmp $ 是啥意思

3樓:布樂正

sjmp $意味著跳轉到該指令的開頭以開始執行,因此它變為迴圈執行,就地跳轉,通常用於等待中斷。

但是本指令也不宜濫用。這是一條死迴圈指令,如果系統的中斷是開放的,那麼sjmp $指令實際上是在等待中斷,當有中斷申請後,cpu 轉至執行中斷服務程式。

1)在51中,與外部儲存器ram打交道的只可以是a累加器。所有需要送入外部ram的資料必需要通過a送去,而所有要讀入的外部ram中的資料也必需通過a讀入。

在此我們可以看出內外部ram的區別了,內部ram間可以直接進行資料的傳遞,而外部則不行,比如,要將外部ram中某一單元(設為0100h單元的資料)送入另乙個單元(設為0200h單元),也必須先將0100h單元中的內容讀入a,然後再送到0200h單元中去。

2)要讀或寫外部的ram,當然也必須要知道ram的位址,在後兩條指令中,位址是被直接放在dptr中的。而前兩條指令,由於ri(即r0或r1)只是乙個8位的暫存器,所以只提供低8位位址。因為有時擴充套件的外部ram的數量比較少,少於或等於256個,就只需要提供8位位址就夠了。

3)使用時應當首先將要讀或寫的位址送入dptr或ri中,然後再用讀寫命令。

4樓:風翼殘念

sjmp $ 意思即跳轉到本指令的起始位置開始執行,這樣就變成了迴圈執行,即原地跳轉,一般用來等待中斷。

但是本指令也不宜濫用。這是一條死迴圈指令,如果系統的中斷是開放的,那麼sjmp $指令實際上是在等待中斷,當有中斷申請後,cpu 轉至執行中斷服務程式。

51微控制器指令。

功能:短轉移(short jump)

格式:sjmp rel ;

作用: pc <-pc+2 , pc <-pc+rel短轉移指令(-128—+127範圍內的轉移指令)。

因此,短轉移指令是一條相對轉移指令,是一條雙位元組雙週期指令,指令碼格式為:80h rel(操作碼 位址偏移量),這裡,80h是sjmp指令的操作碼;rel是位址偏移量,在程式中也常採用符號位址,上機執行前才被代真成二進位制形式。

擴充套件資料:

微控制器指令系統:

mcs-51共111條指令。

指令分類:

1、按指令所佔的位元組來分:

(1)單位元組指令(49條) 如mov a,r2,(機器碼11101010)

(2)雙位元組指令(46條) 如mov a,#0bh,(機器碼74h,0bh)

(3)三位元組指令(16條) 如mov 0bh, #0bh ,(機器碼75h,0bh,0bh)

2、按指令的執行時間來分:(1個機器週期為12個時鐘週期)

(1) 1個機器週期(64條) ,如mov a,r2 mov a,#0bh,

(2) 2個機器週期(45條) ,如mov 0bh, #0bh

(3) 4個機器週期(2條) ,乘、除指令。

指令格式:

一、按操作碼和運算元分。

1、操作碼:用來規定指令進行什麼操作。

如mov a,#0bh,(機器碼74h,0bh)

其中74h為操作碼,指明「將立即數送入acc」這種操作;

如mov a,#0bh,其中#0bh為運算元。

有單位元組指令、雙位元組指令、三位元組不同長度的指令,格式不同:

(1)單位元組指令:操作碼、運算元同在乙個位元組中。

(2)雙位元組指令:操作碼+運算元。

(3)三位元組指令:操作碼+運算元+運算元。

二、按助記符和運算元分:

操作助記符[目的運算元,源運算元]

如mov a,#0bh,(機器碼74h,0bh),其中:

(1)mov為操作助記符, 指明「內部資料傳送」這種操作;

(2)a為目的運算元,指明「資料傳送的目的暫存器」是a;

(3) #0bh為源運算元。

5樓:南霸天

微控制器指令:sjmp $ 意思即跳轉到本指令的起始位置開始執行,這樣就變成了迴圈執行,即原地跳轉,一般用來等待中斷。

但是本指令也不宜濫用。這是一條死迴圈指令,如果系統的中斷是開放的,那麼sjmp $指令實際上是在等待中斷,當有中斷申請後,cpu 轉至執行中斷服務程式。中斷返回時,仍然返回到這條死迴圈指令,繼續等待中斷,而不是返回到該指令的下一條指令。

這是因為執行sjmp $後,pc 仍指向這條指令,中斷的斷點就是[3] 這條指令的首位元組位址。

6樓:淡_水_河_邊

$表示本位址,sjmp $表示迴圈的執行本條指令.

微控制器中 為什麼要用sjmp $

7樓:匿名使用者

這個語句sjmp $ 只有在做測試實驗等的時候才用的(為的是不讓微控制器「跑飛」了),在工程裡面是沒用的。

8樓:做而論道

在需要死迴圈的時候,寫上:sjmp $,即可。

9樓:

微控制器執行到 sjmp $ 時就原地踏步,不再往下執行,也就是死迴圈。

一般主程式的最後一句就是sjmp $,然後往下就是子程式,包括中斷處理程式。

10樓:

sjmp $ 實際中是不會用的,實驗的時候為了好控制才搞的。

微控制器 sjmp

11樓:一蜉蝣

短轉移指令,執行指令後程式跳轉到標號lp1處執行;

sjmp:short jump(短轉移);

12樓:匿名使用者

短跳轉指令,執行指令後程式跳轉到lp1處執行

微控制器中 sjmp $ 什麼意思?

13樓:匿名使用者

微控制器 sjmp $表示重複執行這條指令。

void main()

{ p1=0x00;

while(1)

void delayms()

{ uchar i;

while(10)

for(i=0;i<120;i+ +);

p1=!p1;

2:void timer_init()

tmod=0x01;

th0=(65536-0)/256;

tl0=(65536-0)%256;

tr0=1;

在上面程式1中,0x00表示一種狀態,即表示微控制器p1口八位都是低電位0,而不是表示為等於零無意義。

在程式2中,初值賦為零,則表示整個定時為65.536ms,是該定時方式的最大值,而初值0則僅表示該值為零,沒有任何意義。

在微控制器學習中,數值的表示方法是學習中應引起注意的細節,若不注意,有時因何而錯,都分辨不清。

單片微控制器,它不是完成某乙個邏輯功能的晶元,而是把乙個計算機系統整合到乙個晶元上,相當於乙個微型的計算機。執行中也僅能處理數碼訊號。

微控制器只能識別二進位制數,也就是高低電平1與0。但當數值太大時,用1和0來表示程式中的數值時顯得太繁鎖了,於是便用十六進製制來表示。這樣表示起來方便,通用,

為了讓微控制器按照我們的要求來工作,就必須對它賦予指令也就是編寫程式,在程式中同乙個數值會因應用的位置不一樣,而理解含義就不一樣。

如下面程式1中用十六進製制表示的0x00和定時程式2賦初值時用0(0=0x00)表示的初值。它們在不同程式中所表示的意義也不一樣,理解起來也就不能用同一種思維方式去理解。

14樓:林楊楊楊楊

sjmp是微控制器的短跳轉指令,後面一般跟標號,例如:sjmp here,sjmp $等。sjmp $ 就是跳到此處,也就是原地踏步,讓程式停在此處。

15樓:

跳轉到自己所在在位置

原地踏步

51微控制器組合語言中 sjmp $ 是什麼意思

16樓:夏天的太陽君

就是乙個無限迴圈

sjmp是個短跳轉

$就是當前指令的起始位址

17樓:匿名使用者

原地踏步,用於等待中斷

微控制器加法指令,51微控制器的加法指令到底怎麼加啊,例如12A4H 0FE7H

一 1 微控制器全稱單片微型計算機,就是將cpu 儲存器 i o口等整合在乙個晶元內 2 設定工作模式,設定是否開中斷,置入計數初值 3 p3.0,rxd 序列輸入 p3.1,txd 序列輸出 p3.2,int0 外部中斷0 p3.3,int1 外部中斷1 p3.4,t0 定時器0外部輸入 p3.5...

微控制器通過串列埠控制另外微控制器問題

撒辰狂綺南 沒試過兩個微控制器直接tx對rx,rx對tx。貌似這樣不安全。我試過加上max232的。如圖所示的那種,不要九針底座。u2的t1out可以直接連線到u3的r1in。再u2的r1in直接連線到t1out.另外兩個微控制器的地線一定要相連,即電壓0點相同。可用u2的地線和u3的地線相連即可。...

微控制器程式設計求教,微控制器程式設計問題求教

好奇心較強,把兩個程式都測試了一下。做而論道的匯程式設計序,在自動滅燈之後,再按下按鍵,可以使燈重新開啟 gaplee 的c程式,自動滅燈之後,再按下按鍵,燈還是滅的,必須再按一下,燈才亮。按兩下,燈才亮,恐怕不符合題目的要求。做而論道的匯程式設計序,10秒的亮燈時間,誤差不足11毫秒 gaplee...