導航:首頁 > 操作系統 > LL單片機

LL單片機

發布時間:2022-11-01 03:18:46

單片機指令問題!

MCS-51系列單片機指令以A開頭的指令有18條,分別為:篇幅不夠,只是一半!

1、ACALL addr11

指令名稱:絕對調用指令
指令代碼:{A10,A9,A8,10001},A[7:0]
指令功能:構造目的地址,進行子程序調用。其方法是以指令提供的11位地址(al0~a0),取代PC的低11位,PC的高5位不變。
操作內容:
PC<-(PC)+2
SP<-(SP)+1
(SP)<-(PC)7~0
SP<-(SP)+1
(SP)<-(PC)15~8
PC10~0<-addrl0~0
位元組數: 2
機器周期:2
使用說明:由於指令只給出子程序入口地址的低11位,因此調用范圍是2KB。

2、ADD A,Rn

指令名稱:寄存器加法指令
指令代碼:28H~2FH
指令功能:累加器內容與寄存器內容相加
操作內容:A<-(A)+(Rn), n=0~7
位元組數: 1
機器周期;1
影響標志位:C,AC,OV

3、ADD A,direct

指令名稱:直接定址加法指令
指令代碼:25H
指令功能:累加器內容與內部RAM單元或專用寄存器內容相加
操作內容:A<-(A)+(direct)
位元組數: 2
機器周期:1
影響標志位:C,AC,OV

4、ADD A,@Ri

指令名稱:間接定址加法指令
指令代碼:26H~27H
指令功能:累加器內容與內部RAM低128單元內容相加
操作內容:A<-(A)+((Ri)), i=0,1
位元組數: 1
機器周期:1
影響標志位:C,AC,OV

5、ADD A,#data

指令名稱:立即數加法指令
指令代碼:24H
指令功能:累加器內容與立即數相加
操作內容:A<-(A)+data
位元組數: 2
機器周期:1
影響標志位:C,AC,OV

6、ADDC A,Rn

指令名稱:寄存器帶進位加法指令
指令代碼:38H~3FH
指令功能:累加器內容、寄存器內容和進位位相加
操作內容:A<-(A)+(Rn)+(C), n=0~7
位元組數: 1
機器周期:1
影響標志位:C,AC,OV

7、ADDC A,direct

指令名稱:直接定址帶進位加法指令
指令代碼:35H
指令功能:累加器內容、內部RAM低128單元或專用寄存器內容與進位位加
操作內容:A<-(A)+(direct)+(C)
位元組數: 2
機器周期:1
影響標志位:C,AC,OV

8、ADDC A,@Ri

指令名稱:間接定址帶進位加法指令
指令代碼:36H~37H
指令功能:累加器內容、內部RAM低128單元內容及進位位相加
操作內容:A<-(A)+((Ri))+(C), i=0,1
位元組數: 1
機器周期:1
影響標志位:C,AC,OV

9、ADDC A,#data

指令名稱:立即數帶進位加法指令
指令代碼:34H
指令功能:累加器內容、立即數及進位位相加
操作內容:A<-(A)+data+(C)
位元組數: 2
機器周期:1
影響標志位:C,AC,OV

10、AJMP addr11

指令名稱:絕對轉移指令
指令代碼:{A10,A9,A8,00001},A[7:0]
指令功能:構造目的地址,實現程序轉移。其方法是以指令提供的11位地址,取代PC的低11位,.而PC的高5位保持不變。
操作內容:PC<-(PC)+2
PCl0~0<-addrll
位元組數: 2
機器周期:2
使用說明:由於addrll的最小值是000H,最大值是7FFH,因此地址轉移范圍是2KB。

11、ANL A,Rn

指令名稱:寄存器邏輯與指令
指令代碼:58H~5FH
指令功能:累加器內容邏輯與寄存器內容
操作內容:A<-(A)^(Rn), n=0~7
位元組數: 1
機器周期:1

12、ANL A,direct

指令名稱:直接定址邏輯與指令
指令代碼:55H
指令功能:累加器內容邏輯與內部RAM低128單元或專用寄存器內容
操作內容:A<-(A)^(diret)
位元組數: 2
機器周期:1

13、ANL A,@Ri

