用汇编怎么写51单片机的延时程序
5个回答
展开全部
呵呵,我大概给你说说吧,例如MOV指令,执行这条指令需要一个机器周期。DJNZ指令,执行这条指令需要2个机器周期。(一机器周期=1微秒)。
你要是用定时器工作的话需要先定义一下TMOD
TH
TL的数值
这个就用到晶振了了。要先看多少晶振,假如6MHZ,就用12除6,得出来的是2毫秒。在利用计算公式算出你需要的延时时间。(计算公式我没记住。呵呵,你可以在书上看看,应该有的)
你要是用定时器工作的话需要先定义一下TMOD
TH
TL的数值
这个就用到晶振了了。要先看多少晶振,假如6MHZ,就用12除6,得出来的是2毫秒。在利用计算公式算出你需要的延时时间。(计算公式我没记住。呵呵,你可以在书上看看,应该有的)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
DEL1S:MOV
R7
,#10
D1:
MOV
R6,#200
D2:
MOV
R5
,#250
DJNZ
R5,$
DJNZ
R6,D2
DJNZ
R7,D1
RET
说明:1、如果不使用R5、R6、R7可以用别的单元替换,比如换成30H、31H、32H等等
2、这个程序是12M时钟,如果时钟不同,要修改数值。如6M时钟,要把MOV
R7,#10
修改成:MOV
R7,#5
R7
,#10
D1:
MOV
R6,#200
D2:
MOV
R5
,#250
DJNZ
R5,$
DJNZ
R6,D2
DJNZ
R7,D1
RET
说明:1、如果不使用R5、R6、R7可以用别的单元替换,比如换成30H、31H、32H等等
2、这个程序是12M时钟,如果时钟不同,要修改数值。如6M时钟,要把MOV
R7,#10
修改成:MOV
R7,#5
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
假定晶振是12M的
CPU
AT89X51
MOV
R0,#10
这条是1us
(一个机器周期)执行1次
1us
DJNZ
R0,$
这条是两us(两个机器周期)执行10次*2=20us
一共
1us+20us=21us
也就是
总的时间=1us+2*r0(us)
CPU
AT89X51
MOV
R0,#10
这条是1us
(一个机器周期)执行1次
1us
DJNZ
R0,$
这条是两us(两个机器周期)执行10次*2=20us
一共
1us+20us=21us
也就是
总的时间=1us+2*r0(us)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
单片机汇编实现延迟的程序代码:
DELAY:
MOV
R7,#250
;
D1:
MOV
R6,#250
;
D2:
DJNZ
R6,D2
;
DJNZ
R7,D1
;
RET
冒号前面的“DELAY”、“D1”、“D2”为语句行的名字,是为了程序的条件语句跳转用的,分号后面为注释,计算机执行时将过滤掉这些信息,最大限度减少代码长度,提高效率。
DELAY:
MOV
R7,#250
;
D1:
MOV
R6,#250
;
D2:
DJNZ
R6,D2
;
DJNZ
R7,D1
;
RET
冒号前面的“DELAY”、“D1”、“D2”为语句行的名字,是为了程序的条件语句跳转用的,分号后面为注释,计算机执行时将过滤掉这些信息,最大限度减少代码长度,提高效率。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询