c51简单delay函数,不同类型同值字符的延时时间不同

news/2025/3/15 8:52:03/

c51简单delay函数,不同类型同值字符的延时时间

一、 简单delay函数(晶振频率 11.0592 MHZ)

#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned longvoid Delay(uchar i)
{while(i--);
}

在学习c51单片的过程中,应用简单的delay函数,我发现给i定义成不同类型字符但赋相同值时,延时的时间相差较大

二、调试计算时长

1· uchar
void Delay(uchar i)
{while(i--);
}

1

计算可得 uchar i=200 实际延时时间是 0.00131402 s

2· uint
void Delay(uint i)
{while(i--);
}

1
2
计算可得 uint i=200 实际延时时间是 0.00197048 s

3· ulong
void Delay(ulong i)
{while(i--);
}

1
2
计算可得 uint i=200 实际延时时间是 0.00874132 s

三、比较总结

  1. 同值情况下,long类型延时最长,大概是int类型的5倍,char类型的6倍。
  2. 在应用简单的delay函数时,一定要根据需要delay的时长选择合适的字符类型。
  3. i的值跟延时的时间呈线性关系[点此跳转证明],因此可以轻易计算出不同类型下,i与延时时长的关系。

http://www.ppmy.cn/news/810125.html

相关文章

STM32F103滴答计时器之delay函数

如果使用FreeRTOS void delay_us(u32 nus) { u32 ticks;u32 told,tnow,tcnt0;u32 reloadSysTick->LOAD; ticksnus*fac_us; tcnt0;delay_osschedlock(); toldSysTick->VAL; while(1){tnowSysTick->VAL; if(tnow!told){ if…

STM32HAL工程中HAL_delay函数卡死问题

起因: 我将ld3320的标准库工程移植到hal库工程中,程序运行时会卡死在HAL_delay函数,通过查阅了多方资料,深挖工程的底层配置,最终确定了卡死的原因。 HAL_DELAY函数代码如下,从注释中我们可以提取一些关键…

STM32CubeMX实战教程(三)——外部中断(中断及HAL_Delay函数避坑)

外部中断 前言材料NVIC新建及配置工程外部中断和事件中断NVIC配置 进入代码回调函数 HAL_Delay()分析下载验证结语 前言 学单片机的,相信对中断的概念都已经了如指掌了,中断具体是什么我在这里也就不再详细说明,不懂的上网找找也一大堆。那么…

通过定时器的Timer方式替代delay/Hal_delay函数进行定时

文章目录 前言一、设置一个5秒的定时器,每隔5秒从串口发送“hello windows!”1、创建工程项目2、项目配置3、代码编写1、重定向printf函数2、定时器代码 4、效果 二、设置一个2秒的定时器,让LED等周期性地闪烁1.项目配置2、代码编写3、效果 三…

蓝桥杯学习笔记三:Delay函数毫秒变微秒

平时的HAL_Delay()都是毫秒单位的,但是进去这个函数看看的话,也看不出来是咋回事,我也不理解。但是就说在网上知道了一个方法:用SysTick_Config();这个函数就是来控制Delay函数的单位1代表计数器计数多少次。比如SysTick_Config(8…

Freertos中两个delay函数

vTaskDelay:至少等待指定个数的 Tick Interrupt 才能变为就绪状态 vTaskDelayUntil:等待到指定的绝对时刻,才能变为就绪态。 main代码: int main( void ) {prvSetupHardware();/* Task1的优先级更高, Task1先执行 */xTaskCreate…

linux中的sleep函数和delay函数

对于做过单片机程序的朋友来说,delay是很常见的函数,通常就是while或者for循环,进行空指令的执行,由于单片机的晶振固定,一个机器周期的时间是固定的,执行多少个空指令, 就可以完成多少个机器周…

【51单片机C语言】2-1模块化Delay函数

1.新建一个Delay.c文件和Delay.h文件 2.Delay.c中,Delay函数代码如下:(11.0592MHz,可以由stc软件自带的计算器计算出来) //Delay函数模块化 void Delay(unsigned int xms) //Delay Function 11.0592MHz {unsigned c…