波特律动
课程中心/51单片机教程/【07】封装延时库

【07】封装延时库

本课资源下载
3 个资源
P07封装延时库

本节课的标准源代码工程/可供参考

V1.0压缩包21 KB
下载
XL-1608SURC-06

LED红色(0603)

PDF 文档1.5 MB
预览下载
流水灯原理图

交互式原理图❇️

原理图

课程笔记


本节目标概括

创建工程 > 创建delay.c文件 > 封装延时函数 > 在主函数里调用

1.创建工程

创建新工程 "P07封装延时库",并添加 main.c文件。

2.封装delay.c源代码文件和delay.h头文件


像创建main.c一样,创建一个名为delay.c的C语言文件



类似的步骤,创建delay.h头文件



3.封装延时函数


首先在AICube-ISP的软件延时计算器中生成一个1毫秒的延时函数



粘贴到delay.c中,并且将其改名为Delay_ms,原先是void的参数也改为unsigned int t,原先的循环过程则用一个循环t的while循环包裹起来。

这样原先只循环1毫秒的过程就变成循环t毫秒了。


delay.c
C语言
高亮 3,7
1#include <STC89C5xRC.H>
2
3void Delay_ms(unsigned int t) //@11.0592MHz
4{
5 unsigned char data i, j;
6
7 while(t--) {
8 _nop_();
9 i = 2;
10 j = 199;
11 do
12 {
13 while (--j);
14 } while (--i);
15 }
16}

注意还要插入#include <STC89C5xRC.H>,否则会有报错。


随后,需要在delay.h头文件中进行函数声明:


delay.h
C语言
高亮 4
1#ifndef __DELAY_H__
2#define __DELAY_H__
3
4void Delay_ms(unsigned int t);
5
6#endif

其中,delay.h代码中的1,2和6行,是常用的防止头文件被重复包含的策略。


3.在主函数里调用

随后,我们就可以在main.c中引入delay.h头文件,并且使用Delay_ms函数啦。

C语言
1#include <STC89C5xRC.H>
2#include <delay.h>
3int main(){
4 unsigned char i;
5 while (1){
6 for(i = 0; i < 8; i++) {
7 P0 = ~(0x01 << i); // 依次将 0 移动到对应引脚(取反实现低电平点亮)
8 Delay_ms(100); // 逐个灯亮起的时间间隔
9 }
10 }
11}