指令名稱:間接定址邏輯與指令
指令代碼:56H~57H
指令功能:累加器內容邏輯與內部RAM低128單元內容
操作內容:A<-(A)^((Ri)) i=0,1
位元組數: 1
機器周期:1

14、ANL A,#data

指令名稱:立即數邏輯與指令
指令代碼:54H
指令功能:累加器內容邏輯與立即數
操作內容:A<-(A)^data
位元組數: 2
機器周期:1

15、ANL direct,A

指令名稱:累加器邏輯與指令
指令代碼:52H
指令功能:內部RAM低128單元或專用寄存器內容邏輯與累加器內容
操作內容:direct<-(A)^(direct)
位元組數: 2
機器周期:1

16、ANL direct, #data

指令名稱:邏輯與指令
指令代碼:53H
指令功能:內部RAM低128單元或專用寄存器內容邏輯與立即數
操作內容:direct<-(direct)^data
位元組數: 3
機器周期:2

17、ANL C,bit

指令名稱:位邏輯與指令
指令代碼:82H
指令功能:進位標志邏輯與直接定址位
操作內容:C<-(C)^(bit)
位元組數: 2
機器周期:2

18、ANL C,/bit

指令名稱:位邏輯與指令
指令代碼:B0H
指令功能:進位標志邏輯與直接定址位的反
操作內容:C<-(C)^(bit)
位元組數: 2
以C開頭的指令有10條,分別為:
1、CJNE A,dircet,rel

指令名稱:數值比較轉移指令
指令代碼:B5H
指令功能:累加器內容與內部RAM低128位元組或專用寄存器內容比較,不等則轉移。
操作內容:若(A)=(direct),則PC<-(PC)+3,C<-0
若(A)>(direct),則PC<-(PC)+3+rel,C<-0
若(A)<(direct),則PC<-(PC)+3+rel,C<-1
位元組數: 3
機器周期:2

2、CJNE A,#data,rel

指令名稱:數值比較轉移指令
指令代碼:B4H
指令功能:累加器內容與立即數比較,不等則轉移。
操作內容:若(A)=data,則PC<-(PC)+3,C<-0
若(A)>data,則PC<-(PC)+3+rel,C<-0
若(A)<data,則PC<-(PC)+3+rel,C<-1
位元組數: 3
機器周期:2

3、CJNE Rn,#data,rel

指令名稱:數值比較轉移指令
指令代碼:B8H~BFH
指令功能:寄存器內容與立即數比較,不等則轉移。
操作內容:若(Rn)=data,則PC<-(PC)+3,C<-0
若(Rn)>data,則PC<-(PC)+3+rel,C<-0
若(Rn)<data,則PC<-(PC)+3+rel,C<-1
位元組數: 3
機器周期:2

4、CJNE @Ri,#data,rel

指令名稱:數值比較轉移指令
指令代碼:B6H~B7H
指令功能:內部RAM低128單元內容與立即數比較,不等則轉移。
操作內容:若((Ri))=data,則PC<-(PC)+3,C<-0
若((Ri))>data,則PC<-(PC)+3+rel,C<-0
若((Ri))<data,則PC<-(PC)+3+rel,C<-1
位元組數: 3
機器周期:2

5、CLR A

指令名稱:累加器清0指令
指令代碼:E4H
指令功能:累加器清0
操作內容:A<-0
位元組數: 1
機器周期:1

6、CLR C

指令名稱:進位標志清0指令
指令代碼:C3H
指令功能:進位位清0
操作內容:C<-0
位元組數: 1
機器周期:1

7、CLR bit

指令名稱:直接定址位清0指令
指令代碼:C2H
指令功能:直接定址位清0
操作內容:bit<-0
位元組數: 2
機器周期:1

8、CPL A

指令名稱:累加器取反指令
指令代碼:F4H
指令功能:累加器取反
操作內容:A<-(A)
位元組數: 1
機器周期:1

9、CPL C

指令名稱:進位標志取反指令
指令代碼:B3H
指令功能:進位標志位狀態取反
操作內容:C<-(c取反)
位元組數: 1
機器周期:1

10、 CPL bit

指令名稱:直接定址位取反指令

指令代碼:B2H
指令功能:直接定址位取反
操作內容:bit<-(bit取反)
位元組數: 2
機器周期:1

以D開頭的指令有8條,分別為:
1、DA A

