求解51单片机延时程序计算ORG 0050HDELAY:MOV R0,#0AHDL2:MOV R1,#7DHDL1:NOPNOPDJNE R1,DL1DJNZ R0,DL2RET求每句指令的机器周期,并算出总延时时间.

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/05 23:34:01
求解51单片机延时程序计算ORG 0050HDELAY:MOV R0,#0AHDL2:MOV R1,#7DHDL1:NOPNOPDJNE R1,DL1DJNZ R0,DL2RET求每句指令的机器周期,并算出总延时时间.

求解51单片机延时程序计算ORG 0050HDELAY:MOV R0,#0AHDL2:MOV R1,#7DHDL1:NOPNOPDJNE R1,DL1DJNZ R0,DL2RET求每句指令的机器周期,并算出总延时时间.
求解51单片机延时程序计算
ORG 0050H
DELAY:MOV R0,#0AH
DL2:MOV R1,#7DH
DL1:NOP
NOP
DJNE R1,DL1
DJNZ R0,DL2
RET
求每句指令的机器周期,并算出总延时时间.

求解51单片机延时程序计算ORG 0050HDELAY:MOV R0,#0AHDL2:MOV R1,#7DHDL1:NOPNOPDJNE R1,DL1DJNZ R0,DL2RET求每句指令的机器周期,并算出总延时时间.
一楼错在时钟周期和频率的关系没弄对;
二楼错在内循环没算DJNZ的两个周期
1)首先要知道单片机时钟晶振频率为多少?设fosc=6MHz.
2)时钟周期T是计算机基本时间单位,同单片机使用的晶振频率有关.
那么T =1/fosc=1/6M=166.7ns.
3)机器周期T1是指CPU完成一个基本操作所需要的时间,如取指操作、读数据操作等,机器周期=12 T =166.7ns X 12=2µs.
4)指令周期是指执行一条指令所需要的时间,因此指令周期没有确定值,一般为1~4个T机器周期.
5)本题各指令的机器周期为:
程序 机器周期数 一次用的时间µs
ORG 0050H 0
DELAY:MOV R0,#0AH 1 2
DL2:MOV R1,#7DH 1 2
DL1:NOP 1 2
NOP 1 2
DJNE R1,DL1 2 4
DJNZ R0,DL2 2 4
RET 2 4
6)延时时间:
(1)内循环:时间
DL1:NOP 2
NOP 2
DJNE R1,DL1 4
内循环的循环次数为125(07DH),延时时间为:125 X (2+2+4)=1000µs=1ms
(2)外循环:外循环的循环次数为10(0AH),
总循环:10 x 1000µs=10000µs=10ms
(3)精确计算:
MOV R0,#0AH 运行了1次用 2µs
DL2:MOV R1,#7DH 运行了10次用2x10µs
DL2:MOV R1,#7DH 运行了10次用4x10µs
RET 运行了1次用4µs
所以精确计算为:10000+2+20+40+4=10066 µs
一般情况下回答延时10000µs即10ms即可
(4)说明若选用的晶振fosc=12MHz 那么以上的计算周期数不变,时间减半,即为10066/2=5033µs,或粗略答为:5000µs(5ms).
以上答案希望有所帮助,

一楼算错了吧。
DELAY:MOV R0,#0AH 2
DL2:MOV R1,#7DH 2
DL1:NOP 1
NOP 1
DJNE R1,DL1 2
DJNZ R0,DL2 2
RET ...

全部展开

一楼算错了吧。
DELAY:MOV R0,#0AH 2
DL2:MOV R1,#7DH 2
DL1:NOP 1
NOP 1
DJNE R1,DL1 2
DJNZ R0,DL2 2
RET 1
算法:最先算最里层:
DL1:NOP
NOP
DJNE R1,DL1
125*2+1+1=252
再算第二层;
(252+1+2)*10=2550
再加上头尾:
2550+2+1 = 2553
假如你是12M的晶振,这个总时间是2553us
如果为6M,总时间是5106us

收起

晕!又是老问题!坚决不赚你的分.....

DELAY:MOV R0,#0AH ;一个周期
DL2:MOV R1,#7DH ;一个
DL1:NOP ;一个
NOP ;一个
DJNE R1,DL1 ;两个
DJNZ R0,DL2 ;两个
RET
一次循环:125*4=1000个周...

