这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 一个关于延时的问题

共4条 1/1 1 跳转至

一个关于延时的问题

高工
2013-09-21 22:50:56     打赏

今天利用仿真搞个LED闪烁:

LED灯亮;

DelayMs(500);

LED灯灭;

DelayMs(500);

上面提到的延时函数如下:

第一种:

void DelayMs(unsigned int xms)
{
    unsigned int  y;
    for(; xms ; xms--)
          for(y = 120; y ; y--);
}

第二种:

void DelayMs(unsigned int xms)
{
    unsigned char  y;
    for(; xms ; xms--)
          for(y = 120; y ; y--);
}

 

 

结果是:

利用这两个延时的时候效果是不同的。用第一种时闪烁的慢一些,第二种闪烁比较快

有谁能帮我解释一下!!!

 

 




关键词: 延时     问题    

高工
2013-09-21 23:10:20     打赏
2楼

是proteus的51单片机仿真,刚把两种代码生成的汇编代码给看了看,应该是这里的区别:

第一种的汇编:
_Delay_Ms:
USING 0

 C0001:
MOV   A,R7
ORL   A,R6
JZ   C0007

MOV   R5,#078H
MOV   R4,#00H
C0004:
MOV   A,R5
DEC   R5
JNZ   C0011
DEC   R4
C0011:
MOV   A,R5
ORL   A,R4
JNZ   C0004
C0003:
MOV   A,R7
DEC   R7
JNZ   C0001
DEC   R6
C0012:
SJMP C0001
C0007:
RET

 

第二种的汇编:
_Delay_Ms:
USING 0

 C0001:
MOV   A,R7
ORL   A,R6
JZ   C0007

MOV   R5,#078H
 C0004:
DJNZ R5, C0004
 C0003:
MOV   A,R7
DEC   R7
JNZ   C0001
DEC   R6
 C0011:
SJMP C0001

 C0007:
RET

 

 


高工
2013-09-22 13:16:18     打赏
3楼
恩,,明白了,多谢指导

高工
2013-09-22 20:01:50     打赏
4楼

玩了一下51的仿真,发现8位的单片机处理char型和int型时间相差比较大


共4条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]