作业帮 > 综合 > 作业

求解51单片机延时程序计算

来源:学生作业帮 编辑:搜搜考试网作业帮 分类:综合作业 时间:2024/07/27 12:14:04
求解51单片机延时程序计算
ORG 0050H
DELAY:MOV R0,#0AH
DL2:MOV R1,#7DH
DL1:NOP
NOP
DJNE R1,DL1
DJNZ R0,DL2
RET
求每句指令的机器周期,并算出总延时时间.
求解51单片机延时程序计算
一楼错在时钟周期和频率的关系没弄对;
二楼错在内循环没算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).
以上答案希望有所帮助,