Skip to main content

晶振的使用-延迟函数


晶振的使用-延迟函数

SUN的贴心提示

这是一个核心函数,很重要,请使用生成器生成。不然一不小心你整个项目时间都不准确了。。。

实现代码(其实直接塞进去就 ok)

代码库
Delay.c
void Delay(unsigned int xms)    //@11.0592MHz
{
unsigned char i, j;
while (xms)
{
i = 2;
j = 199;
do
{
while (--j);
} while (--i);
xms--;
}
}
Delay.h
#ifndef __DELAY_H__
#define __DELAY_H__

void Delay(unsigned int xms);

#endif

Delay.c

功能

  • 实现了一个基于 11.0592MHz 的 51 单片机延时函数 Delay
  • 参数 xms:表示延时的毫秒数。

代码解析

  1. unsigned char i, j;
    定义两个无符号 8 位变量,用于计数。
  2. while(xms)
    外层循环,控制延时的毫秒数,递减 xms,直到其为 0。
  3. 内部循环
    • i 初始化为 2,j 初始化为 199。
    • 通过两层循环消耗时间,实现延时。
    • while (--j)while (--i):每次减 1,循环一定次数,消耗 CPU 指令周期。
  4. 适配频率
    11.0592MHz 的频率下,这样的循环组合可以实现大约 1 毫秒的延时。