全部展开

DELAY:MOV R0,#0AH ;一个周期
DL2:MOV R1,#7DH ;一个
DL1:NOP ;一个
NOP ;一个
DJNE R1,DL1 ;两个
DJNZ R0,DL2 ;两个
RET
一次循环:125*4=1000个周期
二次循环:(1000+1+2)*10=10030个周期
如果你的晶振是12M的话,总延时时间:10030*1uS

收起

求解51单片机延时程序计算ORG 0050HDELAY:MOV R0,#0AHDL2:MOV R1,#7DHDL1:NOPNOPDJNE R1,DL1DJNZ R0,DL2RET求每句指令的机器周期,并算出总延时时间. 当R4=0BCH时,计算指令DJNZ R4,$的延时时间.单片机程序 51单片机C语言for循环延时程序时间计算设晶振12MHz,即一个机器周期是1us.for(i=0,i 51单片机延时程序时间计算DELAY1:MOV R3,#1AH LOOP1:MOV R4,#0FFHLOOP2:MOV R5,#0FFH LOOP3:DJNZ R5,LOOP3DJNZ R4,LOOP2DJNZ R3,LOOP1RET6M的晶振,这个延时程序的时间如何计算啊?怎么算的,算了半天不知道怎么算? 51单片机中ORG是什么意思有一段示例程序开始是:ORG 0000HAJMP MAINORG 0030H我查了ORG是为了给汇编以后的机器代码定位,可是ORG 0000H定位程序从0000H开始存放,之后就跳转到MAIN程序了啊,那后面一条OR 速回 8051单片机的晶振为12MHz,下面是一段延时子程序,计算出该延时子程序的延时时间,并列出计算过程ORG 1000HDEL:MOV R7,#20; 单周期1sDEL1:MOV R6,#125; 单周期1sDEL2:DJNZ R6,DEL2; 双周期2sDJNZ R7,DEL1; 双 单片机,AT89C51,一段小程序,ORG 0START:MOV R2,#8MOV A,#0FEHSETB CLOOP:MOV P2,A LCALL DELAYRLC ADJNZ R2 ,LOOPMOV R2,#8 LOOP1:MOV P2 ,A LCALL DELAY RRC A DJNZ R2,LOOP1 LJMP STARTDELAY:MOV R5,#20 ;延时子程序,延时0.2秒D1:MOV R6,#20D2:MOV R7 单片机中子程序延时时间的计算DELAY:MOV R6,#20 D1:MOV R7 ,#250 D2:DJNZ R7,D2 DJNZ R6,D1 频率12MHZ 单片机中R0,R1,R2,R5,R6,R7是怎样用的?是怎样计算时钟周期和延时程序的时间的? nop函数可以用来延时,单片机是51,CPU频率是20MHZ,请问1个NOP延时多上时间,怎么计算? 关于单片机DA指令最近做课设,内容是计算一个按键按下的次数(0~99),用8个发光二极管显示.采用软件去抖.显示接口用273扩展,按键入口选P1口.8031单片机.我的程序如下:ORG 0000HLJMP MAIN ORG 0030 51单片机中R0,R1,R2.都表示的是什么,很多时候看不懂.比如说ORG 0 START:CLR P1.0 LCALL DELAY SETB P1.0 ;使P1.0变为1.LCALL DELAY LJMP START ;转入主程序DELAY:MOV R5,#20 ;延时子程序,延时0.2秒 D1:MOV R6,#20 D2:MOV R7,#248 51单片机的程序是什么意思? 51单片机的程序是什么意思? 51单片机程序帮忙注释下org 0000hmov a,#20hmov 21h,amov 22h,amov 31h,aaa:sjmp aaend要A显示77H,存储器窗40H显示FFH,怎么写程序? 51单片机汇编语言延时0.2秒的计算方法,请各位大侠指教!mov r4,#4 ;200ms mov r3#200 ;50ms怎样计算#数值 PIC单片机ds18b20测温度时,将AD转换的750ms延时使用中断延时的程序后,温度检测的变化几分才转换一次,为 51单片机与AD转换程序