指令名稱:十進制調整指令
指令代碼:D4H
指令功能:對BCD碼加法運算的結果進行有條件的修正
操作內容:若(A)3~0>9|(AC)=1,則A3~0<-(A)3~0+6
若(A)7~4>9|(C)=1,則A7~4<-(A)7~4+6
若(A)7~4=9^(A)3~0>9,則A7~4<-(A)7~4+6
位元組數: 1
機器周期:1

使用說明:DA指令不影響溢出標志

2、DEC A

指令名稱:累加器減1指令
指令代碼:14H
指令功能:累加器內容減1
操作內容:A<-(A)-1
位元組數: 1
機器周期:1

3、DEC Rn

指令名稱:寄存器減1指令
指令代碼:18H~1FH
指令功能:寄存器內容減1
操作內容:Rn<-(Rn)-1,n=0~7
位元組數: 1
機器周期:1

4、DEC direct

指令名稱:直接定址減1指令
指令代碼:15H
指令功能:內部RAM低128單元及專用寄存器內容減1
操作內容:direct<-(direct)-1
位元組數: 2
機器周期:1

5、DEC @Ri

指令名稱:間接定址減1指令
指令代碼:16H~17H
指令功能:內部RAM低128單元內容減1
操作內容:(Ri)<-((Ri))-1, i=0,1
位元組數: 1
機器周期:1

6、DIV AB

指令名稱:無符號數除法指令;
指令代碼:84H
指令功能:A的內容被B的內容除。指令執行後,商存於A中,余數存於B中。
操作內容:A<-(A)/(B)的商
B<-(A)/(B)的余數
位元組數: 1
機器周期:4
影響標志位:C被清0;若B=00H,除法無法進行,並使OV=1;否則OV=0。

7、DJNZ Rn,rel

指令名稱:寄存器減1條件轉移指令
指令代碼:D8H~DFH
指令功能:寄存器內容減1。不為0轉移;為0順序執行。
操作內容:Rn<-(Rn)-l,n=0~7
若(Rn)≠0,則PC<-(PC)+2+rel
若(Rn)=0,則PC<-(PC)+2
位元組數: 2
機器周期:2

8、DJNZ direct,rel

指令名稱:直接定址單元減1條件轉移指令
指令代碼:D5H
指令功能:內部RAM低128單元內容減1。不為0轉移;為0順序執行。
操作內容:direct<-(direct)-1
若(direct)≠0,則PC<-(PC)+3+rel
若(direct)=0,則PC<-(PC)+3
位元組數: 3
機器周期:2

以I開頭的指令有5條,分別為:

1、INC A

指令名稱:累加器加1指令
指令代碼:04H
指令功能:累加器內容加1
操作內容:A<-(A)+1
位元組數: 1
機器周期:1

2、INC Rn

指令名稱:寄存器加1指令
指令代碼:08H~0FH
指令功能:寄存器內容加1
操作內容:Rn<-(Rn)+1,n=0~7
位元組數: 1
機器周期:1

3、INC direct

指令名稱:直接定址單元加1指令
指令代碼:05H
指令功能:內部BAM低128單元或專用寄存器內容加1
操作內容:direct<-(direct)+1
位元組數: 2
機器周期:1

4、INC @Ri

指令名稱:間接定址單元加1指令
指令代碼:06H~07H
指令功能:內部RAM低128單元內容加1
操作內容:(Ri)<-((Ri))+1;i=0,l
位元組數: 1
機器周期:1

5、INC DPTR

指令名稱:16位數據指針加1指令
指令代碼:A3H
指令功能:數據指針寄存器DPTR內容加1
操作內容:DPTR<-(DPTR)+1
位元組數: 1
機器周期:2

以J開頭的指令有8條,分別為:

1、JB bit,rel

指令名稱:位條件轉移指令。
指令代碼:20H
指令功能:根據指定位的狀態,決定程序是否轉移。若為1則轉移;否則順序執行。
操作內容:若(bit)=1,則PC<-(PC)+3+rel
若(bit)≠1,則PC<-(PC)+3
位元組數: 3
機器周期:2

2、JBC bit,rel

指令名稱:位條件轉移清0指令
指令代碼:10H
指令功能:對指定位的狀態進行測試。若為1,則把該位清0並進行轉移;否則程序順序執行。
操作內容:若(bit)=1,則PC<-(PC)+3+rel,bit<-0
若(bit)≠1,則PC<-(PC)+3
位元組數: 3
機器周期:2

