怎样用单片机的汇编语言编写一个50ms的延时程序。(晶振频率为12MHz)ps51单片机
1个回答
展开全部
DEL:
MOV
R7,#210
DEL1:
MOV
R6,#117
DEL2:
DJNZ
R6,DEL2
NOP
DJNZ
R7,DEL1
NOP
;此处17个NOP
NOP
....
NOP
RET
1μs+(1+234+1+2)μs*210+2μs+17=50000μs
其实考虑到LCALL调用这个函数的时间,末尾应该再减少2个NOP。
另外,实际使用中需要精确延时的话应该使用定时器中断,一方面是精确,另一方面延时函数执行时,如果有中断发生,那么延时就不正确了。
MOV
R7,#210
DEL1:
MOV
R6,#117
DEL2:
DJNZ
R6,DEL2
NOP
DJNZ
R7,DEL1
NOP
;此处17个NOP
NOP
....
NOP
RET
1μs+(1+234+1+2)μs*210+2μs+17=50000μs
其实考虑到LCALL调用这个函数的时间,末尾应该再减少2个NOP。
另外,实际使用中需要精确延时的话应该使用定时器中断,一方面是精确,另一方面延时函数执行时,如果有中断发生,那么延时就不正确了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |