下载此文档

delay延时教程 (2).doc


文档分类:IT计算机 | 页数:约4页 举报非法文档有奖
1/4
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/4 下载此文档
文档列表 文档介绍
delay延时教程(用的是12MHz晶振的 MCS-51)
一、
NOP指令为单周期指令
DJNZ指令为双周期指令
mov指令为单周期指令
子程序调用(即LCALL指令)为双周期指令
ret为双周期指令
stOP_( );
}
延迟时间=6*1us+2 us+2 us=10us
b:delaytime为us级
我们用汇编语言写单片机延时10ms的程序,可以编写下面的程序来实现:
unsigned char i,j
for(i=255;i>0;i--)
for(j=255;j>0;j--);

unsigned char i,j
i=255;
do
{
j=255;
do{j--}
while(j);
i--;
}
while(i);

unsigned char i,j
i=255;
while(i)
{
j=255;
while(j)
{j--};
i--;
}
这三种方法都是用DJNZ指令嵌套实现循环的,由C51编
译器用下面的指令组合来完成的
MOV R7,#0FFH
LOOP2: MOV R6,#0FFH (1周期)
LOOP1: DJNZ R6,LOOP1
DJNZ R7,LOOP2 (2周期)
这些指令的组合在汇编语言中采用DJNZ指令来做延时用,
因此它的时间精确计算也是很简单,假上面变量i的初
值为m,变量j的初值为n,则总延时时间为:
m×(n×2+2+1),
注:DJNZ A,B是一条转移指令,先将A减1,若减后,
A=0;不转移到B处;
A!=0;跳到B处;
例2:void delay500ms(void)
{
unsigned charR7,R6,R5;
for(R7=15;R7>0;R7--)
for(R6=202;R6>0;R6--)
for(R5=81;R5>0;R5--);
}
产生的汇编:
C:0x0800 7F0F MOV R7,#0x0F
C:0x0802 7ECA MOV R6,#0xCA
C:0x0804 7D51 MOV R5,#0x51
C:0x0806

delay延时教程 (2) 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数4
  • 收藏数0 收藏
  • 顶次数0
  • 上传人taoapp
  • 文件大小25 KB
  • 时间2022-03-13