主题:延时问题
小牛斑斑
[专家分:1210] 发布于 2008-09-20 08:51:00
晶振是12MHZ
MOV R1,#3 ;以下为主机发出延时537微秒的复位低脉冲的延时代码段
TSR1: MOV R0,#107
DJNZ R0,$
DJNZ R1,TSR1
SETB P2.2 ;然后拉高数据线,即释放
NOP
NOP
大家帮我看看这个延时程序到底延时了多长时间,怎么计算啊????急!!!!!~~~~~~~~~~~~~~~~~~~~~~~~~
回复列表 (共3个回复)
沙发
小牛斑斑 [专家分:1210] 发布于 2008-09-20 09:14:00
是不是这样计算:
MOV R0,#107 ;用了1us
DJNZ R0,$ ;用了2us(共执行了107次,共是214us)
DJNZ R1,TSR1 ;用了2us
整段执行了3次
t=(1+214+2)*3=651us
是这样计算吗?
板凳
will2008 [专家分:10] 发布于 2008-09-20 09:49:00
我觉得你应该懂这段程序的执行过程,然后在书本上找,绝对有关于每个汇编指令执行一次需要多少个机器周期的列表。然后你需要根据你使用的系统晶振计算出一个机器周期是多少时间,(一般的12M的晶振机器周期是1微秒),楼上的计算方法正确!
3 楼
cnhanxiao [专家分:450] 发布于 2008-09-20 14:22:00
大概是,楼主何必如此辛苦?现在的晶振很少合格的
我来回复