打印

关于51单片机延时一毫秒的程序设计问题。

[复制链接]
5374|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
neillan|  楼主 | 2009-11-2 09:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
刚从模拟电路的工作转换到数字电路,我这个菜鸟对单片机一点也不了解那位大侠能帮我解释一下我对这段代码的理解误区//后面为我的疑问。
为了延时1ms所写的延时子程序 (晶振的频率为12M)C语言版,
void delayms(uint ms)
{

uchar i;


while(ms--)


{


for(i=0;i<120;i++);  // 机器周期为1us 为什么循环120次,就能延长时间1ms呢?


}

}

汇编编版程序
//MOV R5,#50 ;延时子程序
D1: MOV R6,#40
D2:MOV R7,#248
DJNZ R7,$
DJNZ R6,D2
DJNZ R5,D1
RET
END

相关帖子

沙发
lyjian| | 2009-11-2 12:25 | 只看该作者
for(i=0;i<120;i++);  
这可不是光执行一条指令,怎么可能是1us

使用特权

评论回复
板凳
neillan|  楼主 | 2009-11-2 13:59 | 只看该作者
呵呵,谢谢楼上。

使用特权

评论回复
地板
ppsen| | 2009-11-2 22:23 | 只看该作者
最好用定时器

使用特权

评论回复
5
xcs_1211| | 2009-11-3 10:05 | 只看该作者
YS10:
MOV TMOD,#01H ;
MOV TH0,#0FCH ;1m延时初值置入
MOV TL0,#18H
SETB TR0 ;
JNB TF0,$ ;
CLR TF0 ;
CLR TR0 ;
RET ;

使用特权

评论回复
6
zydlyq| | 2009-11-3 21:00 | 只看该作者
还得执行while(ms--)这条语句,用定时器吧,准确。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

14

帖子

0

粉丝