3、JC rel

指令名稱:累加位條件轉移指令
指令代碼:40H
指令功能:根據累加位(C)的狀態決定程序是否轉移,若為1則轉移,否則順序執行。
操作內容:若(C)=1,則PC<-(PC)+2+rel
若(C)≠1,則PC<-(PC)+2
位元組數: 2
機器周期:2

4、JMP @A+DPTR

指令名稱:無條件間接轉移指令
指令代碼:72H
指令功能:A內容與DPTR內容相加作為轉移目的地址,進行程序轉移。
操作內容:PC<-(A)+(DPTR)
位元組數: 1
機器周期;2

5、JNB bit,rel

指令名稱:位條件轉移指令
指令代碼:30H
指令功能:根據指定位的狀態,決定程序是否轉移。若為0則轉移;否則順序執行。
操作內容:若(bit)=0,則PC<-(PC)+3+rel
若(bit)≠0,則PC<-(PC)+3
位元組數: 3
機器周期:2

6、JNC rel

指令名稱:累加位條件轉移指令
指令代碼:50H
指令功能:根據累加位(C)的狀態決定程序是否轉移。若為o則轉移;否則順序執行。
操作內容:若(C)=0,則PC<-(PC)+2+rel
若(C)≠0,則PC<-(PC)+2
位元組數: 2
機器周期:2

7、JNZ rel

指令名稱:判0轉移指令
指令代碼:70H
指令功能:累加位(A)的內容不為0,則程序轉移;否則程序順序執行。
操作內容:若(A)≠0,則PC<-(PC)+2+rel
若(A)=0,則PC<-(PC)+2
位元組數: 2
機器周期:2

8、JZ rel

指令名稱:判0轉移指令
指令代碼:60H
指令功能:累加位(A)的內容為o,則程序轉移;否則程序順序執行。
操作內容:若(A)=0,則PC<-(PC)+2+rel
若(A)≠0,則PC<-(PC)+2
位元組數: 2
機器周期:2

以L開頭的指令就2條,分別為:

1、LCALL addr16

指令名稱:長調用指令
指令代碼:12H
指令功能:按指令給定地址進行子程序調用
操作內容:PC<-(PC)+3
SP<-(SP)+1
(SP)<-(PC)7~0
SP<-(SP)+1
(SP)<-(PC)15~8
PC<-addrl6
位元組數: 3
機器周期:2
使用說明:在64KB的范圍內調用子程序

2、LJMP addrl6

指令名稱:長轉移指令
指令代碼:02H
指令功能:使程序按指定地址進行無條件轉移
操作內容:PC<-addrl6
位元組數: 3
機器周期:2

② 單片機循環

程序沒有毛病,樓主希望得到什麼樣的結果?
------------------
程序沒有毛病,用proteus7中模擬的時候,速度太快了不行。
下面程序,只是把延時時間加大了,模擬就可以了。

org 0000h
ajmp main
main:
mov r5, #0h
loop:
call disp
call delay
ajmp loop

disp:
mov DPTR, #table
mov a, r5
movc A, @a+DPTR
mov p0, a
dec r5
cjne r5, #-1, dell
mov r5 , #9
dell:
ret

delay:
mov r4, #100
mov r7, #0x0a
LL1:
mov r6, #-1
djnz r6, $
djnz r7, LL1
djnz r4, LL1
ret

table:
db 3fh,06h,5bh,4fh,66h
db 6dh,7dh,07h,7fh,6fh
end

③ 單片機接收到的數據如何連接資料庫

上位機用VB或VC編程,先會接收數據,會保存到TXT文本文件中。再學會保存到EXCEL中,就 算成功,EXCEL表格本身就 是資料庫的一部分。至於資料庫的操作,用高級語言是很簡單的,它和單 片機關系不大。我整過VB編程,串口接收,先保存到TXT文本文件中, 再學會保存到EXCEL中,挺簡單的,網上搜幾次就 成功了。
下面是我的串口接收程序的一部分:
Select Case MSComm1.CommEvent '事件發生
Case 2
inbuff = MSComm1.Input '讀入到緩沖區

