C51知识点
异步:通信双方各自约定通信速率(波特率、比特率)
同步:通信双方靠一根时钟线来约定速率(时钟上升沿/下降沿到来则采样一次)
一个函数不能既在主函数中又在中断函数中调用,会导致函数的重入
位运算符(P3^6)表示取P3口的第六位
sbit(映射关键字)例:sbit a=P3^6;//将P3口的第六位映射到变量a上,方便对P3口的第六位进行操作
code(ROM关键字)例如:int code i;//将i的值存放在ROM中
模块化编程.h和.c文件名不一定要相同。如果文件名不一致,只要在 .c 文件中正确包含对应的头文件,编译器仍然可以正常编译
DS1302时钟芯片只需给其赋个初始值,它就可根据晶振频率从该时间开始计时,自动转化成时分秒
模块化编程中全局变量、数组需要声明。且以extern开头;
有源蜂鸣器:内部有振荡源,只需要提供直流电压即可发出声音
无源蜂鸣器:内部无振荡源,需要控制器提供震荡才可发出声音
寄生供电:不需要额外的电源线,仅通过数据线即可实现供电和通信
基于C语言标准,不能直接使用二进制,可用16进制等代替;
中断处理函数一般放在应用它的地方
默认值:如果全局变量或静态变量没有显式初始化,它们会被自动初始化为 0
编程时要使用哪个库,就需要将哪个库放在工程文件夹中?
在编程中,是否需要将库文件放在工程文件夹中,取决于你使用的开发环境和编译器的配置方式。以下是一些常见的情况和建议:
1. 静态库(Static Libraries)
静态库通常是.lib
(Windows)或.a
(Linux/Unix)文件。它们在编译时会被链接到你的程序中。
- 如果库是系统自带的(例如C标准库或系统级库),通常不需要将库文件放在工程文件夹中。编译器会自动在系统路径中查找这些库。
- 如果库是第三方库(例如你下载的某个开源库),通常有以下两种处理方式:
- 放在工程文件夹中:将库文件(
.lib
或.a
)放在工程文件夹的某个子目录中(例如lib
目录),并在编译器的配置中指定该路径。这种方式的优点是工程文件夹自包含,方便在不同机器上编译。 - 放在系统路径中:将库文件放在编译器的默认库路径中(例如
/usr/lib
或C:\Program Files\Microsoft Visual Studio\VC\lib
)。这种方式的优点是不需要在工程文件夹中额外存放库文件,但需要确保所有机器上都有相同的库路径。
- 放在工程文件夹中:将库文件(
2. 动态库(Dynamic Libraries)
动态库通常是.dll
(Windows)或.so
(Linux/Unix)文件。它们在运行时被加载。
- 开发时:在开发阶段,动态库文件(
.dll
或.so
)通常需要放在工程文件夹中,或者放在系统路径中。编译器在链接时需要知道动态库的位置。 - 运行时:运行程序时,动态库需要放在程序可以访问的路径中。对于Windows,通常是程序的运行目录或系统的
PATH
环境变量中;对于Linux/Unix,通常是/usr/lib
、/usr/local/lib
或程序的运行目录。
3. 头文件(Header Files)
头文件(.h
或.hpp
)是库的接口定义文件,编译器在编译时需要这些文件来解析代码中的函数和变量声明。
- 放在工程文件夹中:将头文件放在工程文件夹的某个子目录中(例如
include
目录),并在编译器的配置中指定该路径。这种方式的优点是工程文件夹自包含,方便在不同机器上编译。 - 放在系统路径中:将头文件放在编译器的默认头文件路径中(例如
/usr/include
或C:\Program Files\Microsoft Visual Studio\VC\include
)。这种方式的优点是不需要在工程文件夹中额外存放头文件,但需要确保所有机器上都有相同的头文件路径。
4. 源代码库
如果库是以源代码形式提供的(例如开源库的.c
和.h
文件),通常需要将这些文件放在工程文件夹中,并将其添加到项目中。
建议
- 小型项目:如果项目较小,建议将所有需要的库文件(包括头文件和库文件)放在工程文件夹中,这样可以确保项目的自包含性,方便在不同机器上编译和运行。
- 大型项目:对于大型项目,通常会使用包管理工具(例如
vcpkg
、Conan
、apt
等)来管理依赖库,这些工具会自动将库文件安装到系统路径中,项目只需引用这些路径即可。
总之,是否需要将库文件放在工程文件夹中,取决于你的项目需求和开发环境的配置。