晶振的使用-延迟函数
sidebar_position: 4
晶振的使用-延迟函数
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:表示延时的毫秒数。
代码解析
unsigned char i, j;
定义两个无符号 8 位变量,用于计数。while(xms)
外层循环,控制延时的毫秒数,递减xms,直到其为 0。- 内部循环
i初始化为 2,j初始化为 199。- 通过两层循环消耗时间,实现延时。
while (--j)和while (--i):每次减 1,循环一定次数,消耗 CPU 指令周期。
- 适配频率
11.0592MHz 的频率下,这样的循环组合可以实现大约 1 毫秒的延时。