【Keil C51单片机延时程序】

基本说明

单片机中的delay()的单位时间不是系统提供的,而是用户自己编制的;
晶振为12MHz的单片机,机器周期等于晶振周期*分频=(1/12)*12=1ms;
晶振12MHz和16位的单片机一次最大的延时时间为2^16=65536us=65ms;

标准的C语言没有空语句。但在单片机的C语言编程中,经常需要用几个空指令产生延迟的效果,所以总会看起来复杂无序。验证程序延时是否正确可将程序编译成汇编程序在进行计算,至于为什么,目前也没找到合适的资料。

常用的延时程序

nop()(um级)

#include<instrins.h>
_nop_();

下面4us延时声明(直接定义法无需编译执行,故无空指令参与延时):

#define Delay4us(){_nop_();_nop_();_nop_();_nop_();}

循环函数(延时一般大于10us)

500ms延时:

void delay500ms(void)
{
    unsigned char i,j,k;
    for(i=15;i>0;i--)
    for(j=202;j>0;j--)
    for(k=81;k>0;k--);
}

200ms延时:

void del
  • 4
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值