導航:首頁 > 操作系統 > 單片機怎麼放指令

單片機怎麼放指令

發布時間:2023-02-01 19:15:20

A. 單片機中的一條指令的用法

主要目的:
end 表示程序至此結束了,編譯器就編譯到這就停了.可以產生正確的最後一個機器碼.
把機器碼寫進單片機並執行,當執行完最後這個機器碼後(指令),如果這個最後機器碼不是跳轉類形的指令,單片機就要執行下一個機器碼(指令),下一個機器碼不是由程序產生的,所以執行它就會產生不可預測的情況(程序跑飛了),為了防止這種事態發生,在end前加一條死循環指令SJMP $,讓編譯器編譯出程序的最後一個機器碼是跳轉指令,而且是一條跳向自身的地址的指令
SJMP $,使單片機重復執行最後這個機器碼,而不會往下執行錯誤的指令,防止程序跑飛.
====================================
放在主程序結尾,或某個位置,可以認為是在等待中斷發生.

B. 自學單片機匯編,求大神解釋,指令是怎麼執行的

PUSH 10H ;將10H的數據壓入堆棧

PUSH 20H ;將20H的數據壓入堆棧
由於堆棧是從下往上壓入,所以10H的數據在下面一層,20H的數據在上面一層;
POP 10H ;將堆棧數據上層釋放到10H
POP 20H ;將堆棧下面一層的數據釋放到20H
這樣,兩個數值就交換了;你看下堆棧的特性就知道了,存是由下往上,取是從上往下。

C. 單片機系統指令的位操作指令

一、數據位傳送指令
MOV C,bit
MOV bit,C
如MOV C,06H ;(20H).6→Cy
06H是內部RAM 20H位元組位6的位地址。
MOV P1.0,C ;Cy→P1.0
可定址位的具體定義:從20H單元的第一位開始一直到2FH單元的最後一位分別為00H~7FH以及特殊功能寄存器中80H~F7H。
二、位變數修改指令
CLR C ;清「0」Cy
CLR bit ;清「0」bit位
CPL C ;Cy求反
CPL bit ;bit位求反
SETB C ;置「1」 Cy
SETB bit ;置「1」bit位
三、位變數邏輯與指令
ANL C,bit ;bit ∧Cy →Cy
ANL C,/bit; ;/ bit ∧Cy →Cy
四、位變數邏輯或指令
ORL C,bit ;bit ∨ Cy →Cy
ORL C,/bit ;/ bit ∨ Cy →Cy
五、條件轉移類指令
JC rel ;如果進位位Cy=1,則轉移
JNC rel ;如果進位位Cy=0,則轉移
JB bit,rel ;如果直接定址位=1,則轉移
JNB bit,rel ;如果直接定址位=0,則轉移
JBC bit,rel ;如果直接定址位=1,則轉移,並對bit位清0

D. 單片機數據傳送類指令

數據傳送類指令: 1 MOV A,Rn 寄存器內容送入累加器 2 MOV A,direct 直接地址單元中的數據送入累加器 3 MOV A,@Ri 間接RAM 中的數據送入累加器 4 MOV A,#tata 立即數送入累加器 5 MOV Rn,A 累加器內容送入寄存器 6 MOV Rn,direct 直接地址單元中的數據送入寄存器 7 MOV Rn,#data 立即數送入寄存器 8 MOV direct,A 累加器內容送入直接地址單元 9 MOV direct,Rn 寄存器內容送入直接地址單元 10 MOV direct,direct 直接地址單元中的數據送入另一個直接地址單元 11 MOV direct,@Ri 間接RAM 中的數據送入直接地址單元 12 MOV direct,#data 立即數送.

E. 怎麼在單片機C51語言中使用AT指令