ll = UBound(inbuff)
Label10.Caption = Label10.Caption + UBound(inbuff) + 1
ReDim indata(1 To (ll + 1))
For ii = 0 To UBound(inbuff)

strHex = strHex & Right("0" & Hex(inbuff(ii)), 2) & " " '如果只有一個字元,則前補0, 如F顯示0F,最後補空格方便顯示觀察如: 00 0F FE
TextReceive = strHex 『顯示到 文本框
Next ii
Open "12.txt" For Append As #1 『打開 文本文件
m = (ll + 1) / 2
Print #1, Now; "收到"; m; "個數據"
Close #1
For ii = 1 To Len(strHex) Step 6
indata((ii + 5) / 6) = Val("&H" & Mid(strHex, ii, 2)) * 4 + Val("&H" & Mid(strHex, ii + 3, 2))
Next ii
n1 = Val(Text1.Text) '電源電壓
n2 = Val(Text2.Text) '第一路電壓衰減倍數
n3 = Val(Text3.Text) '第二路電壓衰減倍數
na = n1 * n2 / 1024
nb = n1 * n3 / 1024
X = (ll + 1) / 2 - 1
For ii = 1 To X Step 2 '存入文本中,每行兩個數據
V1 = indata(ii) * na
V2 = indata(ii + 1) * nb
V3 = Format(V1, "0.000")
V4 = Format(V2, "0.000")
Open "12.txt" For Append As #1
Print #1, ii & "電壓 " & V3 & " v " & (ii + 1) & "電壓 " & V4 & " v"
Close #1
Next
'寫入EXCEL表格中
Set xlsApp = New Excel.Application
Set xlsBook = xlsApp.Workbooks.Open(App.Path & "\Book3.xls")
Set xlsSheet = xlsBook.Worksheets(1)
range = 2 '第二列為起始列,但每次寫入時,range並不一定是2,而是在原有基礎上另起1列
'第一列,寫入奇數數據
Do Until xlsSheet.Cells(2, range) = ""
range = range + 1
Loop
xlsSheet.Cells(1, range) = Date '第1行
xlsSheet.Cells(2, range) = Time '第2行
xlsSheet.Cells(3, range) = "迴路1電壓(V)" '第3 行
For ii = 1 To X Step 2 '從第4行開始存數據
V1 = indata(ii) * na
V3 = Format(V1, "0.000")
xlsSheet.Cells((ii + 1) / 2 + 3, range) = V3 '第4行
Next ii
'另起一列,寫入偶數數據
Do Until xlsSheet.Cells(2, range) = ""
range = range + 1
Loop

xlsSheet.Cells(2, range) = Time '第2行
xlsSheet.Cells(3, range) = "迴路2電壓(V)" '第3行
For ii = 2 To X + 1 Step 2 '從第4行開始存數據
V2 = indata(ii) * nb
V4 = Format(V2, "0.000")
xlsSheet.Cells(ii / 2 + 3, range) = V4
Next ii
xlsBook.Save
xlsBook.Application.Quit
strHex = "" '處理完成後清空字元串,等待下一次接收
'TextReceive = ""
End Select

④ STM32F1系列單片機各個功能的配置流程

看stm32官網的官網寄存器配置,或者看正點原子教程,使用HAL庫配置,或者使用LL庫配置

⑤ 單片機初始化程序包含哪些方面

首先要關閉看門狗,然後初始化時鍾,初始化通用io口,這幾個一般是必須的,另外如果你用到了串口、i2c什麼的就要做對應的初始化和中斷設置。給您一段我的c8051f340的初始化代碼
unsigned char n;
PCA0MD &= ~0x40;

OSCICN = 0x83;
CLKMUL = 0x00;

CLKMUL |= 0x80;

for(n=0;n<255;n++);

CLKMUL |= 0xC0;
while(!(CLKMUL & 0x20));
CLKSEL = 0x02;

RSTSRC |= 0x02;

P0MDIN |= 0xFF; //數字輸入(無模擬輸入)
P0MDOUT |= 0xFF; //推挽輸出(可選開漏輸出,輸出設為推挽,輸入設為開漏)

P1MDOUT |= 0xFF;
P1MDIN |= 0xFF;

P2MDOUT |= 0xFF;
P4MDOUT |= 0xFF;
//OE=0;
DIR=0;
P3MDIN |= 0xFF;
P3MDOUT |= 0x17; //0001 0111

