C51软件精确延时(us级)

博客给出了用于C51实现精确微秒级延时的C语言代码,聚焦于信息技术领域中嵌入式开发的延时功能实现,为相关开发提供代码参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C语言代码如下:

/*----------------------------------------------------------------------
Function: 软件精确延时
Descripton: 一种是利用C51的赋值、比较、自减三个单周期指令实现的软件延时;
另一种是利用C51库函数_nop_()软件延时一个机器周期。
系统晶振频率为: 11.0592MHz
Author: Zhang Kaizhou
Date: 2019-6-19 11:51:55
-----------------------------------------------------------------------*/
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int

void main(){
	uint i; // 可通过改变i的数据类型来扩大延时的长度范围
	
	i = 100; while(i) i--;
	/*
		延时长度 = 10.85 + (i - 1) * 8.68;
		则i = ((延时长度 - 10.85) / 8.68) + 1;
		例:延时60us, 则i = (60 - 10.85) / 8.68 + 1 = 7;
		(i的值为向上取整时,延时时长会略大于目标时长[2个机器周期];
		(i的值为向下取整时,延时时长会略小于目标时长[2个机器周期])
	*/
	
	_nop_(); // 延时一个机器周期1.08us
	
	while(1);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值