用C語言寫,如WriteUART0(char*p),其中p是緩沖區指針,那麼AT命令程序如下:
WriteUART0(「AT+CSCA=\"+8613010180500\"r」);//設置簡訊中心號碼
WriteUART0(「AT+CMGF=1\"r」);//設置為Text模式
.......

F. 單片機的基本指令有哪些

不知道你是問的哪種單片機下面給你的是MCS-51的,希望對你有幫助,如有,麻煩採納,謝謝 數據傳送指令共有29條,數據傳送指令一般的操作是把源操作數傳送到目的操作數,指令執行完成後,源操作數不變,目的操作數等於源操作數。如果要求在進行數據傳送時,目的操作數不丟失,則不能用直接傳送指令,而採用交換型的數據傳送指令,數據傳送指令不影響標志C,AC和OV,但可能會對奇偶標志P有影響。 x0dx0ax0dx0a[1]. 以累加器A為目的操作數類指令(4條) x0dx0a這4條指令的作用是把源操作數指向的內容送到累加器A。有直接、立即數、寄存器和寄存器間接定址方式: x0dx0ax0dx0aMOV A,data ;(data)→(A) 直接單元地址中的內容送到累加器A x0dx0aMOV A,#data ;#data→(A) 立即數送到累加器A中 x0dx0aMOV A,Rn ;(Rn)→(A) Rn中的內容送到累加器A中 x0dx0aMOV A,@Ri ;((Ri))→(A) Ri內容指向的地址單元中的內容送到累加器A x0dx0ax0dx0a[2]. 以寄存器Rn為目的操作數的指令(3條) x0dx0a這3條指令的功能是把源操作數指定的內容送到所選定的工作寄存器Rn中。有直接、立即和寄存器定址方式: x0dx0ax0dx0aMOV Rn,data ;(data)→(Rn) 直接定址單元中的內容送到寄存器Rn中 x0dx0aMOV Rn,#data ;#data→(Rn) 立即數直接送到寄存器Rn中 x0dx0aMOV Rn,A ;(A)→(Rn) 累加器A中的內容送到寄存器Rn中 x0dx0ax0dx0a[3]. 以直接地址為目的操作數的指令(5條) x0dx0a這組指令的功能是把源操作數指定的內容送到由直接地址data所選定的片內RAM中。有直接、立即、寄存器和寄存器間接4種定址方式: x0dx0ax0dx0aMOV data,data ;(data)→(data) 直接地址單元中的內容送到直接地址單元 x0dx0aMOV data,#data ;#data→(data) 立即數送到直接地址單元 x0dx0aMOV data,A ;(A)→(data) 累加器A中的內容送到直接地址單元 x0dx0aMOV data,Rn ;(Rn)→(data) 寄存器Rn中的內容送到直接地址單元 x0dx0aMOV data,@Ri ;((Ri))→(data) 寄存器Ri中的內容指定的地址單元中數據送到直接地址單元 x0dx0ax0dx0a[4]. 以間接地址為目的操作數的指令(3條) x0dx0a這組指令的功能是把源操作數指定的內容送到以Ri中的內容為地址的片內RAM中。有直接、立即和寄存器3種定址方式: x0dx0ax0dx0aMOV @Ri,data ;(data)→((Ri)) 直接地址單元中的內容送到以Ri中的內容為地址的RAM單元 x0dx0aMOV @Ri,#data ;#data→((Ri)) 立即數送到以Ri中的內容為地址的RAM單元 x0dx0aMOV @Ri,A ;(A)→((Ri)) 累加器A中的內容送到以Ri中的內容為地址的RAM單元 x0dx0ax0dx0a[5]. 查表指令(2條) x0dx0a這組指令的功能是對存放於程序存儲器中的數據表格進行查找傳送,使用變址定址方式: x0dx0ax0dx0aMOVC A,@A+DPTR ;((A))+(DPTR)→(A) 表格地址單元中的內容送到累加器A中 x0dx0aMOVC A,@A+PC ;((PC))+1→(A),((A))+(PC)→(A) 表格地址單元中的內容送到累加器A中 x0dx0ax0dx0a[6]. 累加器A與片外數據存儲器RAM傳送指令(4條) x0dx0a這4條指令的作用是累加器A與片外RAM間的數據傳送。使用寄存器定址方式: x0dx0ax0dx0aMOVX @DPTR,A ;(A)→((DPTR)) 累加器中的內容送到數據指針指向片外RAM地址中 x0dx0aMOVX A, @DPTR ;((DPTR))→(A) 數據指針指向片外RAM地址中的內容送到累加器A中 x0dx0aMOVX A, @Ri ;((Ri))→(A) 寄存器Ri指向片外RAM地址中的內容送到累加器A中 x0dx0aMOVX @Ri,A ;(A)→((Ri)) 累加器中的內容送到寄存器Ri指向片外RAM地址中 x0dx0ax0dx0a[7]. 堆棧操作類指令(2條) x0dx0a這4類指令的作用是把直接定址單元的內容傳送到堆棧指針SP所指的單元中,以及把SP所指單元的內容送到直接定址單元中。這類指令只有兩條,下述的第一條常稱為入棧操作指令,第二條稱為出棧操作指令。需要指出的是,單片機開機復位後,(SP)默認為07H,但一般都需要重新賦值,設置新的SP首址。入棧的第一個數據必須存放於SP+1所指存儲單元,故實際的堆棧底為SP+1所指的存儲單元。 x0dx0ax0dx0aPUSH data ;(SP)+1→(SP),(data)→(SP) 堆棧指針首先加1,直接定址單元中的數據送到堆棧指針SP所指的單元中 x0dx0aPOP data ;(SP)→(data)(SP)-1→(SP), 堆棧指針SP所指的單元數據送到直接定址單元中,堆棧指針SP再進行減1操作 x0dx0ax0dx0a[8]. 交換指令(5條) x0dx0a這5條指令的功能是把累加器A中的內容與源操作數所指的數據相互交換。 x0dx0ax0dx0aXCH A,Rn ;(A)←→(Rn)累加器與工作寄存器Rn中的內容互換 x0dx0aXCH A,@Ri ;(A)←→((Ri))累加器與工作寄存器Ri所指的存儲單元中的內容互換 x0dx0aXCH A,data ;(A)←→(data)累加器與直接地址單元中的內容互換 x0dx0aXCHD A,@Ri ;(A 3-0 )←→((Ri) 3-0 )累加器與工作寄存器Ri所指的存儲單元中的內容低半位元組互換 x0dx0aSWAP A ;(A 3-0 )←→(A 7-4 )累加器中的內容高低半位元組互換 x0dx0ax0dx0a[9]. 16位數據傳送指令(1條) x0dx0a這條指令的功能是把16位常數送入數據指針寄存器。 x0dx0ax0dx0aMOV DPTR,#data16 ;#dataH→(DPH),#dataL→(DPL)16位常數的高8位送到DPH,低8位送到DPL x0dx0ax0dx0aMCS-51算術運算指令 x0dx0ax0dx0a算術運算指令共有24條,算術運算主要是執行加、減、乘、除法四則運算。另外MCS-51指令系統中有相當一部分是進行加、減1操作,BCD碼的運算和調整,我們都歸類為運算指令。雖然MCS-51單片機的算術邏輯單元ALU僅能對8位無符號整數進行運算,但利用進位標志C,則可進行多位元組無符號整數的運算。同時利用溢出標志,還可以對帶符號數進行補碼運算。需要指出的是,除加、減1指令外,這類指令大多數都會對PSW(程序狀態字)有影響。這在使用中應特別注意。 x0dx0ax0dx0a[1]. 加法指令(4條) x0dx0a這4條指令的作用是把立即數,直接地址、工作寄存器及間接地址內容與累加器A的內容相加,運算結果存在A中。 x0dx0ax0dx0aADD A,#data ;(A)+#data→(A) 累加器A中的內容與立即數#data相加,結果存在A中 x0dx0aADD A,data ;(A)+(data)→(A) 累加器A中的內容與直接地址單元中的內容相加,結果存在A中 x0dx0aADD A,Rn ;(A)+(Rn)→(A) 累加器A中的內容與工作寄存器Rn中的內容相加,結果存在A中 x0dx0aADD A,@Ri ;(A)+((Ri))→(A) 累加器A中的內容與工作寄存器Ri所指向地址單元中的內容相加,結果存在A中 x0dx0ax0dx0a[2]. 帶進位加法指令(4條) x0dx0a這4條指令除與[1]功能相同外,在進行加法運算時還需考慮進位問題。 x0dx0ax0dx0aADDC A,data ;(A)+(data)+(C)→(A) 累加器A中的內容與直接地址單元的內容連同進位位相加,結果存在A中 x0dx0aADDC A,#data ;(A)+#data +(C)→(A) 累加器A中的內容與立即數連同進位位相加,結果存在A中 x0dx0aADDC A,Rn ;(A)+Rn+(C)→(A) 累加器A中的內容與工作寄存器Rn中的內容、連同進位位相加,結果存在A中 x0dx0aADDC A,@Ri ;(A)+((Ri))+(C)→(A) 累加器A中的內容與工作寄存器Ri指向地址單元中的內容、連同進位位相加,結果存在A中 x0dx0ax0dx0a[3]. 帶借位減法指令(4條) x0dx0a這組指令包含立即數、直接地址、間接地址及工作寄存器與累加器A連同借位位C內容相減,結果送回累加器A中。 x0dx0a這里我們對借位位C的狀態作出說明,在進行減法運算中,CY=1表示有借位,CY=0則無借位。OV=1聲明帶符號數相減時,從一個正數減去一個負數結果為負數,或者從一個負數中減去一個正數結果為正數的錯誤情況。在進行減法運算前,如果不知道借位標志位C的狀態,則應先對CY進行清零操作。 x0dx0ax0dx0aSUBB A,data ;(A)-(data) - (C)→(A) 累加器A中的內容與直接地址單元中的內容、連同借位位相減,結果存在A中 x0dx0aSUBB A,#data ;(A)-#data -(C)→(A) 累加器A中的內容與立即數、連同借位位相減,結果存在A中 x0dx0aSUBB A,Rn ;(A)-(Rn) -(C)→(A) 累加器A中的內容與工作寄存器中的內容、連同借位位相減,結果存在A中 x0dx0aSUBB A,@Ri ;(A)-((Ri)) -(C)→(A) 累加器A中的內容與工作寄存器Ri指向的地址單元中的內容、連同借位位相減,結果存在A中 x0dx0ax0dx0a[4]. 乘法指令(1條) x0dx0a這個指令的作用是把累加器A和寄存器B中的8位無符號數相乘,所得到的是16位乘積,這個結果低8位存在累加器A,而高8位存在寄存器B中。如果OV=1,說明乘積大於FFH,否則OV=0,但進位標志位CY總是等於0。 x0dx0ax0dx0aMUL AB ;(A)×(B)→(A)和(B) 累加器A中的內容與寄存器B中的內容相乘,結果存在A、B中 x0dx0ax0dx0a[5]. 除法指令(1條) x0dx0a這個指令的作用是把累加器A的8位無符號整數除以寄存器B中的8位無符號整數,所得到的商存在累加器A,而余數存在寄存器B中。除法運算總是使OV和進位標志位CY等於0。如果OV=1,表明寄存器B中的內容為00H,那麼執行結果為不確定值,表示除法有溢出。 x0dx0ax0dx0aDIV AB ;(A)÷(B)→(A)和(B) 累加器A中的內容除以寄存器B中的內容,所得到的商存在累加器A,而余數存在寄存器B中。 x0dx0ax0dx0a[6]. 加1指令(5條) x0dx0a這5條指令的的功能均為原寄存器的內容加1,結果送回原寄存器。上述提到,加1指令不會對任何標志有影響,如果原寄存器的內容為FFH,執行加1後,結果就會是00H。這組指令共有直接、寄存器、寄存器減間址等定址方式: x0dx0ax0dx0aINC A ;(A)+1→(A) 累加器A中的內容加1,結果存在A中 x0dx0aINC data ;(data)+1→(data) 直接地址單元中的內容加1,結果送回原地址單元中 x0dx0aINC @Ri ;((Ri))+1→((Ri)) 寄存器的內容指向的地址單元中的內容加1,結果送回原地址單元中 x0dx0aINC Rn ;(Rn)+1→(Rn)寄存器Rn的內容加1,結果送回原地址單元中 x0dx0aINC DPTR ;(DPTR)+1→(DPTR)數據指針的內容加1,結果送回數據指針中 x0dx0ax0dx0a在INC data這條指令中,如果直接地址是I/O,其功能是先讀入I/O鎖存器的內容,然後在CPU進行加1操作,再輸出到I/O上,這就是「讀—修改—寫」操作。 x0dx0ax0dx0a[7]. 減1指令(4條) x0dx0a這組指令的作用是把所指的寄存器內容減1,結果送回原寄存器,若原寄存器的內容為00H,減1後即為FFH,運算結果不影響任何標志位,這組指令共有直接、寄存器、寄存器間址等定址方式,當直接地址是I/O口鎖存器時,「讀—修改—寫」操作與加1指令類似。 x0dx0ax0dx0aDEC A ;(A)-1→(A)累加器A中的內容減1,結果送回累加器A中 x0dx0aDEC data ;(data)-1→(data)直接地址單元中的內容減1,結果送回直接地址單元中 x0dx0aDEC @Ri ;((Ri))-1→((Ri))寄存器Ri指向的地址單元中的內容減1,結果送回原地址單元中 x0dx0ax0dx0aDEC Rn ;(Rn)-1→(Rn)寄存器Rn中的內容減1,結果送回寄存器Rn中 x0dx0ax0dx0a[8]. 十進制調整指令(1條) x0dx0a在進行BCD碼運算時,這條指令總是跟在ADD或ADDC指令之後,其功能是將執行加法運算後存於累加器A中的結果進行調整和修正。 x0dx0ax0dx0aDA A x0dx0ax0dx0aMCS-51邏輯運算及移位指令 x0dx0ax0dx0a邏輯運算和移位指令共有25條,有與、或、異或、求反、左右移位、清0等邏輯操作,有直接、寄存器和寄存器間址等定址方式。這類指令一般不影響程序狀態字(PSW)標志。 x0dx0ax0dx0a[1]. 循環移位指令(4條) x0dx0a這4條指令的作用是將累加器中的內容循環左或右移一位,後兩條指令是連同進位位CY一起移位。 x0dx0ax0dx0aRL A ;累加器A中的內容左移一位 x0dx0aRR A ;累加器A中的內容右移一位 x0dx0aRLC A ;累加器A中的內容連同進位位CY左移一位 x0dx0aRRC A ;累加器A中的內容連同進位位CY右移一位 x0dx0ax0dx0a[2]. 累加器半位元組交換指令(1條) x0dx0a這條指令是將累加器中的內容高低半位元組互換,這在上一節中內容已有介紹。 x0dx0ax0dx0aSWAP A ; 累加器中的內容高低半位元組互換 x0dx0ax0dx0a[3]. 求反指令(1條) x0dx0a這條指令將累加器中的內容按位取反。 x0dx0ax0dx0aCPL A ; 累加器中的內容按位取反 x0dx0ax0dx0a[4]. 清零指令(1條) x0dx0a這條指令將累加器中的內容清0。 x0dx0ax0dx0aCLR A ; 0→(A),累加器中的內容清0 x0dx0ax0dx0a[5]. 邏輯與操作指令(6條) x0dx0a這組指令的作用是將兩個單元中的內容執行邏輯與操作。如果直接地址是I/O地址,則為「讀—修改—寫」操作。 x0dx0ax0dx0aANL A,data ;累加器A中的內容和直接地址單元中的內容執行與邏輯操作。結果存在寄存器A中。 x0dx0aANL data,#data ;直接地址單元中的內容和立即數執行與邏輯操作。結果存在直接地址單元中。 x0dx0aANL A,#data ;累加器A的內容和立即數執行與邏輯操作。結果存在累加器A中。 x0dx0aANL A,Rn ;累加器A的內容和寄存器Rn中的內容執行與邏輯操作。結果存在累加器A中。 x0dx0aANL data,A ;直接地址單元中的內容和累加器A的內容執行與邏輯操作。結果存在直接地址單元中。 x0dx0aANL A,@Ri ;累加器A的內容和工作寄存器Ri指向的地址單元中的內容執行與邏輯操作。結果存在累加器A中。 x0dx0ax0dx0a[6]. 邏輯或操作指令(6條) x0dx0a這組指令的作用是將兩個單元中的內容執行邏輯或操作。如果直接地址是I/O地址,則為「讀—修改—寫」操作。 x0dx0ax0dx0aORL A,data ;累加器A中的內容和直接地址單元中的內容執行邏輯或操作。結果存在寄存器A中。 x0dx0aORL data,#data ;直接地址單元中的內容和立即數執行邏輯或操作。結果存在直接地址單元中。 x0dx0aORL A,#data ;累加器A的內容和立即數執行邏輯或操作。結果存在累加器A中。 x0dx0aORL A,Rn ;累加器A的內容和寄存器Rn中的內容執行邏輯或操作。結果存在累加器A中。 x0dx0aORL data,A ;直接地址單元中的內容和累加器A的內容執行邏輯或操作。結果存在直接地址單元中。 x0dx0aORL A,@Ri ;累加器A的內容和工作寄存器Ri指向的地址單元中的內容執行邏輯或操作。結果存在累加器A中。 x0dx0ax0dx0a[7]. 邏輯異或操作指令(6條) x0dx0a這組指令的作用是將兩個單元中的內容執行邏輯異或操作。如果直接地址是I/O地址,則為「讀—修改—寫」操作。 x0dx0ax0dx0aXRL A,data ;累加器A中的內容和直接地址單元中的內容執行邏輯異或操作。結果存在寄存器A中。 x0dx0aXRL data,#data ;直接地址單元中的內容和立即數執行邏輯異或操作。結果存在直接地址單元中。 x0dx0aXRL A,#data ;累加器A的內容和立即數執行邏輯異或操作。結果存在累加器A中。 x0dx0aXRL A,Rn ;累加器A的內容和寄存器Rn中的內容執行邏輯異或操作。結果存在累加器A中。 x0dx0aXRL data,A ;直接地址單元中的內容和累加器A的內容執行邏輯異或操作。結果存在直接地址單元中。 x0dx0aXRL A,@Ri ;累加器A的內容和工作寄存器Ri指向的地址單元中的內容執行邏輯異或操作。結果存在累加器A中。 x0dx0ax0dx0aMCS-51控制轉移指令 x0dx0ax0dx0a控制轉移指令用於控製程序的流向,所控制的范圍即為程序存儲器區間,MCS-51系列單片機的控制轉移指令相對豐富,有可對64kB程序空間地址單元進行訪問的長調用、長轉移指令,也有可對2kB位元組進行訪問的絕對調用和絕對轉移指令,還有在一頁范圍內短相對轉移及其它無條件轉移指令,這些指令的執行一般都不會對標志位有影響。 x0dx0ax0dx0a[1]. 無條件轉移指令(4條) x0dx0a這組指令執行完後,程序就會無條件轉移到指令所指向的地址上去。長轉移指令訪問的程序存儲器空間為16地址64kB,絕對轉移指令訪問的程序存儲器空間為11位地址2kB空間。 x0dx0ax0dx0aLJMP addr16 ;addr16→(PC),給程序計數器賦予新值(16位地址) x0dx0ax0dx0aAJMP addr11 ;(PC)+2→(PC),addr11→(PC 10-0 )程序計數器賦予新值(11位地址),(PC 15-11 )不改變 x0dx0ax0dx0aSJMP rel ;(PC)+ 2 + rel→(PC)當前程序計數器先加上2再加上偏移量給程序計數器賦予新值 x0dx0ax0dx0aJMP @A+DPTR ;(A)+ (DPTR)→(PC),累加器所指向地址單元的值加上數據指針的值給程序計數器賦予新值 x0dx0ax0dx0a[2]. 條件轉移指令(8條) x0dx0a程序可利用這組豐富的指令根據當前的條件進行判斷,看是否滿足某種特定的條件,從而控製程序的轉向。 x0dx0ax0dx0aJZ rel ; A=0,(PC)+ 2 + rel→(PC),累加器中的內容為0,則轉移到偏移量所指向的地址,否則程序往下執行 x0dx0ax0dx0aJNZ rel ; A≠0,(PC)+ 2 + rel→(PC),累加器中的內容不為0,則轉移到偏移量所指向的地址,否則程序往下執行 x0dx0ax0dx0aCJNE A, data, rel ; A≠(data),(PC)+ 3 + rel→(PC),累加器中的內容不等於直接地址單元的內容,則轉移到偏移量所指向的地址,否則程序往下執行 x0dx0ax0dx0aCJNE A, #data, rel ; A≠#data,(PC)+ 3 + rel→(PC),累加器中的內容不等於立即數,則轉移到偏移量所指向的地址,否則程序往下執行 x0dx0ax0dx0aCJNE Rn, #data, rel ; A≠#data,(PC)+ 3 + rel→(PC),工作寄存器Rn中的內容不等於立即數,則轉移到偏移量所指向的地址,否則程序往下執行 x0dx0ax0dx0aCJNE @Ri, #data, rel ; A≠#data,(PC)+ 3 + rel→(PC),工作寄存器Ri指向地址單元中的內容不等於立即數,則轉移到偏移量所指向的地址,否則程序往下執行 x0dx0ax0dx0aDJNZ Rn, rel ; (Rn)-1→(Rn),(Rn)≠0,(PC)+ 2 + rel→(PC)工作寄存器Rn減1不等於0,則轉移到偏移量所指向的地址,否則程序往下執行 x0dx0ax0dx0aDJNZ data, rel ; (Rn)-1→(Rn),(Rn)≠0,(PC)+ 2 + rel→(PC)直接地址單元中的內容減1不等於0,則轉移到偏移量所指向的地址,否則程序往下執行 x0dx0ax0dx0a[3]. 子程序調用指令(1條) x0dx0a子程序是為了便於程序編寫,減少那些需反復執行的程序佔用多餘的地址空間而引入的程序分支,從而有了主程序和子程序的概念,需要反復執行的一些程序,我們在編程時一般都把它們編寫成子程序,當需要用它們時,就用一個調用命令使程序按調用的地址去執行,這就需要子程序的調用指令和返回指令。 x0dx0ax0dx0aLCALL addr16 ; 長調用指令,可在64kB空間調用子程序。此時(PC)+ 3→(PC),(SP)+ 1→(SP),(PC 7-0 )→(SP),(SP)+ 1→(SP),(PC 15-8 )→(SP),addr16→(PC),即分別從堆棧中彈出調用子程序時壓入的返回地址 x0dx0ax0dx0aACALL addr11 ; 絕對調用指令,可在2kB空間調用子程序,此時(PC)+ 2→(PC),(SP)+ 1→(SP),(PC 7-0 )→(SP),(SP)+ 1→(SP),(PC 15-8 )→(SP),addr11→(PC 10-0 ) x0dx0ax0dx0aRET ; 子程序返回指令。此時(SP)→(PC 15-8 ),(SP)- 1→(SP),(SP)→(PC 7-0 ),(SP)- 1→(SP) x0dx0ax0dx

G. 單片機程序是如何執行的

1、單片機復位。
2、PC指向0000H,單片機從這里取第一條指令,開始執行。
3、按指令PC逐次增加或跳轉
4、中斷被觸發時,PC指向中斷向量,從這里取指令。
5、中斷服務完成回到正常程序中繼續執行。
大概就這么個過程。

H. 單片機是怎樣執行指令的

單片機(Microcontrollers)是一種集成電路晶元,是採用超大規模集成電路技術把具有數據處理能力的中央處理器CPU、隨機存儲器RAM、只讀存儲器ROM、多種I/O口和中斷系統、定時器/計數器等功能(可能還包括顯示驅動電路、脈寬調制電路、模擬多路轉換器、A/D轉換器等電路)集成到一塊矽片上構成的一個小而完善的微型計算機系統,在工業控制領域廣泛應用。從上世紀80年代,由當時的4位、8位單片機,發展到現在的300M的高速單片機。

閱讀全文

與單片機怎麼放指令相關的資料

熱點內容
獵人寶寶攻擊命令 瀏覽:159
操作系統是編譯原理嗎 瀏覽:646
雲伺服器遷移後 瀏覽:260
excel格式轉換pdf 瀏覽:987
登錄器一般存在哪個文件夾 瀏覽:535
中興光貓機器碼演算法 瀏覽:330
android響應時間測試 瀏覽:940
java編程思想第四版答案 瀏覽:888
如何對nbt編程 瀏覽:885
mscpdf 瀏覽:948
文件夾d盤突然0位元組可用 瀏覽:272
吃火腿腸的解壓場面 瀏覽:339
衛星鍋加密教程 瀏覽:792
php7的特性是什麼 瀏覽:469
編譯類高級語言源代碼運行過程 瀏覽:177
科普中國app怎麼分享 瀏覽:87
51單片機與32單片機比較 瀏覽:422
SQL加密存儲解密 瀏覽:507
電氣工程師把程序加密 瀏覽:797
解壓切東西動畫版 瀏覽:965