导航:首页 > 操作系统 > 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单片机相关的资料

热点内容
如何批量快速压缩视频 浏览:432
我的世界如何加入ice服务器 浏览:873
兄弟cnc编程说明书 浏览:204
php闪电入门教程学习 浏览:152
金岳霖逻辑pdf 浏览:938
linuxtomcat线程 浏览:77
pboc长度加数据加密 浏览:187
英雄联盟国际服手游怎么下安卓 浏览:297
程序员的思路 浏览:234
只能用命令获得的四种方块 浏览:358
怎么用命令方块防止开创造 浏览:807
扫描版的pdf 浏览:790
编程猫怎样做3d游戏 浏览:207
怎么查找云服务器上的ftp 浏览:156
我的世界服务器如何注册账号 浏览:934
统计英文字符python 浏览:423
linux信息安全 浏览:908
压缩机接线柱爆 浏览:1000
程序员自主创业 浏览:584
汇编程序员待遇 浏览:360