P0SKIP = 0xA0;
P1SKIP = 0xFE;
P3SKIP = 0x03;
XBR0 = 0x00;
XBR1 = 0x40;
XBR2 = 0x01;

SBRLL1 =0x1E;
SBRLH1 =0xFB; //波特率 9600
SCON1 =0x30;
SMOD1 =0x6C; //8位數據位,無奇偶校驗,一位停止位;
SBCON1 =0x43;

EIP2 = 0x02;
EA=1;
EIE2 =0x02;

⑥ 單片機中的短跳轉指令AJMP其轉移目標指令地址怎麼算

AJMP addr11

說明:把11位的addr11內容直接給PC(16位的指針)的PC0——PC10位。

這樣的話addr11=00100000000B=0100H,原來PC=1030 推出轉移地址為:1100

同樣的道理原來的PC=3030時,算出轉移地址為:3100

仔細看一下書本,看你的困惑不是不了解這個地址是11位的問題,應該是和其他的指令搞混淆了。
SJMP rel PC=(PC)+rel
LJMP addr16 PC=addr16
AJMP addr11 PC10-0=addr11

這下你明白了嗎,個人認為自己回答的還很透徹,記得給分喲

⑦ 單片機系統指令的控制轉移指令

一、無條件轉移指令 AJMP addrll (2位元組指令)
2K(地址211)位元組范圍內的無條件跳轉指令。
64K程序存儲器空間分為32個區,每區2K位元組,轉移的目標地址必須與AJMP下一條指令的地址高5位地址碼A15-A11相同。
指令執行時,先PC加2,然後把addrll送入PC.10~PC.0,
PC.15~PC.11保持不變,程序轉移到目標地址。
注意:轉移目標首地址必須在AJMP指令下一條指令地址(PC+2)的2KB范圍內。
二、長跳轉指令 LJMP addr16 (3位元組指令)
64K位元組范圍內的無條件跳轉指令。
指令執行時,把指令的第二和第三位元組分別裝入PC的高位和低位位元組中,無條件地轉向addr16指出的目標地址。
目標地址可以在64K程序存儲器地址空間的任何位置。
注意:短跳轉、長跳轉指令中addrll、addr16直接寫上要轉向的目標地址標號(即符號地址)就可以。
三、相對轉移指令 SJMP rel (雙位元組)
rel為8位帶符號二進制補碼數(-128~+127),實現程序的雙向轉移。
在編寫程序時,直接寫上要轉向的目標地址標號就可以。
四、間接跳轉(散轉)指令JMP @A+DPTR (三位元組)
由A中8位無符號數與DPTR的16位數內容之和來確定。以DPTR內容作為基址,A的內容作變址。
五、條件轉移指令 (雙位元組)
JZ rel ; 如果累加器為「0」,則轉移
JNZ rel; 如果累加器非「0」,則轉移
六、比較不相等轉移指令(3位元組指令)
CJNE A, direct, rel
CJNE A, #data, rel
CJNE Rn, #data, rel
CJNE @Ri, #data, rel
1、比較前面兩個操作數(無符號整數)的大小,如果不相等則
轉移,若相等則順序執行下一條指令。
2、如果第一操作數小於第二操作數, 則Cy標志位置1, 否則清0。
如常把CJNE 第一操作數, 第二操作數, $+3
和JNC rel或JC rel 寫在一塊來判別2個數的大小。
$:本條指令在程序存儲單元的首地址;
$+3:CJNE指令的下一條指令,即JNC rel或JC rel
七、減1不為0轉移指令
DJNZ Rn, rel ;n=0~7
DJNZ direct, rel
將源操作數內容減1,結果回送到Rn寄存器或direct中去。如果源操作數內容不為0則轉移,為0則順序執行下一條指令。
主要用於控製程序循環。
1、把寄存器Rn或內部RAM的direct單元用作程序循環計數器
2、以減1後是否為「0」作為轉移條件,實現按次數控制循環
八、子程序調用、返回指令
1、短調用指令 ACALL addr11 (雙位元組)
2K范圍內的子程序調用。
2、長調用指令 LCALL addr16 (三位元組)
64K范圍內的子程序調用。
執行本指令時:
(1)斷點地址(調用指令的下一條指令的首地址PC+2或PC+3)
保護
(SP)+1→SP,然後PCL →(SP)
(SP)+1→SP,然後PCH →(SP)
(2)將子程序首地址送入PC,執行子程序
3、子程序返回指令 RET
斷點地址恢復
(SP) →PCH,(SP) - 1→SP
(SP) →PCL ,(SP) - 1→SP
功能:從堆棧中退出PC的高8位和低8位位元組,把棧指針減2,從PC值開始繼續執行程序。不影響標志位。
4、中斷返回指令 RETI
與RET指令相似,不同之處在於斷點地址恢復,清除中斷響應時被置「1」的51內部中斷優先順序寄存器的優先順序狀態。
子程序是編程時就已確定的固定位置調用,而中斷服務子程序是由中斷系統控制在特定條件下隨機調用的。
九、空操作指令 NOP,消耗1個機器周期的時間

