51单片机-PASCAL语言实例11:关于延时的问题

本文探讨了在51单片机使用PASCAL语言进行延时编程时遇到的问题。通过分析12MHz晶振下不同指令的机器周期,解释了如何精确计算延时。对于小于20us的延时,建议直接使用NOP指令;而大于20us的延时,推荐采用循环或延迟函数,并提供了相应的代码示例和调用方法。
摘要由CSDN通过智能技术生成

在单片机开发中,延时是时常出现,初学时总不知所以,现总结一下:
首先要了解以下概念(假设开发板上晶振频率为 12MHZ,CPU STC89C52 ):

  1. 1个时钟周期=振荡周期=(1/12MHZ) s
  2. 1个机器周期=12x时钟周期=1 us ( 注:有些CPU不是12倍的)
  3. 指令周期
    NOP : 1 个机器周期 (空指令)
    DJNZ : 2 个机器周期 (循环等)
    LCAL : 4 个机器周期(过程调用)
    MOV : 1 个机器周期(赋值语句)

所以在Turbo51 中,若要延时 1 us ,可以用如下代码:

Asm
	NOP;
end;

下面的代码究竟延时了几个 us

Program Test11;

procedure Delayus(atime:word);
begin
     repeat
        ASM NOP END;
        dec(atime);
     until atime=0;
end
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值