当前位置: 首页 > news >正文

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/libC:\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/includeC:\Program Files\Microsoft Visual Studio\VC\include)。这种方式的优点是不需要在工程文件夹中额外存放头文件,但需要确保所有机器上都有相同的头文件路径。

4. 源代码库

如果库是以源代码形式提供的(例如开源库的.c.h文件),通常需要将这些文件放在工程文件夹中,并将其添加到项目中。

建议

  • 小型项目:如果项目较小,建议将所有需要的库文件(包括头文件和库文件)放在工程文件夹中,这样可以确保项目的自包含性,方便在不同机器上编译和运行。
  • 大型项目:对于大型项目,通常会使用包管理工具(例如vcpkgConanapt等)来管理依赖库,这些工具会自动将库文件安装到系统路径中,项目只需引用这些路径即可。

总之,是否需要将库文件放在工程文件夹中,取决于你的项目需求和开发环境的配置。

相关文章:

  • 代码随想录算法训练营第十五天|右旋字符串
  • Linux的文件上传下载的lrzsz库的安装与使用
  • 《当人工智能遇上广域网:跨越地理距离的通信变革》
  • 08_双向循环神经网络
  • React 中useMemo和useCallback Hook 的作用,在什么场景下使用它们?
  • 图书管理系统系统-Java、SpringBoot、Vue和MySQL开发的图书馆管理系统
  • 文心快码 使用体验与介绍
  • 分布式算法:Paxos Raft 两种共识算法
  • 结合代码理解Spring AOP的概念(切面、切入点、连接点等)
  • Rocky Linux 软件安装:Last metadata expiration check:
  • leetcode_双指针 15.三数之和
  • 【前端扫盲】liquid模板语言
  • css重点知识汇总(二)
  • Jboss
  • [c语言日寄]枚举类型
  • Spring Boot框架中常用注解
  • 自然资源数据要素支撑场景建设
  • QEMU源码全解析 —— 块设备虚拟化(7)
  • 探秘鸿蒙 HarmonyOS NEXT:鸿蒙存储核心技术全解析
  • SLAM十四讲【四】相机与图像
  • 马上评丨又见酒店坐地起价,“老毛病”不能惯着
  • 三位成功女性,如何应对失败
  • 央行副行长谈美债和美元波动:单一市场、单一资产的变动,对外储影响总体有限
  • 从“网点适老化”到“社区嵌入式”,“金融为老上海模式”如何探索?
  • 夜读丨庭院春韵
  • 伊朗南部港口火势蔓延,部分集装箱再次发生爆炸