⑧ 請教下,51單片機的AJMP addrll指令是怎麼工作的

AJMP 是短跳轉指令,執行這句話後,程序在AJMP規定的代碼長度內跳轉到程序addrII執行;還有一個是LJMP,功能跟它差不多,但它是長跳轉指令,能跳過的代碼要比AJMP長,因此如果你在編譯的時候如果編譯器(比如KEIL或偉福),提醒你AJMP跳不到那裡(無法定址),這時候你就要用LJMP,假如LJMP也跳不到,那就得接力跳轉了,比如LJMP ADDRII1;ADDRII1:LJMP ADDRII;這樣就可以跳到ADDRII了。
建議你先看明白51教材書中的指令的含義,多分析程序的過程,自然而然你就懂了。

⑨ 單片機原理與應用求解答(高分,在線等)

1、AT89S52單片機如果採用6MHz晶振,1個機器周期為?C
A,8us B、4us C、2us D、1us
2、MCS-51單片機中斷響應的條件是什麼?答:1有中斷源發出中斷請求;2中斷總允許位EA=1,即CPU開中斷;3申請中斷的中斷源的中斷允許位為1,即沒有被屏蔽
3、將片內RAM80H~89H單元中的10個數相加,和的低8位存入8AH,高8位存入8BH
ORG 0000H
MOV R7,#10
MOV R0,#80H
CLR A
MOV R1,#8AH
MOV @R1,A
INC R1
MOV @R1,A
LOOP:ADD A,@R0
JNC LL
INC @R1
LL:INC R0
DJNZ R7,LOOP
MOV @R0,A
SJMP $
END

編程題(第3題)請發我郵箱```[email protected]
謝謝!速度快的加分``

⑩ 單片機中如何調用寫好的子程序

呵呵
為你正確解答:
使用調用指令LCALL
可以去調用已經編寫好了的子程序。
使用格式:
LCALL
子程序名字(即子程序的首地址
用符號表示
叫符號地址)
例如:現有一個子程序
YS1MS:
MOV
R7,#
4
LL1:
MOV
R6,#200
LL2:
DJNZ
R6,LL2
DJNZ
R7,LL1
RET
可以在主程序中
調用子程序
LCALL
YS1MS
如滿意
請選擇滿意回答

閱讀全文

與LL單片機相關的資料

熱點內容
杭州程序員健身 瀏覽:13
dvd光碟存儲漢子演算法 瀏覽:758
蘋果郵件無法連接伺服器地址 瀏覽:963
phpffmpeg轉碼 瀏覽:672
長沙好玩的解壓項目 瀏覽:145
專屬學情分析報告是什麼app 瀏覽:564
php工程部署 瀏覽:833
android全屏透明 瀏覽:737
阿里雲伺服器已開通怎麼辦 瀏覽:803
光遇為什麼登錄時伺服器已滿 瀏覽:302
PDF分析 瀏覽:486
h3c光纖全工半全工設置命令 瀏覽:143
公司法pdf下載 瀏覽:383
linuxmarkdown 瀏覽:350
華為手機怎麼多選文件夾 瀏覽:683
如何取消命令方塊指令 瀏覽:350
風翼app為什麼進不去了 瀏覽:779
im4java壓縮圖片 瀏覽:362
數據查詢網站源碼 瀏覽:151
伊克塞爾文檔怎麼進行加密 瀏覽:893